Secure BootのままNvidiaドライバをaptからインストールする【Ubuntu 16.04】

July 24, 2021, 9:39 a.m. edited April 24, 2022, 8:48 a.m.

#Linux 

最近の Ubuntu は Secure Boot が ON になっていると署名のないドライバを使うことができない。そのため、

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-430

としたときに Secure Boot が ON になっていると、 OFF にするようメッセージが出て、一時的なパスワード入力を求められた後に再起動すると、 Secure Boot を OFF にする設定画面が現れる(この中でそのパスワードを使う)1

しかしながら、 Secure Boot を切りたくないという人情もある。そこで、 apt によりインストールした nvidia-430 を Secure Boot ON の状態で用いる方法を調べた。

基本的には https://askubuntu.com/a/769840 に従う。このうち 2. Sign the module で /path/to/module がわからん、となるが、これは

modinfo -n nvidia

により得ることができる。ただし、この nvidia.ko があるディレクトリには他にも nvidia-なんたら.ko のような名前のモジュールがいくつかあるので、それらすべてに 2. Sign the module をしておくのが良さそう。(用いる .priv.der ファイルはすべて共通のものを私は使った)

そうして、 4. の項目まで終えれば Secure Boot ON のままでも /proc/driver/nvidia が存在し、そして nvidia-smi が使えるはず。

アプデで動かなくなったとき(220424 追記)

現在 Ubuntu 20.04 で動かしているが、問題なく動いている。ただ、 sudo apt update, sudo apt upgrade をしたときにドライバ関連かでここに変更が入って Enroll MOK 用のパスワード設定を求められたあとに nvidia-smi が動かなくなることがある。その場合、

  1. sudo reboot すると、当初に設定したときと同じような青い画面で Enroll MOK の選択肢が出てくるので、同じように Enroll MOK を選択して先程入力したパスワードを入れてやる
  2. そのまま再起動されるので、とりあえず端末を開いてやはり nvidia-smi が使えないことを確認する
  3. modinfo -n nvidia でパスを調べたら、以前作成した同じ .priv, .der ファイルに対して同じように sudo kmodsign sha512 ./なんたら.priv ./なんたら.der /path/to/module をしてやる
  4. sudo mokutil --import なんたら.der をするとおそらく既に登録済みだみたいなことを言われるので、そのまま sudo reboot
  5. 再起動後、 nvidia-smi が使えるようになっているはず

自動でやってほしい・・・。


  1. 間違って何もせずそのまま Ubuntu を立ち上げてしまった場合は sudo mokutil --disable-validation で再度一時的なパスワードを入力してから sudo reboot することで再びその設定画面を見ることができる(ちなみに Secure Boot を ON にする画面がほしい場合は sudo mokutil --enable-validation からの sudo reboot)