気づいたきっかけ

朝起きて、いつものように録画状況を確認しました。

そしたら、録画はできているものの、mp4にエンコードされていませんでいた。

EPGStationがうまく動いていないかもしれないと仮説をたてて、docker-composeをダウンし、再びアップしたら起動しないのです。

状況把握

まずは状況を把握します。

dockerコンテナ起動時のエラーメッセージ

dockerのコンテナを起動しようとすると、以下のエラーメッセージが出力されました。「driver/library version mismatch」とあるので、ドライバーが何らかの原因かもです。

ERROR: for epgstation  Cannot start service epgstation: failed to create shim: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver/library version mismatch: unknown

OSでnvidia-smi

dockerがダメなら、OSからnvidia-smiしたらどうなるかと試しました。上記のメッセージと同じですね。「Driver/library version mismatch」と出力されました。

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

rebootしたらどうなるか

リブートしたらもとに戻るかもしれないので、sudo rebootしてみます。

リブート後、再びnvidia-smiしてみました。出力されるメッセージが変わりました。「Make sure that the latest NVIDIA driver is installed and running.」とあるので、「最新のNVIDIAドライバーがインストールされてて、動いているか確認しろ!」と言われてます。

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.

原因の仮説:Ubuntuのパッケージアップデート

上記のメッセージから、「ドライバー」と言われているので、ドライバーの変化があったのではないかと予想しました。

で、振り返るとubuntuのアップデートをしたことを思い出しました。パッケージのアップデートが溜まっているとメッセージが出たいたので、パッケージをアップデートしたのです。これが原因なんじゃないかと考えました。

実際に新しいバージョンのドライバーを入れ直して、復旧したのでこれが原因だったと思います。

対処できるか、試した

以下で対処できるかを試しました。sudo apt upgradeすると、できません。

sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。

‘apt –fix-broken install’ を実行する必要があるかもしれません。とあるので、実際にやってみます。

sudo apt --fix-broken install

ダメでした。

で、もう1回同じドライバーを入れればもとに戻るかもと期待して、sudo apt install nvidia-driver-515を試しました。そうすると以下のように「以下のパッケージには満たせない依存関係があります:」とメッセージが出力されます。

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

以下のパッケージには満たせない依存関係があります:
nvidia-driver-515 : 依存: libnvidia-compute-515 (= 515.65.07-0ubuntu1) しかし、515.76-0ubuntu0.22.04.1 はインストールされようとしています
                    依存: libnvidia-decode-515 (= 515.65.07-0ubuntu1) しかし、インストールされようとしていません
                    依存: libnvidia-encode-515 (= 515.65.07-0ubuntu1) しかし、インストールされようとしていません
                    推奨: nvidia-settings しかし、インストールされようとしていません
                    推奨: nvidia-prime (>= 0.8) しかし、インストールされようとしていません
                    推奨: libnvidia-compute-515:i386 (= 515.65.07-0ubuntu1)
                    推奨: libnvidia-decode-515:i386 (= 515.65.07-0ubuntu1)
                    推奨: libnvidia-encode-515:i386 (= 515.65.07-0ubuntu1)
                    推奨: libnvidia-fbc1-515:i386 (= 515.65.07-0ubuntu1)
                    推奨: libnvidia-gl-515:i386 (= 515.65.07-0ubuntu1)
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

本格対処

ということで、本格対処です。

ビデオカードの型番確認

改めて、ビデオカードの型番(正確にはチップの型番)を確認します。「GeForce GTX 1650」が表示されます。これはちゃんとOSがビデオカードを認識していることの確認です。

lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation TU116 [GeForce GTX 1650] (rev a1)
01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1)
01:00.2 USB controller: NVIDIA Corporation TU116 USB 3.1 Host Controller (rev a1)
01:00.3 Serial bus controller: NVIDIA Corporation TU116 USB Type-C UCSI Controller (rev a1)

インストールするドライバーの確認

次にどのドライバーが適しているかを確認します。そうすると、「nvidia-driver-520-open」がrecommendedとおすすめされます。

ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002188sv00001462sd00008D97bc03sc00i00
vendor   : NVIDIA Corporation
model    : TU116 [GeForce GTX 1650]
driver   : nvidia-driver-520-open - third-party non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-515-server - distro non-free
driver   : nvidia-driver-510 - third-party non-free
driver   : nvidia-driver-515 - third-party non-free
driver   : nvidia-driver-470 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-510-server - distro non-free
driver   : nvidia-driver-515-open - distro non-free
driver   : nvidia-driver-520 - third-party non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

リポジトリのアップデート

リポジトリに上記のドライバーがないかもしれないので、アップデートします。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

ドライバーのインストール

以下のコマンドで新しいドライバーをインストールします。

sudo apt install nvidia-driver-520-open

### OS再起動

インストールできたら、再起動です。

sudo reboot

nvidia-smiが動くかの確認

改めて、nvidia-smiすると、以下のように表示されました。

nvidia-smi
Fri Oct 21 21:30:58 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.61.05    Driver Version: 520.61.05    CUDA Version: 11.8     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:01:00.0 Off |                  N/A |
| 30%   27C    P8     4W /  75W |    235MiB /  4096MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                            
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      2602      G   /usr/lib/xorg/Xorg                172MiB |
|    0   N/A  N/A      3005    C+G   ...ome-remote-desktop-daemon       49MiB |
|    0   N/A  N/A      3048      G   /usr/bin/gnome-shell                8MiB |
+-----------------------------------------------------------------------------+

EPGStationも起動できるようになった

この状態で、EPGStationやMirakurunのdocker-composeを起動することができました。