#はじめに
久しぶりにUbuntu20.04LTSを開いたので、sudo apt update と sudo apt upgradeを行ったらエラーが発生。
どうやらnvidiaのドライバの更新をしようとしてエラーが出てるっぽい。
--configure みたいなコマンドを打ってくださいとい表示がされていたので実行。
すると問題なく動いたので良かったのだが、MNISTプログラムを実行するもGPUが動作しない。
仮想環境内でも仮想環境外でもnvidia-smiコマンドは実行可能だし、nvcc -Vでコンパイラのバージョンも確認可能。
バグの原因を調べているとドライバー関連を更新したあとに再起動してないのではないのかという記述を発見。
そういえばsudo apt upgrade でnvidia関連のドライバをインストールしていたことを思い出す。
再起動するといつもなら自然に起動するはずだが、Ubuntuの起動選択画面が表示(最初にインストールしたときに出てくる画面)。
これはなんか怪しいぞと思いつつ起動すると、デュアルモニターの片方が機能していない。
おまけにnvidia-smiコマンドも機能しないということで対処に迫られた。
Ubuntuでの今までの環境構築の経験から原因を予測し対処を試みる。
#解決策
Nvidiaドライバーがセキュアブートのせいでうまくインストールできなかった
これが一番考えられる。
セキュアブートを詳しく理解は出来てないが、要するに起動時にサードパーティ製のやつみたいな怪しいのは安全のため起動しないことがあるみたいな機能のはず。
この環境構築時にも一度それで失敗しているのと、他の記事でもドライバのインストールの際はセキュアブート切っておけと書いてある。
インストールがうまく出来ていないのか、起動が出来ていないのか問題を切り分けるため、とりあえず再起動しBIOSでセキュアブートを無効にして再起動してみる。
デュアルディスプレイもちゃんともとに戻り、nvidia-smi nvcc -V どちらも動作を確認。
pytorchのtorch.cuda.is_available()での確認もTrueが返ってきて無事成功しており一安心。
ちなみにドライバーのバージョンを確認したが変わってはいなかった。
何が変わったのかよくわからないが、2021年5月19日22時頃に起こった現象であることをここに記しておく。
#再発防止策
とりあえず直ったが再発防止策のため原因を再度考える。
おそらくsudo apt upgrade が原因なのだが、そもそもこのコマンドが詳しくは何をしているのか理解していないのが原因だと考えた。
sudo apt update
インストール可能なパッケージリストの更新を行う
これ自体でパッケージの更新を行っているわけではない。
sudo apt upgarade
インストール済みのパッケージの更新を行う。
[[1]]によると”アップグレードは主に不具合等を修正して完成度を高めること”であるそうなので、このコマンドでバージョン自体が変わることはなさそうだ。
以上のことを踏まえるとセキュアブートをONにしている限りこのようなことは避けられないと考える。
この論理でいくとセキュアブートは本当に必要なのかという問いに行き着くので調べてみる
定義)セキュアブート:”デジタル署名を検証し、署名されていないソフトウェアを実行しないようにする技術”([2]より引用)
他のサイトも見てみたが、セキュリティ面が強くなるのは間違いないよう。
環境構築などの際に邪魔になるのは間違いないだろうが、ドライバー系をインストールする際はセキュアブートを無効にするというのを意識すれば問題ないだろう。
セキュリティの専門家ではないのでおとなしくONにして、必要な時だけOFFにすることに決めた。
ちなみに[3]によると自宅PCにも使われているUEFIは新しいBIOSの一種みたいなものだそう。
別物なのか気になっていたのでこの際解決しておく。
#おわりに
勝手にアップデートされて勝手にバグるのは勘弁してほしい。
ではこれで!!
#参考文献
[1]:https://timetotravel.space/update_upgrade_chigai/
[2]:https://wakatech.jp/secure-boot
[3]:https://pc-farm.co.jp/pc_column/pc/4351/
[[1]]: Ubuntu Linuxのapt updateとapt upgradeの違いは何?アップデートには両方必要なの? 2021/05/19アクセス
[[2]]:【解説】セキュアブートとは?BIOSの後身、UEFIって何?
[[3]]: BIOSとUEFIの違いについて詳しく解説!次世代のレガシーBIOSとは?