手順
- nvidia公式からドライバダウンロード
- 画面端子をグラフィックボード側へつなぎ直す
- nouveau無効化
- ランレベルを3にしてCUIへ
- ドライバインストール
- BIOSにてセキュアブートを無効化
環境
- CPU:Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
- GPU:GeForce 1080 Ti
- OS:ubuntu18.04
- カーネル:4.15.0-23-generic
経緯
とりあえずaptでやってみる
研究室で新しくパソコンを買ってもらったのでubuntu18.04にnvidiaのドライバをインストールしようと思ったら見事にハマったのでメモ。
はじめにこのサイトを参考にaptからインストールを試みるも、以下のように途中でインストールが止まってしまう。
Building for 4.15.0-23-generic
Building for architecture x86_64
Building initial module for 4.15.0-23-generic
なんとなくカーネルに問題があるように見えるが、ググったところEscキー連打のあとパスワードを何回か打ち込むとインストールできるらしい(参考:https://github.com/teejee2008/ukuu/issues/81)。あまりにも胡散臭いが、実際にやってみたところインストール自体は無事成功した。が、nvidia-smiが通らない。どうやらドライバが認識されていないらしい。ppaを追加しても変わらず。
公式からダウンロード
というわけでaptを頼らず、nvidia公式からドライバをダウンロードすることにした。ドライバのバージョンはNVIDIA-Linux-x86_64-390.67.runだった。
まず先程入れたドライバをapt purge、dpkg --purgeですべてアンインストールした。
次にubuntuにデフォルトで動いているnouveauというドライバを無効化した。以下のようにblacklistファイルを作ると無効化できるらしい(参考:https://linuxconfig.org/how-to-disable-nouveau-nvidia-driver-on-ubuntu-18-04-bionic-beaver-linux)。
$ sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
$ sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
$ sudo update-initramfs -u
$ sudo reboot
確認は以下のコマンドでできる。
$ lsmod | grep -i nouveau
何も表示されなければnouveauが無効化されいている。が、自分は普通に表示されてしまった。試行錯誤したところディスプレイの端子をグラフィックボード側に挿し直したところ無効化できた。意味がわからない。
次にランレベルを3にした。
$ sudo telinit 3
Ctrl+Alt+F1でCUIモードに移行。先程ドライバをダウンロードしたフォルダに移動しインストールする。
$ sudo bash NVIDIA-Linux-x86_64-390.67.run
このあと良くわからない選択肢が多数出てくる。どうやらUEFIのセキュアブートは署名なしのドライバを拒否するらしく、そのための署名を自分で作るか自動で作ってもらうか選べるらしい(参考:https://qiita.com/arc279/items/99f08b549c95881007b9)。適当に選んだところログインループになったりログイン画面にたどり着かなくなったりした。BIOSの画面でセキュアブートをオフにしたところ、普通に起動した。nvidia-smiも通ったのでこれで良しとする。
ちなみにログインループで困ったときに,Ctrl+Alt+F2(なぜかF1キーだと反応しない)でCUIに移行したあと
$ sudo ubuntu-drivers autoinstall
とすると、なぜかnouveauが起動して入れるようになる。
結論
はじめからセキュアブートを切ってaptしとけば普通に動いたのでは・・・?
追記
その後アップデートしたらまたログイン画面にたどり着けなくなったので
apt ubuntu-drivers autoinstall
としたら普通に動きました。やっぱりセキュアブートがだめっぽい。