7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kernelも定期的にアップデートし,メンテナンスすべし

Last updated at Posted at 2022-05-23

GPUサーバーマシンとして利用しているデスクトップPCのOSとしてUbuntu20.04を利用しています.UbuntuというLinuxのディストリビューションのバージョンは気に掛けることが多いですが,Kernelは守備範囲外だった筆者ですが,今回Kernelのアップデートに挑戦することに.切っ掛けは以下の様な顛末です.

突然動かなくなったGPU

先日久し振りにUbuntuのアップグレードを実施したところ,大量のアップグレードがインストールされました.アップグレード後にnvidia-smiコマンドを実行した所,NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.というエラーメッセージが出力されました.色々調査した所,このエラーメッセージはOSアップグレード後にしばしばNVIDIAドライバーとの相性の問題で出ることが有るとのことです.対処方法として見つかったのは...

  • ドライバーの再インストール
  • BIOSアップデートが実行され,セキュアブートが有効化されている場合は無効化
  • グラフィックデバイスはCPU内蔵では無く,ビデオカードを優先させる(BIOSの設定)
  • 最悪はリカバリー(OSの入れ直し)

筆者は全てを試しましたが,事態は改善せず...リカバリーは少なくとも3回は実施しました.GPUが正常に動いている気配が無く,特にファンが動いておらず冷却されないため,電源OFF後ビデオカードが触れないほどの高温になってしまう現象に見舞われました.

気になる投稿を発見

ネットで気になる投稿を発見しました.Linuxカーネルの5.13とNVIDIAドライバーの相性が悪い...因みに筆者のマシーンのUbuntu20.04のデフォルトのKernelも5.13でした...:scream: :scream_cat:

Kernelのアップデート

Kernelとの相性が悪い可能性が浮上しましたが,筆者はLinux Kernelについては寡聞にして詳しく無いため,対処方法が分からず,途方に暮れていた所に,以下の様な記事を発見しました.LTS版のKernelをインストールする方法の記事です.

以降は上記の記事を参考に解説します.Kernelのアップデートのために,以下のコマンドを実行します.上記記事のコマンドをそのまま実行すると,5.14.0がインストールされます.5.14.0は実はLTS版ではありません.試しに5.10.xや5.15.xを試してみたのですが,NIVIDIAドライバーとの相性が悪く起動出来なくなってしまったため,今回は5.14.0を利用することとしました.

インストールコマンド
sudo apt install -y linux-image-oem-20.04b
  • 参考

完了後,デフォルトで起動するKernelのバージョンを変更します.Grub2(ブートローダー)の設定を変更することで可能です.

:warning: 以降の設定は失敗すると,最悪OSが起動出来なくなります.十分注意をして実施して下さい.

インストール済のKernelの一覧を出力します.Grubメニューに登録されているKernelの一覧から取得します.取得方法は以下のコマンドを実行します.

Kernel一覧を出力
$ grep -A100 submenu /boot/grub/grub.cfg | grep menuentry
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.15.0-1003-intel-iotg' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-1003-intel-iotg-advanced-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.15.0-1003-intel-iotg (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-1003-intel-iotg-recovery-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.14.0-1036-oem' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.14.0-1036-oem-advanced-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.14.0-1036-oem (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.14.0-1036-oem-recovery-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.13.0-41-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-41-generic-advanced-74416a76-9f47-4342-b02e-3e5162d506c1' {
	menuentry 'Ubuntu, with Linux 5.13.0-41-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-41-generic-recovery-74416a76-9f47-4342-b02e-3e5162d506c1' {

今回利用するのは以下の2つの項目です.(値は筆者の環境の場合)

  • submenu 'Advanced options for Ubuntu' $menuentry_id_option
    • gnulinux-advanced-74416a76-9f47-4342-b02e-3e5162d506c1
  • menuentry 'Ubuntu, with Linux 5.14.0-1036-oem'$menuentry_id_option
    • gnulinux-5.14.0-1036-oem-advanced-74416a76-9f47-4342-b02e-3e5162d506c1

この2つの値を>で繋いだ以下をこの後用います.

  • gnulinux-advanced-74416a76-9f47-4342-b02e-3e5162d506c1>gnulinux-5.15.0-1003-intel-iotg-advanced-74416a76-9f47-4342-b02e-3e5162d506c1

Grub2の設定を変更します.まず,/etc/default/grubを開きます.

sudo vim /etc/default/grub

設定内容を以下の様に変更します.変更後の値は上記の値(筆者の環境の場合)を設定しています.

/etc/default/grub(一部抜粋)
- GRUB_DEFAULT=0
+ GRUB_DEFAULT="gnulinux-advanced-74416a76-9f47-4342-b02e-3e5162d506c1>gnulinux-5.14.0-1036-oem-advanced-74416a76-9f47-4342-b02e-3e5162d506c1"
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

編集後,Grub2に設定を反映させるため,update-grubコマンドを実行し,PCを再起動します.

sudo update-grub
sudo reboot

再起動後,設定が反映されているか確認します.

カーネルバージョンを確認
$ uname -r
5.14.0-1036-oem

合わせてnvidia-smiコマンドを実行します.無事GPUが正しく認識されています.因みに再起動時にGPUのファンが回り始めました.(独特の唸るようなファンの音が発生するため直ぐに分かります.)

GPUの状態を確認
$ nvidia-smi 
Tue May 24 00:03:54 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.73.05    Driver Version: 510.73.05    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
|  0%   49C    P8    18W / 250W |     15MiB /  8192MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1213      G   /usr/lib/xorg/Xorg                  9MiB |
|    0   N/A  N/A      1411      G   /usr/bin/gnome-shell                3MiB |
+-----------------------------------------------------------------------------+

参考にした記事では,不要なKernelを削除して,GRUB_DEFAULT=0に再設定する行程が有りますが,当面LTS版の5.14.0を利用する予定のため,このままにしておくことにします.(アップグレートを実行時にNVIDIAドライバーと相性の悪いバージョンに置き換わる可能性が有るため)

まとめ

GPUマシーンの復旧に丸々1週間程掛かりました.NVIDIAドライバー関連のトラブルは今まで何度か見舞われたことが有りますが,ここまで復旧に時間を要したのは久し振りでした.同様の症状に見舞われている方の助けとなれば幸いです.

7
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?