「NVIDIA/ヒントとテクニック」の版間の差分
(ページの作成:「Category:グラフィック Category:X サーバー en:NVIDIA/Tips and tricks ru:NVIDIA/Tips and tricks == ターミナルの解像度を修正する ==...」) |
(同期) |
||
15行目: | 15行目: | ||
モニターが検出されないと X サーバーは自動的に CRT-0 にフォールバックします。これは DVI で接続した TV をメインディスプレイとして使っている際、TV の電源がオフになっていたり切断されているのに X を起動したときに問題になります。 |
モニターが検出されないと X サーバーは自動的に CRT-0 にフォールバックします。これは DVI で接続した TV をメインディスプレイとして使っている際、TV の電源がオフになっていたり切断されているのに X を起動したときに問題になります。 |
||
+ | NVIDIA に強制的に DFP を使わせるには、EDID のコピーをファイルシステムのどこかに保存して TV/DFP の EDID のかわりに X が保存したファイルを読み込むようにしてください。 |
||
− | To force NVIDIA to use DFP, store a copy of the EDID somewhere in the filesystem so that X can parse the file instead of reading EDID from the TV/DFP. |
||
+ | EDID を取得するには、nvidia-settings を起動します。ツリー形式で情報が表示されますが、今は設定は無視して GPU を選択し ("GPU-0" などという名前が付いているエントリを選択してください)、{{ic|DFP}} セクションをクリックして (例: {{ic|DFP-0}})、{{ic|Acquire Edid}} ボタンをクリックしてファイルをどこかに保存してください (例: {{ic|/etc/X11/dfp0.edid}})。 |
||
− | To acquire the EDID, start nvidia-settings. It will show some information in tree format, ignore the rest of the settings for now and select the GPU (the corresponding entry should be titled "GPU-0" or similar), click the {{ic|DFP}} section (again, {{ic|DFP-0}} or similar), click on the {{ic|Acquire Edid}} Button and store it somewhere, for example, {{ic|/etc/X11/dfp0.edid}}. |
||
+ | フロントエンドにマウスやキーボードが接続されていない場合、コマンドラインを使って EDID を取得することもできます。EDID ブロックも出力するように引数を指定して X サーバーを起動します: |
||
− | If in the front-end mouse and keyboard are not attached, the EDID can be acquired using only the command line. Run an X server with enough verbosity to print out the EDID block: |
||
$ startx -- -logverbose 6 |
$ startx -- -logverbose 6 |
||
+ | X サーバーの初期化が完了したら、サーバーを閉じて {{ic|/var/log/Xorg.0.log}} にログファイルがあるか確認してください。nvidia-xconfig を使って EDID ブロックを抽出できます: |
||
− | After the X Server has finished initializing, close it and your log file will probably be in {{ic|/var/log/Xorg.0.log}}. Extract the EDID block using nvidia-xconfig: |
||
$ nvidia-xconfig --extract-edids-from-file=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/dfp0.bin |
$ nvidia-xconfig --extract-edids-from-file=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/dfp0.bin |
||
27行目: | 27行目: | ||
Option "ConnectedMonitor" "DFP" |
Option "ConnectedMonitor" "DFP" |
||
Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid" |
Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid" |
||
− | + | {{ic|ConnectedMonitor}} オプションはドライバーに強制的に DFP を認識させます。{{ic|CustomEDID}} にはデバイスの EDID データを指定してください。TV/DFP が接続されているかのように X が起動するようになります。 |
|
+ | ブート時に自動的にディスプレイマネージャを起動して適切な X ディスプレイが設定されてから TV の電源を入れることができます。 |
||
− | This way, one can automatically start a display manager at boot time and still have a working and properly configured X screen by the time the TV gets powered on. |
||
− | + | 上記の変更でうまくいかない場合、{{ic|xorg.conf}} の中の {{ic|Device}} セクションで {{ic|Option "ConnectedMonitor" "DFP"}} を削除して以下の行を追加してみてください: |
|
Option "ModeValidation" "NoDFPNativeResolutionCheck" |
Option "ModeValidation" "NoDFPNativeResolutionCheck" |
||
Option "ConnectedMonitor" "DFP-0" |
Option "ConnectedMonitor" "DFP-0" |
||
− | + | {{ic|NoDFPNativeResolutionCheck}} を設定することで NVIDIA はネイティブ解像度に適合しないモードも無効化しなくなります。 |
|
== 電源を確認 == |
== 電源を確認 == |
||
71行目: | 71行目: | ||
== GPU の温度をシェルに表示する == |
== GPU の温度をシェルに表示する == |
||
+ | GPU の温度を確認する方法は3つあります。''nvidia-settings'' は X を使用する必要があります。X を使っていない場合は ''nvidia-smi'' や ''nvclock'' による方法を使って下さい。また、''nvclock'' は GeForce 200 シリーズのカードや Zotac IONITX の 8800GS などの内蔵 GPU など新しい NVIDIA カードでは機能しません。 |
||
− | === nvidia-settings === |
||
+ | === nvidia-settings === |
||
− | {{Note|この方法では X を使用する必要があります。X を使っていない場合は下の方法を使って下さい。また、GeForce 200 シリーズのカードや Zotac IONITX の 8800GS などの内蔵 GPU など新しい NVIDIA カードでは機能しません。}} |
||
GPU の温度をシェルに表示するには、以下のように {{ic|nvidia-settings}} を使って下さい: |
GPU の温度をシェルに表示するには、以下のように {{ic|nvidia-settings}} を使って下さい: |
||
91行目: | 91行目: | ||
=== nvidia-smi === |
=== nvidia-smi === |
||
− | X を全く使わず GPU から直接温度を読み込むことができる nvidia-smi を使います。サーバー |
+ | X を全く使わず GPU から直接温度を読み込むことができる nvidia-smi を使います。サーバーマシンの場合や [[Wayland]] を使っている場合はこちらの方法を推奨します。GPU の温度をシェルに表示するには、以下のように nvidia-smi を使って下さい: |
$ nvidia-smi |
$ nvidia-smi |
||
140行目: | 140行目: | ||
[[Arch User Repository|AUR]] から利用できる {{AUR|nvclock}} を使います。 |
[[Arch User Repository|AUR]] から利用できる {{AUR|nvclock}} を使います。 |
||
+ | |||
{{Note|{{ic|nvclock}} は Geforce 200 シリーズなどの新しい NVIDIA カードの温度センサーにはアクセスできません。}} |
{{Note|{{ic|nvclock}} は Geforce 200 シリーズなどの新しい NVIDIA カードの温度センサーにはアクセスできません。}} |
||
196行目: | 197行目: | ||
上記のオプションで輝度のコントロールが機能しない場合、{{AUR|nvidia-bl}} または {{AUR|nvidiabl}} をインストールしてください。 |
上記のオプションで輝度のコントロールが機能しない場合、{{AUR|nvidia-bl}} または {{AUR|nvidiabl}} をインストールしてください。 |
||
+ | |||
+ | {{Note|{{AUR|nvidia-bl}} または {{AUR|nvidiabl}} のどちらかをインストールすると {{ic|/sys/class/backlight/nvidia_backlight/}} インターフェイスでバックライトの明るさを制御できるようになりますが、依然としてシステムが {{ic|/sys/class/backlight/acpi_video0/}} でバックライトの制御をしようとするかもしれません。そのような場合、''inotifywait'' などで {{ic|acpi_video0/brightness}} を監視して、変化があったら {{ic|nvidia_backlight/brightness}} に値を書き込むようにしてください。[[バックライト#sysfs を変更しても明るさが変更されない]]を参照。}} |
||
=== SLI を有効にする === |
=== SLI を有効にする === |
2017年1月19日 (木) 22:41時点における版
目次
ターミナルの解像度を修正する
nouveau からドライバーを変えた場合、起動時のターミナルが低解像度で表示されるようになることがあります。GRUB を使用している場合、GRUB/Tips and tricks#フレームバッファの解像度を設定するを見てください。
TV 出力を使う
TV 出力については こちら に良い記事があります。
X で TV (DFP) を唯一のディスプレイとして使う
モニターが検出されないと X サーバーは自動的に CRT-0 にフォールバックします。これは DVI で接続した TV をメインディスプレイとして使っている際、TV の電源がオフになっていたり切断されているのに X を起動したときに問題になります。
NVIDIA に強制的に DFP を使わせるには、EDID のコピーをファイルシステムのどこかに保存して TV/DFP の EDID のかわりに X が保存したファイルを読み込むようにしてください。
EDID を取得するには、nvidia-settings を起動します。ツリー形式で情報が表示されますが、今は設定は無視して GPU を選択し ("GPU-0" などという名前が付いているエントリを選択してください)、DFP
セクションをクリックして (例: DFP-0
)、Acquire Edid
ボタンをクリックしてファイルをどこかに保存してください (例: /etc/X11/dfp0.edid
)。
フロントエンドにマウスやキーボードが接続されていない場合、コマンドラインを使って EDID を取得することもできます。EDID ブロックも出力するように引数を指定して X サーバーを起動します:
$ startx -- -logverbose 6
X サーバーの初期化が完了したら、サーバーを閉じて /var/log/Xorg.0.log
にログファイルがあるか確認してください。nvidia-xconfig を使って EDID ブロックを抽出できます:
$ nvidia-xconfig --extract-edids-from-file=/var/log/Xorg.0.log --extract-edids-output-file=/etc/X11/dfp0.bin
xorg.conf
を編集して Device
セクションに以下を追加:
Option "ConnectedMonitor" "DFP" Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid"
ConnectedMonitor
オプションはドライバーに強制的に DFP を認識させます。CustomEDID
にはデバイスの EDID データを指定してください。TV/DFP が接続されているかのように X が起動するようになります。
ブート時に自動的にディスプレイマネージャを起動して適切な X ディスプレイが設定されてから TV の電源を入れることができます。
上記の変更でうまくいかない場合、xorg.conf
の中の Device
セクションで Option "ConnectedMonitor" "DFP"
を削除して以下の行を追加してみてください:
Option "ModeValidation" "NoDFPNativeResolutionCheck" Option "ConnectedMonitor" "DFP-0"
NoDFPNativeResolutionCheck
を設定することで NVIDIA はネイティブ解像度に適合しないモードも無効化しなくなります。
電源を確認
NVIDIA の X.org ドライバーを使って GPU の現在の電源を検出することもできます。現在の電源を表示するには、読み取り専用パラメータの 'GPUPowerSource' をチェックしてください (0 - AC, 1 - バッテリー):
$ nvidia-settings -q GPUPowerSource -t
1
ACPI イベントを Listen する
NVIDIA ドライバーは自動的に acpid デーモンに接続して、バッテリー電源やドッキング、ホットキーなどの ACPI イベントを listen します。接続が失敗した場合、X.org は以下のような警告を出力します:
~/.local/share/xorg/Xorg.0.log
NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon NVIDIA(0): may not be running or the "AcpidSocketPath" X NVIDIA(0): configuration option may not be set correctly. When the NVIDIA(0): ACPI event daemon is available, the NVIDIA X driver will NVIDIA(0): try to use it to receive ACPI event notifications. For NVIDIA(0): details, please see the "ConnectToAcpid" and NVIDIA(0): "AcpidSocketPath" X configuration options in Appendix B: X NVIDIA(0): Config Options in the README.
上記の警告は完全に無害ですが、/etc/X11/xorg.conf.d/20-nvidia.conf
で ConnectToAcpid
オプションを無効にすることでメッセージを消すことができます:
Section "Device" ... Driver "nvidia" Option "ConnectToAcpid" "0" ... EndSection
ノートパソコンを使っている場合、acpid デーモンをインストールして有効化することを推奨します。
GPU の温度をシェルに表示する
GPU の温度を確認する方法は3つあります。nvidia-settings は X を使用する必要があります。X を使っていない場合は nvidia-smi や nvclock による方法を使って下さい。また、nvclock は GeForce 200 シリーズのカードや Zotac IONITX の 8800GS などの内蔵 GPU など新しい NVIDIA カードでは機能しません。
nvidia-settings
GPU の温度をシェルに表示するには、以下のように nvidia-settings
を使って下さい:
$ nvidia-settings -q gpucoretemp
このコマンドを使うと以下のように出力されます:
Attribute 'GPUCoreTemp' (hostname:0.0): 41. 'GPUCoreTemp' is an integer attribute. 'GPUCoreTemp' is a read-only attribute. 'GPUCoreTemp' can use the following target types: X Screen, GPU.
上記の場合、ボードの GPU 温度は 41 C になります。
rrdtool
や conky
などのユーティリティで使うために温度だけを表示したいときは:
$ nvidia-settings -q gpucoretemp -t
41
nvidia-smi
X を全く使わず GPU から直接温度を読み込むことができる nvidia-smi を使います。サーバーマシンの場合や Wayland を使っている場合はこちらの方法を推奨します。GPU の温度をシェルに表示するには、以下のように nvidia-smi を使って下さい:
$ nvidia-smi
このコマンドを使うと以下のように出力されます:
$ nvidia-smi
Fri Jan 6 18:53:54 2012 +------------------------------------------------------+ | NVIDIA-SMI 2.290.10 Driver Version: 290.10 | |-------------------------------+----------------------+----------------------+ | Nb. Name | Bus Id Disp. | Volatile ECC SB / DB | | Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. | |===============================+======================+======================| | 0. GeForce 8500 GT | 0000:01:00.0 N/A | N/A N/A | | 30% 62 C N/A N/A / N/A | 17% 42MB / 255MB | N/A Default | |-------------------------------+----------------------+----------------------| | Compute processes: GPU Memory | | GPU PID Process name Usage | |=============================================================================| | 0. ERROR: Not Supported | +-----------------------------------------------------------------------------+
温度だけ見るには:
$ nvidia-smi -q -d TEMPERATURE
====NVSMI LOG==== Timestamp : Sun Apr 12 08:49:10 2015 Driver Version : 346.59 Attached GPUs : 1 GPU 0000:01:00.0 Temperature GPU Current Temp : 52 C GPU Shutdown Temp : N/A GPU Slowdown Temp : N/A
rrdtool
や conky
などのユーティリティで使うために温度だけを取得したいときは:
$ nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits
52
nvclock
たまに nvclock と nvidia-settings/nv-control が報告する温度が食い違うことがあります。nvclock の作者 (thunderbird) による この投稿 によると、nvclock の値のほうが正確なようです。
ログイン時にファンの速度を設定する
nvidia-settings' のコンソールインターフェイスを使ってグラフィックカードのファンの速度を調整することができます。まずは Xorg 設定の Device
セクションで Coolbits オプションを 4
か 5
、または 12
(fermi 以上) に設定してファンコントロールを有効にしてください:
Option "Coolbits" "4"
Xorg が起動した時にファンを調整するには以下の行を xinitrc ファイルに記述します。n
は設定したいファンの速度のパーセンテージに置き換えて下さい。
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n"
GPU とファンの番号を増やすことで二番目の GPU を設定することもできます。
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n" \ -a "[gpu:1]/GPUFanControlState=1" -a [fan:1]/GPUCurrentFanSpeed=n" &
GDM や KDM などのログインマネージャを使用している場合、デスクトップエントリファイルを作成して設定をさせることもできます。~/.config/autostart/nvidia-fan-speed.desktop
を作成してその中に以下のテキストを入力してください。n
は速度のパーセンテージに置き換えて下さい。
[Desktop Entry] Type=Application Exec=nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=n" X-GNOME-Autostart-enabled=true Name=nvidia-fan-speed
手動設定
設定ファイルを編集することで (自動設定や GUI では有効にできない) 設定を変更することができます。変更を反映するには Xorg サーバーを再起動させる必要があります。
オプションの詳しい説明は NVIDIA Accelerated Linux Graphics Driver README and Installation Guide を見てください。
起動時のロゴを無効にする
Device
セクションの下に "NoLogo"
オプションを追加してください:
Option "NoLogo" "1"
モニターの検出を上書きする
Device
セクションの下に "ConnectedMonitor"
オプションを追加することで X サーバーの起動時のモニター検出を上書きすることができます。それによって起動時間を大幅に早くすることが可能です。利用可能なオプション: "CRT"
(アナログ接続), "DFP"
(デジタルモニター), "TV"
(テレビ)。
以下の設定をすることで NVIDIA ドライバーは起動時のチェックを迂回しモニターを DFP と認識します:
Option "ConnectedMonitor" "DFP"
輝度調整を有効にする
Device
セクションの下に追加してください:
Option "RegistryDwords" "EnableBrightnessControl=1"
上記のオプションで輝度のコントロールが機能しない場合、nvidia-blAUR または nvidiablAUR をインストールしてください。
SLI を有効にする
NVIDIA ドライバーの README の Appendix B より: このオプションはサポートされている環境で SLI レンダリングの設定をコントロールします。「サポートされている環境」とは SLI 対応のマザーボードを搭載し SLI 対応の GeForce GPU が2枚か3枚刺さっているコンピューターのことです。詳しくは NVIDIA の SLI Zone を見て下さい。
まず lspci
を使って一番目の GPU の PCI Bus ID を確認してください:
$ lspci | grep VGA
03:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2) 05:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2)
Device
セクションの下に BusID を追加してください (上記の例では3):
BusID "PCI:3:0:0"
使用したい SLI レンダリングモードの値を Screen
セクションの下に追加してください:
Option "SLI" "AA"
以下の表は利用できるレンダリングモードを示しています。
値 | 挙動 |
---|---|
0, no, off, false, Single | レンダリングの際には単一の GPU だけを使用。 |
1, yes, on, true, Auto | SLI を有効にしてドライバーに適切なレンダリングモードを自動で選択させる。 |
AFR | SLI を有効にして alternate フレームレンダリングモードを使用する。 |
SFR | SLI を有効にして split フレームレンダリングモードを使用する。 |
AA | SLI を有効にして SLI アンチエイリアスを使用する。これをフルシーンアンチエイリアスと一緒に使うことで見栄えが良くなります。 |
もしくは、nvidia-xconfig
ユーティリティを使って、コマンドによって xorg.conf
に変更を挿入することもできます:
# nvidia-xconfig --busid=PCI:3:0:0 --sli=AA
シェルから SLI モードが有効になっているか確認するには:
$ nvidia-settings -q all | grep SLIMode
Attribute 'SLIMode' (arch:0.0): AA 'SLIMode' is a string attribute. 'SLIMode' is a read-only attribute. 'SLIMode' can use the following target types: X Screen.
オーバークロックを有効にする
GPU やメモリのオーバークロックは Device
セクションの Coolbits オプションによって制御され、サポートされない機能が使えるようになります:
Option "Coolbits" "value"
Coolbits の値は2進法でビットを立てた合計になります。それぞれのビットの意味は:
1
(ビット 0) - (Fermi 以前の) 古いコアで nvidia-settings の Clock Frequencies ページからオーバークロックできるようになります。2
(ビット 1) - このビットが設定されると、ドライバーは GPU を使う際に様々な量のビデオメモリで SLI を初期化しようとします。4
(ビット 2) - GPU のファンの速度の手動設定が nvidia-settings の Thermal Monitor ページで可能になります。8
(ビット 3) - Fermi 以降の新しいコアで nvidia-settings の PowerMizer ページからオーバークロックできるようになります。バージョン 337.12 から使えるようになりました [2]。16
(ビット 4) - Fermi 以降の新しいコアで nvidia-settings の CLI オプションを使って電圧アップができるようになります。バージョン 346.16 から使えるようになりました [3]。
複数の機能を有効にするには、合計した Coolbits の値を追加します。例えば、オーバークロックと Fermi コアの電圧アップを有効にするには、Option "Coolbits" "24"
と設定します。
Coolbits のドキュメントは /usr/share/doc/nvidia/html/xconfigoptions.html
にあります。Coolbits に関するドライバーバージョン 355.11 のドキュメントはオンラインで こちら から見ることができます。
静的な 2D/3D クロックを設定する
以下の文字列を Device
セクションに設定すると PowerMizer がパフォーマンス最高レベルで有効になります (この行がないと VSync が動作しません):
Option "RegistryDwords" "PerfLevelSrc=0x2222"