dGPU は居ます
という訳で、まっさらな LMDE5 (MATE) を用意しまして、SurfaceBook 初代にインストール。その後 linux-surface を導入します。
この時点で
$ lspci
と端末に打ってみても dGPU は認識されません。
※11/25追記
linux-surface の wiki によれば SurfaceBook 初代には下記の処理も必要なようです。
※2023/01/09 削除。コレについては盛大に勘違いしていたようです
/etc/default/grub
の GRUB_CMDLINE_LINUX_DEFAULT の内容を
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0 pci=realloc nvidia-drm.modeset=1 pcie_port_pm=off pcie_aspm=off"
に変更
※11/25追記ココまで
/usr/local/bin
ディレクトリに dgpu.sh (名前は何でも良い)
というファイルを作ります。尚同ディレクトリは管理者権限で開かない(アイコンを右クリックして管理者権限で開く)とファイルを作れないので注意。
内容は先日書いていたページに示されていた通り
#!/bin/shecho 1 | tee /sys/bus/platform/devices/MSHW0041:00/dgpu_powerecho 1 > /sys/bus/pci/rescansetpci -H1 -s 01:00.0 6a.b=81setpci -H1 -s 01:00.0 4.w=0407echo 1 > /sys/bus/pci/rescansetpci -s 01:00.0 4.wsetpci -s 01:00.0 6a.b
作ったファイルは実行権限を付けます。
まあ、私は永久にニュービーなのでコマンドで実行権限を付けるようなシャレオツな事はできません。
※ファイルアイコンを右クリックしてプロパティを開けば設定できます
ちょいと実行
$ sudo /usr/local/bin/dgpu.sh
これで多分
940MX が認識されるハズ。
が、こんなものを起動する度にコマンドラインで打つのは面倒なのでOSに起動時に呼ばせるように設定する。
一旦、OSを再起動。
$ lspci
と打ち込んでも 940MX を認識していない事を確認してください。
/etc/systemd/system
ディレクトリに dgpu.service (名前は何でも良い)
というファイルを作ります。尚同ディレクトリは管理者権限で開かないとファイルを作れないので注意。
内容は先日書いていたページに示されていた通り
[Unit]Description=Nvidia GPU initializationBefore=display-manager.service[Service]Type=oneshotExecStart=/usr/local/bin/dgpu.shExecStartPre=/bin/sleep 10[Install]WantedBy=multi-user.target
で、実際に動くのか試してみます。
$ systemctl daemon-reload
$ systemctl start dgpu.service
で、この後に
$ lspci
と打ち込んで 940MX が認識されていれば一安心。
…なのですが、このままOSを再起動されると 940MX は認識されません。
サービスが常に起動されるものとして登録されていない為です。
$ systemctl enable dgpu.service
これで登録完了。再起動後も 940MX が認識はできるハズ…です。
さて、後半は Linux 使う人は割と当然のように行っているデーモンプロセスとかいう奴の登録のお話だったのですが…
…存在は知っていて、20年くらい前に何も知らずにやっていたけど、初めて意識して作ったし、これが出来て当然とか言ってる Linux ユーザー怖いなと。
そして前半の内容は linux-surface #93 の内容をなんとか読解してみた結果…のハズ。私、アメリカ語さっぱりなんで。
そして、残念な事にここまでやっても認識しただけで、実は起動していません。
起動させるには別のソフトを呼ぶ必要があるようです。
ここまでで判った知見としては
Linux 初心者はノートを使うなら dGPU とか夢見てないで iGPU が強くて面倒な構造を持っていない CPU (ぶっちゃけ Ryzen)を選んだ方が良い
って事ですかね。
0 件のコメント:
コメントを投稿