Lenovo ThinkPad P1
Lenovo ThinkPad P1 は2018年に発売されたノートパソコンで、最大で Intel Core i7-8850H または Xeon E-2176M 6コアプロセッサ、64 GB DDR4 メモリ、NVIDIA Quadro P2000 グラフィックを搭載します。
インストール
BIOS v1.18以前では "Dicrete Graphics" で使わない
https://www.reddit.com/r/thinkpad/comments/a2g0k4/warning_do_not_change_from_hybrid_graphics_to/
P1 が使用不可になり Lenovo にマザーボードの交換を依頼する羽目になるかもしれません。BIOS v1.15 にてこの症状が確認されています。
よって、BIOS v1.18 以降を利用することになるでしょう。2018年12月24日にリリースされた v1.17 でこの問題は大半が修正されたものの、Hybrid Graphics オプションを変更するのに関連して時折文鎮化の問題が発生するため削除されました。
ファームウェアのアップデート
インストールする前に、Windows 10 を起動してプリインストールされている Lenovo Vantage ソフトウェアを使って必要なファームウェアアップデートをインストールすることを推奨します、特に こちら が重要です。
ハイブリッドグラフィックでインストール
ハイブリッドグラフィックが BIOS で有効になっている場合、現在のところライブ CD は正しく起動しません。詳しくは NVIDIA Optimus を見てください。選択肢はふたつあります:
- BIOS の設定を "Discrete only" に変更してハイブリッドグラフィックを無効化する。
- ライブ CD を起動する前に
e
を押してカーネルパラメータにmodprobe.blacklist=nouveau
を追加する。
二番目の方法を使う場合、/boot/loader/entries/arch.conf
に modprobe.blacklist=nouveau
と記述すると良いでしょう。
HiDPI ディスプレイ
ThinkPad P1 は構成によって HiDPI ディスプレイが搭載されています。インストール時にコンソールフォントが読めない場合は setfont latarcyrheb-sun32
を実行してください。
インストール後もフォントの設定を永続的に使用するには、以下の内容で /etc/vconsole.conf
を作成:
/etc/vconsole.conf
FONT=latarcyrheb-sun32
詳しくは HiDPI を参照。
グラフィック
ThinkPad P1 でグラフィックを設定する場合の問題がふたつ存在します: BIOS に "integrated graphics only" オプションが存在しないこと、そして外部ディスプレイ端末 (HDMI など) が NVIDIA のチップに接続されていることです。あなたがしたいことによって、以下の設定方法から選ぶ必要があります:
ディスクリートのみ
P1 は内蔵グラフィックと外部グラフィックが両方あるハイブリッドデバイスであり、外部出力およびラップトップのディスプレイを適切に動作させるため、NVIDIA のドライバで Optimus を使うよう設定しなければなりません。NVIDIA の記事に従って NVIDIA Optimus を設定してください。
NVIDIA ドライバーで X を起動した後黒画面になる
Optimus を利用してさえも、自動生成された xorg.conf
を使ってドライバーがラップトップスクリーンを検知するのに失敗することがあります。そして X 起動後に黒画面になるかもしれません。更なる詳細は NVIDIA Optimus を参照してください。
外部ディスプレイを接続して動作することが確認できる場合は、xrandr -q
で HDMI と DisplayPort のみが実際には検知されているか調べて下さい。nvidia-settings
は外部映像出力接続のみが表示されるはずです。
ドライバーに内蔵ラップトップスクリーンについて指示するには、xorg.conf
ファイルを変更して ConnectedMonitor" Option
を Section "Device"
に加えます。
Xorg#設定 を参考に、以下の内容を xorg.conf
Section "Device"
として設定してください:
Section "Device" Identifier "nvidia" Driver "nvidia" VendorName "NVIDIA Corporation" BusId "1:0:0" Option "AllowEmptyInitialConfiguration" Option "ConnectedMonitor" "eDP" Option "CustomEDID" "eDP:/sys/class/drm/card0-eDP-1/edid" Option "IgnoreEDID" "false" Option "UseEDID" "true" EndSection
X を再起動したのち、内蔵スクリーンの出力 <codeeDP-1-1> が検知され適切に使えるはずです。
ラップトップスクリーンが検知されたものの xrandr
では利用可能な解像度が適切に検知されていない場合は、HorizSync
および Vertrefresh
オプションを Section "Monitor"
から削除して、X を再起動して下さい。
Bumblebee によるハイブリッドグラフィック
Bumblebee を見てください。Bumblebee の設定後に Xorg が起動しない場合、Xorg -configure
を実行してから設定を /etc/X11/xorg.conf
にコピーして Xorg の設定を生成してみてください。
Bumblebee は通常時は NVIDIA のカードを無効化するため、HDMI などのディスプレイ出力は xrandr -q
で認識されません。Bumblebee のマルチモニター設定 のページを見てください。
bbswitch によるハイブリッドグラフィック
この方法では内蔵グラフィックとディスクリートグラフィックを手動で切り替えます。切り替えるときは全ての Xorg インスタンスを再起動する必要があります。マシンの再起動は必要ありません。
適切な NVIDIA グラフィックドライバーと bbswitch をインストールしてください。Xorg -configure
を実行して設定を /etc/X11/xorg.conf.intel
にコピーします。/etc/X11/xorg.conf.nvidia
を作成してもいいですが、必須ではありません。
以下の Bash 関数でディスクリートグラフィックを切り替えられます:
discrete() { killall Xorg modprobe nvidia_drm modprobe nvidia_modeset modprobe nvidia tee /proc/acpi/bbswitch <<<ON cp /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf }
上記の関数の実行後、xrandr -q
は出力端子として HDMI-0
を認識します。xrandr --auto
で外部モニターにディスプレイが映ります。DPI が異なるディスプレイを拡張したい場合、以下のコマンドを必要に応じて修正して実行してください:
$ xrandr --output HDMI-0 --scale 2x2 --right-of eDP-1-1
逆に、内蔵グラフィックに切り替えたい場合:
integrated() { killall Xorg rmmod nvidia_drm rmmod nvidia_modeset rmmod nvidia tee /proc/acpi/bbswitch <<<OFF cp /etc/X11/xorg.conf.intel /etc/X11/xorg.conf }
切り替えた後は X セッションを手動で起動する必要があります。
TLP を使っている場合、TLP がシステムの起動・シャットダウンを妨害しないようにするため、以下の行をアンコメントして NVIDIA のカードを分離する必要があります:
/etc/default/tlp
RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"
nvidia-xrun には NVIDIA のグラフィックカードで別の X セッションを実行する方法が記載されています。
トラブルシューティング
xbacklight で画面の明るさを変えられない
light-gitAUR をインストールしてください。
起動時・シャットダウン時にシステムがフリーズする
ハイブリッドグラフィックを使っている場合、TLP の設定で NVIDIA ドライバーがブラックリストに含まれているかどうか確認してください:
/etc/default/tlp
RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"
また、シャットダウンする前に以下のコマンドを実行して NVIDIA のカードをオンにしてください:
# modprobe nvidia
systemd サービスをインストールして、NVIDIA のカードを自動でオンにすることもできます:
/etc/systemd/system/nvidia-enable-power-off.service
[Unit] Description=Enable NVIDIA card at shutdown DefaultDependencies=no [Service] Type=oneshot ExecStart=/bin/sh -c "awk '{print $2}' /proc/acpi/bbswitch > /tmp/gpu_state && echo ON > /proc/acpi/bbswitch" #ExecStart=/usr/bin/modprobe nvidia [Install] WantedBy=shutdown.target WantedBy=reboot.target WantedBy=hibernate.target WantedBy=suspend-then-hibernate.target WantedBy=sleep.target WantedBy=suspend.target
さらに、元々オフであったカードを、サスペンドやハイバネーションからの復帰時にオフにし直すには:
/etc/systemd/system/nvidia-disable-resume.service
[Unit] Description=Disable NVIDIA card at system resume DefaultDependencies=no After=sleep.target After=suspend.target After=suspend-then-hibernate.target After=hibernate.target [Service] Type=oneshot ExecStart=/bin/sh -c 'cat /tmp/gpu_state > /proc/acpi/bbswitch || echo OFF > /proc/acpi/bbswitch' #ExecStart=/usr/bin/rmmod nvidia [Install] #WantedBy=shutdown.target #WantedBy=reboot.target WantedBy=sleep.target WantedBy=suspend.target WantedBy=suspend-then-hibernate.target WantedBy=hibernate.target