はじめに
我が家のUbuntuPCに念願のGTX2080Tiが搭載された.それ伴って対応するNvidia Driverのインストールを行ったが結構詰まったのでその時のメモ.
環境
OS : Ubuntu 16.04
CPU : Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz
GPU : GEFORCE RTX 2080Ti
インストール
Nvidia Driverのダウンロード
インストールはこちらのリンクから環境を指定してインストールを行う.GTX2080Tiはバージョン410系からサポートされているので410系をダウンロードする.最新版は現在(2018/11/19)で410.75まであるが,私の環境では410.66でしかうまく動作しなかった.
Drivers | GeForce
もし古いバージョンのドライバが入っていたら削除する.
$ sudo apt-get purge nvidia*
$ sudo apt-get purge cuda*
$ sudo apt autoremove
準備とお約束のGUIの停止.
$ sudo service lightdm stop
$ sudo service gdm stop
$ sudo apt-get install build-essential
ダウンロードしたドライバに実行権限を与えて実行する.
$ cd {ダウンロードしたディレクトリ}
$ sudo chmod +x NVIDIA-Linux-x86_64-410.66.run
$ sudo ./NVIDIA-Linux-x86_64-410.66.run
カーネルの変更
Ubuntu16.04の最新カーネルにNvidiaが対応していないようで,このままだとnvidia-smi
を入力してもエラーを返される.そこでUbuntuの利用可能なカーネルを確認し,動作が保証されているUbuntu, with Linux 4.10.0-28-generic
を利用するように設定を変更する.以下のリンクを参考にさせていただいた.
Ubuntuでnvidiaドライバーが動作しない - Qiita
$ grep menuentry /boot/grub/grub.cfg
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.15.0-39-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-39-generic-advanced-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.15.0-39-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-39-generic-init-upstart-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.15.0-39-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-39-generic-recovery-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.10.0-28-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-28-generic-advanced-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.10.0-28-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-28-generic-init-upstart-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'Ubuntu, with Linux 4.10.0-28-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-28-generic-recovery-7207aa24-4507-4c74-9c7d-f888905d2ba9' {
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
これを元に/etc/default/grub
を編集する.
$ vi /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
# GRUB_DEFAULT=0
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.10.0-28-generic"
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
# GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
# GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
# GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
# GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
# GRUB_INIT_TUNE="480 440 1"
GRUB_DEFAULT=0
をコメントアウトしてGRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.10.0-28-generic"
を追記する.リンク先ではGRUB_DEFAULT=3
のようにしても切り替えられるとなっていたが,私の環境ではできなかった.
設定を反映させるために以下のコマンドを実行し,端末を再起動.
$ sudo update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Linux イメージを見つけました: /boot/vmlinuz-4.15.0-39-generic
Found initrd image: /boot/initrd.img-4.15.0-39-generic
Linux イメージを見つけました: /boot/vmlinuz-4.10.0-28-generic
Found initrd image: /boot/initrd.img-4.10.0-28-generic
Adding boot menu entry for EFI firmware configuration
完了
$ sudo reboot
実行確認
カーネルのバージョンが変わりnvidia-smi
コマンドが実行できれば完了.
$ uname -r
4.10.0-28-generic
$ nvidia-smi
Mon Nov 19 20:23:19 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.66 Driver Version: 410.66 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:65:00.0 On | N/A |
| 35% 28C P8 2W / 260W | 288MiB / 10986MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1346 G /usr/lib/xorg/Xorg 50MiB |
| 0 2716 G unity-control-center 6MiB |
| 0 3049 G /usr/lib/xorg/Xorg 47MiB |
| 0 3908 G /usr/lib/xorg/Xorg 59MiB |
+-----------------------------------------------------------------------------+
失敗したこと
aptにnvidia driverとcudaがあったのでそのままインストールを行ったが,cudaとのバージョンが噛み合わない違うようでエラーが出た.
$ sudo apt-get install cuda
$ sudo apt-get install nvidia-410
終わりに
nvidia toolkitのインストールしんどい.