Install STRIX-GTX1060-DC2O6G with NVIDIA driver

はじめに

PCを組んでCnetOS7.6.1810を入れた.

heavymoon.hateblo.jp

heavymoon.hateblo.jp

CPUは i7-9700K なので, インテル® UHD グラフィックス 630 が動作する想定だったが, Cinnamon がソフトウェアレンダリングしかしてくれない.

大したことしなくても定常的にCPU使用率20〜60%程度を維持し続ける. 無駄にCPUを使いまくるので,ドライバをいじるのか,グラボ挿すか,対応が必要.

01.org

ドライバのソースはすごい勢いでコミットされているようだし,ビルド手順も整備されている様子. でも,何でもかんでもビルドするのは面倒. いずれCUDAも使ってみたいのでNVIDIAのグラボを挿すことにした.

でもNVIDIA公式の手順はシンプル過ぎてわけわかめ

Installation instructions: Once you have downloaded the driver, change to the directory containing the driver package and install the driver by running, as root, sh ./NVIDIA-Linux-x86_64-418.30.run One of the last installation steps will offer to update your X configuration file. Either accept that offer, edit your X configuration file manually so that the NVIDIA X driver will be used, or run nvidia-xconfig

どこかに公式で詳細な手順あったっけ...

ということで,ドライバ導入の流れをメモしておく.

ドライバ導入前の状態

ROG STRIX な GTX1060 を買った.

ちなみに,名前も見た目もそっくりな2タイプある.

  • STRIX-GTX1060-DC2O6G
    • こっちのほうが若干コアクロック高め
    • こっちのほうが若干お値段控えめ
  • STRIX-GTX1060-DC26G

ということで DC2O6G の方を買った.

デュアルファンでヒートパイプがメカメカしい感じがスーパーかっこいい. パッケージもスーパーかっこいい.

f:id:HeavyMoon:20190223011907j:plain

ASUSの図解はさっぱりわからん.

https://www.asus.com/websites/JP/products/AZ68g7mJu4hw2kHn/eagle_GTX1060_jp.jpg

挿すとこんな感じ.スペース的にはまだまだ余裕が有る.

f:id:HeavyMoon:20190223011756j:plain

ハードウェアはこんな感じで認識されている.

# lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Device 3e98
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
$ sudo lshw -C video
  *-display                 
       description: VGA compatible controller
       product: GP106 [GeForce GTX 1060 6GB]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nouveau latency=0
       resources: irq:136 memory:a3000000-a3ffffff memory:90000000-9fffffff memory:a0000000-a1ffffff ioport:3000(size=128) memory:a4000000-a407ffff
  *-display
       description: VGA compatible controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:124 memory:a2000000-a2ffffff memory:80000000-8fffffff ioport:4000(size=64)

ドライバはこんな感じ.

# modinfo nouveau | grep -v 'alias\|parm\|firmware\|sig\|^\s'
filename:       /lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/gpu/drm/nouveau/nouveau.ko.xz
license:        GPL and additional rights
description:    nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+
author:         Nouveau Project
retpoline:      Y
rhelversion:    7.6
srcversion:     464415DA74D2AF7BF0C5E06
depends:        drm,drm_kms_helper,ttm,mxm-wmi,wmi,video,i2c-algo-bit
intree:         Y
vermagic:       3.10.0-957.5.1.el7.x86_64 SMP mod_unload modversions 
# modinfo i915 | grep -v 'alias\|parm\|firmware\|sig\|^\s'
filename:       /lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/gpu/drm/i915/i915.ko.xz
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
retpoline:      Y
rhelversion:    7.6
srcversion:     F5476F156AA00D6C36B89BD
depends:        drm,drm_kms_helper,iosf_mbi,video,i2c-algo-bit
intree:         Y
vermagic:       3.10.0-957.5.1.el7.x86_64 SMP mod_unload modversions 

今回はデフォルトでロードされているドライバ nouveau を無効にして,NVIDIAのドライバをインストールする.

$ lsmod | grep nouveau 
nouveau              1869689  0 
mxm_wmi                13021  1 nouveau
ttm                   114635  1 nouveau
wmi                    21636  3 mxm_wmi,nouveau,asus_wmi
i2c_algo_bit           13413  2 i915,nouveau
drm_kms_helper        179394  2 i915,nouveau
drm                   429744  6 ttm,i915,drm_kms_helper,nouveau
video                  24538  3 i915,nouveau,asus_wmi

導入

NVIDIAドライバダウンロード

www.nvidia.co.jp

wget でも curl でもブラウザからでも適当にドライバを 拾ってくる.

今回は NVIDIA-Linux-x86_64-410.93.run を拾ってきた.

ドライバアンロード

# echo -e "blacklist nouveau\noptions nouveau modeset=0" >> /etc/modprobe.d/disable-nouveau.conf

nouveau を読み込まないように設定入れておく.

関連パッケージインストール

$ sudo yum install kernel-devel kernel-headers gcc make

関連パッケージを入れる.

デフォルトターゲット切り替え

$ sudo systemctl set-default multi-user.target

GUI から CUI に切替える

ドライバインストール

$ su
# sh ./NVIDIA-Linux-x86_64-410.93.run    # インストールが始まるので適当に進める
# nvidia-smi 
Fri Feb 23 00:00:00 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.93       Driver Version: 410.93       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 GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
|  0%   36C    P0    28W / 120W |      0MiB /  6078MiB |      6%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

表示に従って適当に勧めればインストール完了

デフォルトターゲット戻す

$ sudo systemctl set-default graphical.target
$ sudo reboot

CUI から GUI に戻して,ついでに念の為再起動しておわり. 必要に応じてBIOSから優先ディスプレイを変更する.

おわりに

グラボのおかげでCPU使用率が定常的に1桁%まで下がった.

いろいろ弄りながら勧めたので,途中の再起動とか若干何かしらの手順が飛んでいるような...

本当は カーネル とか initrd とか Linux の起動過程の話も書こうと思っていたけれど,今回はまぁいいや.