GCPのDebian 12でNvidia L4を使用しようと思い、ドライバを入れる段階でマニュアルどおりできないので備忘録。

マニュアルは下記。

 

 

とりあえずマニュアルに従い以下を実行。

 

$ sudo apt install linux-headers-$(uname -r)

$ sudo add-apt-repository contrib

 

ここで、add-apt-repository contribが見つからないとエラーが出ますが、add-apt-repository contribは実行しなくても問題ないようです。

 

次のLocal Repository Enablement 1.Download the NVIDIA driver repositoryで早速ひっかかる。

$ wget https://developer.download.nvidia.com/compute/nvidia-driver/${version}/local_installers/nvidia-driver-local-repo-${distro}-${version}_${arch}.deb

 

上を実行しようにも${version}、${distro}、${arch}が不明。

マニュアルをちょっと探しても出てこない。不親切すぎる。

ひとまずnvidiaのサイトでドライバを探してみる。

 

 

適宜ぽちぽちして以下のL4のドライバを探し当てる。

Data Center Driver for Debian 12 590.48.01 | Linux 64-bit Debian 12

ようやく${version}は明らかになったが、${distro}と${arch}の記載はなし。

ダウンロードリンクは表示されるのでDownloadのリンクをコピー。

https://us.download.nvidia.com/tesla/590.48.01/nvidia-driver-local-repo-debian12-590.48.01_1.0-1_amd64.deb

 

なんだかマニュアルとアドレスが違うんだが。。。

知らんけどマニュアルに戻って以下を実行。

$ wget https://us.download.nvidia.com/tesla/590.48.01/nvidia-driver-local-repo-debian12-590.48.01_1.0-1_amd64.deb

$ sudo dpkg -i nvidia-driver-local-repo-debian12-590.48.01_1.0-1_amd64.deb

$ sudo apt update

 

ここで何やらGPG keyの警告が出るので、表示されたとおりに以下を実行。

$ sudo cp /var/nvidia-driver-local-repo-debian12-590.48.01/nvidia-driver-local-3AB1AF5A-keyring.gpg /usr/share/keyrings/

 

ふたたびapt updateをたたく。

なお、マニュアルでは上記のEnroll ephemeral public GPG keyが先に来ているので、マニュアルどおりやってもできない。。。

$ sudo apt update

 

またマニュアルに戻り以下を実行。

$ sudo apt -V install nvidia-open

$ sudo apt -V install cuda-drivers

 

なんとかエラーは出ずにインストールできたっぽいので再起動。

$ sudo shutdown -r now

 

再起動したら以下のコマンドを叩いで確認。

$ nvidia-smi

 

以下のような表示が返ってきて無事に認識されました。

内容が中途半端ですみません。

とりあえずOpenFOAMネタは諸般の事情により無期限中断です。

 

忘備録的に富士通のLifebook WA1/SにChromeOS Flexをインストールした際に、タッチパッドが上手く認識されなかったため対処法を書き留めました。

※ルート権限でカーネルの起動オプションとかを編集するので、操作を間違えると最悪の場合、データ消失や起動できなくなる恐れもあるので、自己責任でお願いします。

 

ChromeOS Flexとは色々な記事で紹介されていますが、Chrome Book搭載のOSのフリー版のようなものです。

 

 

それで、家で眠っていた富士通のLifebook WA1/Sを発掘してインストールしたのですが、Touchpadが使えませんでした。USBのマウスを差すと通常に使えるので、何らかの原因でTouchpadが認識されないようです。

 

そこで、色々調べて、まずはChromeOSをデベロッパモードにするところからです。

下記のページに記載のとおり、適当なLinuxディストリービューションで起動ディスクを作って、ターミナルからgpartedを起動し、EFIパーティションとなっている/dev/sdaを調べます。今回は/dev/sda12が対象でした。

 

 

 

上記記事のとおり、sudo mount /dev/sda12 /mntのようにして/mntにマウントします。

その後、vi /mnt/efi/boot/grub.cfgでgrub.cfgを編集して各menuentryの{}内の最後にcros_debugを追記します。

 

例えばこんな感じ。

menuentry "local image A" {
  linux /syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= kvm-intel.vmentry_l1d_flush=always  i915.modeset=1 cros_efi       root=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 cros_debug
}

 

grub.cfgを編集したらreboot -nなどで再起動し、ChromeOS Flexで起動する。

起動後、Ctrl+Atl+Tを押すとcorshが起動するので、shellと打ち込みsudo bashを実行すればルートユーザとして操作が可能となる。

 

タッチパッドが認識されない原因を調べるため、dmesg|grep inputを実行してみる。

 

localhost / # dmesg|grep input
[    0.319725] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    0.319890] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    0.320031] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[    0.397639] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input3
[    0.432999] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    9.755637] input: Fujitsu FUJ02E3 as /devices/LNXSYSTM:00/LNXSYBUS:00/FUJ02E3:00/input/input7
[   10.378174] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input8
[   10.378336] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input9
[   10.378486] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10
[   10.378849] input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11
[   10.378993] input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input12
[   10.497626] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[   10.520019] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input13
[   10.520168] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input14
localhost / # 

 

上記を見ると、touchpadらしきものは現れていない。キーボードはi8042、すなわちPS/2経由で接続されていることがわかる。色々調べると、LifebookのタッチパッドもPS/2経由らしいので、dmesg|grep i8042を実行してみる。

 

localhost / # dmesg|grep i8042
[    0.426621] i8042: PNP: PS/2 Controller [PNP0320:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[    0.429314] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.429333] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.432999] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
localhost / # 

 

とりあえず、i8042 KBD portでキーボードが認識され、i8042 AUX portで恐らくtouchpadが接続されているものの、inputとして現れてきていない様子。

なお、ここに至るまでにlshwとかも試し、touchpad自体は接続されていることは確認できたが詳細は割愛する。ちなみにChromeOS Flexにはデフォルトでlshwは入っていないようなので、適当なLinuxディストリビューションでUSB起動して確かめた。

 

ここまでで、タッチパッドは接続されているもののドライバがロードされてない(?)ようだということまでは分かった。色々調べると他のLifebookでもLinuxを使用する際に同様な現象があるようだった。

 

 

上記ページを見ると、カーネルのブートパラメータにi8042.notimeoutとi8042.nomuxを追加すると解決したと書いてあった。ここで、nomuxオプションは下記のページなどを見ると、i8042に関するバグで複数のデバイスをPS/2経由で接続可(例えばThikpadのタッチパッドとトラックスティックなど)とするmultiplexという機能が使用できるかの判定を誤ることがあるというものらしい。

 

 

以下のページを見るとmultiplexが有効の場合はdmesgでAUX0、AUX1、AUX2、AUX3とかが出るらしい。上の方で書いたとおり、今回はAUXしか出てきていないので、とりあえずmultiplexは無効で認識していると思われる。

 

 

ということで、多分nomuxの方は必要ないと考えて、カーネル起動オプションにi8042.notimeoutだけを追記して起動してみたらタッチパッドが正常に使えるようになった。

設定方法は、デベロッパモードを有効にした場合と同じやり方ですが、一旦デベロッパモードを有効にしておけばChromeOS Flex上から変更できます。EFIパーティションについても私の環境ではLinuxで起動した場合と同じため、mountコマンドも同じでした。

 

ChromeOS Flex上でCtrl+Alt+Tでcroshを起動し、shellコマンドを打ち込み、更にsudo bashでルートユーザになります。その後、マウントポイントとして/home下に適当にTEMPなどのディレクトリを作り、/dev/sda12をマウントします。

 

localhost / # mkdir /home/TEMP

localhost / # mount /dev/sda12 /home/TEMP

 

正しくマウントできたらvi /home/TEMP/efi/boot/grub.cfgでgrub.cfgを編集して各menuentryの{}内の最後にi8042.notimeoutを追記します。

 

例えばこんな感じ。

menuentry "local image A" {
  linux /syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= kvm-intel.vmentry_l1d_flush=always  i915.modeset=1 cros_efi       root=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 cros_debug i8042.notimeout
}

 

編集できたらreboot -nを打ち込んで再起動すると、タッチパッドが正常に使えるようになりました。

再起動後に改めてdmesgを確認すると、下記のようにカーネル起動オプションが渡され、タッチパッドが認識されていることがわかります。

 

localhost / # dmesg|grep i8042
[    0.000000] Command line: BOOT_IMAGE=/syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= kvm-intel.vmentry_l1d_flush=always dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 i915.modeset=1 cros_efi root=/dev/dm-0 "dm=1 vroot none ro 1,0 4710400 verity payload=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 hashtree=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 hashstart=4710400 alg=sha256 root_hexdigest=0cf4e864544e25fc404ffa706600413abb2272304c8a4135c892d465efc0ec51 salt=99fb3c501bb1be9de659a731ba95e720e25f20c40e7a512c32878bc4ce06f864" cros_debug i8042.notimeout
[    0.034497] Kernel command line: BOOT_IMAGE=/syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= kvm-intel.vmentry_l1d_flush=always dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 i915.modeset=1 cros_efi root=/dev/dm-0 "dm=1 vroot none ro 1,0 4710400 verity payload=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 hashtree=PARTUUID=C540B2D0-D220-ED47-A094-FDC4940A32D9 hashstart=4710400 alg=sha256 root_hexdigest=0cf4e864544e25fc404ffa706600413abb2272304c8a4135c892d465efc0ec51 salt=99fb3c501bb1be9de659a731ba95e720e25f20c40e7a512c32878bc4ce06f864" cros_debug i8042.notimeout
[    0.426621] i8042: PNP: PS/2 Controller [PNP0320:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[    0.429314] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.429333] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.432999] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    1.274727] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
localhost / # dmesg|grep input
[    0.319725] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    0.319890] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    0.320031] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[    0.397639] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input3
[    0.432999] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    1.189913] psmouse serio1: synaptics: Your touchpad (PNP: SYN1f08 PNP0f13) says it can support a different bus. If i2c-hid and hid-rmi are not used, you might want to try setting psmouse.synaptics_intertouch to 1 and report this to linux-input@vger.kernel.org.
[    1.274727] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
[    2.255633] LoadPin: kernel-module pinned obj="/lib/modules/5.10.136-19394-g7a24dee39fa0/kernel/drivers/input/joydev.ko.gz" pid=167 cmdline="udevd --daemon"

[    9.755637] input: Fujitsu FUJ02E3 as /devices/LNXSYSTM:00/LNXSYBUS:00/FUJ02E3:00/input/input7
[   10.378174] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input8
[   10.378336] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input9
[   10.378486] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10
[   10.378849] input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11
[   10.378993] input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input12
[   10.497626] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[   10.520019] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input13
[   10.520168] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input14
localhost / # 

 

若干怪しげなメッセージが出ていますが、とりあえず使えているので今回はOKということで。

時間があったら更に調べたいと思います。

ParaViewをX window越しで使用するには色々と問題が多く、速度も遅いので興味深いものの一旦離れ、より現実的と思われるリモートデスクトップで使用する方針へ転換。VNC等が一般的と思われるが、ここでは公式ページにも記載のあるChromeリモートデスクトップで試してみる。

 

 

上のページに従って、リモート接続を設定する。

リモート接続の設定を終えたら実際に接続し、ParaViewを起動してみる。が、ウィンドウが黒のままで何も表示されない…

描画上の問題らしく、メニューと思われる位置をクリックするとメニューだけは正常に表示される。

そこで、おとなしくバイナリ版のParaView5.6.2をダウンロードして実行してみると、正常に動いた。しかし、速度は遅い。

やはりサーバー側ではpvserverを実行してローカルのParaViewから接続して可視化するのが現実的のよう。