Open4

サーバー運用時のエラー

しんとみしんとみ

nvidia-smiが動かない

事象

いつの間にかnvidia-smiコマンドが正常に動かず、以下のエラーがでるようになった。

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

エラーの原因を特定

まずdmesgでどのようなエラーが出ているか把握する。NVIDIAのclientとkernel moduleのバージョン違いが原因の模様。

$ dmseg
NVRM: API mismatch: the client has the version 515.76, but
NVRM: this kernel module has the version 515.65.01.  Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.

NVIDIAのclientがいつupgradeされたのか確認する。

$ vim /var/log/apt/history.log
Start-Date: 2022-10-15  06:44:00
Commandline: /usr/bin/unattended-upgrade
Upgrade: libnvidia-compute-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-compute-515:i386 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-encode-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-encode-515:i386 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-kernel-common-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), xserver-xorg-video-nvidia-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-gl-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-gl-515:i386 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-fbc1-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-fbc1-515:i386 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-decode-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-decode-515:i386 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-cfg1-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-utils-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-dkms-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-compute-utils-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-driver-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), libnvidia-extra-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1), nvidia-kernel-source-515:amd64 (515.65.01-0ubuntu0.20.04.1, 515.76-0ubuntu0.20.04.1)
End-Date: 2022-10-15  06:47:31

/usr/bin/unattended-upgradeによって自動的にNVIDIA clientがupgradeされたことがわかる。

解決策

下記の記事を参考にkernel moduleをupgradeする。
https://askubuntu.com/questions/1436506/how-to-resolve-unmet-dependencies-error-when-upgrading-depends-nvidia-kernel-c

sudo apt --fix-broken install
sudo apt remove *nvidia*
sudo apt install nvidia-driver-515
sudo reboot

対策

パッケージの自動更新を無効にする
https://qiita.com/dan-go/items/0d863ab5d11494cd7ec5

しんとみしんとみ

Ubuntuをインストールした後にWinowsをインストールしたらUbunutuが起動しなくなる

事象

Ubuntuをインストールした後にWinowsをインストールしたらUbunutuが起動しなくなる。

原因

BIOSがUbuntuのEFI領域を認識しなくなっていた。
(Windowsのインストーラがdiskを読み込んだ際にパーティション情報を書き換えてる気がする。)

解決策

Ubunutu Live USBを起動してCtrl+Alt+Tでターミナルを開き、インターネットに接続し、次のコマンドを実行してboot-repairをインストールする。

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

次にboot-repairを実行し、recommended repairを選択し、再起動する。

https://askubuntu.com/questions/6317/how-can-i-install-windows-after-ive-installed-ubuntu

しんとみしんとみ

apt upgradeができない

事象

$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
アップグレードパッケージを検出しています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 grub-efi-amd64-signed : 依存: grub-efi-amd64-bin (= 2.06-2ubuntu7)
E: 壊れたパッケージ

原因

おそらくupgradeする対象にversion固定しなければいけないパッケージであるgrub-efi-amd64-binが含まれていた。

解決策

下記のコマンドを実行してgrub-efi-amd64-binをupgrade対象から外す

echo grub-efi-amd64-bin hold | sudo dpkg --set-selections

https://qiita.com/strsk/items/c933a661c077a666073a

しんとみしんとみ

Nvidia Docker内でnvidia-smiでsudoなしで使えない

事象

Nvidia Dockerの--gpus allをつけてコンテナを立ち上げたとき、sudoなしでnvidia-smiを実行したとき以下のエラーが出る。sudo nvidia-smiでは問題なく通る。

$ nvidia-smi
Error: nvml: Insufficient Permissions

原因

コンテナ内のユーザがdocker groupに入っていないことが原因である。
https://stackoverflow.com/questions/73000117/cannot-run-nvidia-smi-inside-the-docker-without-sudo

解決策

解決策は複数考えられる。

  1. stack overflowの回答のようにコンテナ内のユーザをdocker groupに追加する。
  2. ローカルでdocker groupに追加されているユーザーをコンテナ内でも使うようにする。
    具体的には次の記事のようにdocker runする際に/etc/passwd/etc/groupをバインドすればよい。
    https://blog.amedama.jp/entry/docker-container-host-same-user-bis

自分は2番目の方法で解決した。