UEFIにCentOS8をインストールする方法

UEFIにCentOS8をインストールしようとしたんですが、いきなり画面が暗いまま全然進めなくて、あれやこれやと色々ググっては試しググっては試しを繰り返し、あんなことやこんなこと色々トライした結果、最終的にはなんとかインストールできてやったぜと思ったのもつかの間、外を見たら真っ暗でこれだけで一日が終わってやっぱり絶望した。ってことが二度とないようにここにメモっておきます。

多分あんまり需要はないけど、解決策をググって調べてるとまぁそれなりに同じことで苦しんでる人もいるので、日本語でまとめておくのもいいかなと思って記事書きます。

# 前提条件

UEFIとか関係なく、NVIDIAのグラボ積んだパソコンにCentOS8をインストールしようとすると苦労することがあるよという話です。だいたいはオンボードグラフィックがあるので、こんなことで苦労するのはオンボードグラフィックがないマザボ買ってNVIDIAのグラボを積んだ~~クレイジーな~~人だけです（多分）。結論言っておくと、デフォルトのnouveauドライバが悪さしてるっていうお馴染みのことが原因です。

一応今回の記事で対象となるマシンの構成書いておくと、
マザボ: ASUS X99-E WS
CPU: XEON E5-2667 v4
グラボ: GTX1080

# CentOS8インストールUSBをMacで作る

既にいろんな人がQiitaでまとめてるけど、一応載せておきます。

### CeotOS8をダウンロードする。

https://www.centos.org/

### ダウンロードしたファイルisoをimgに変換

~~~
$ hdiutil convert -format UDRW -o CentOS.img CentOS.iso
~~~

### USBに書き込む

~~~
$ diskutil list
~~~

で、USBのディスクを見つけます。
ここでは、たとえば、/dev/disk3 として、

~~~
$ diskutil unmountDisk /dev/disk3
$ sudo dd if=CentOS.img.dmg of=/dev/rdisk3 bs=1m
~~~

"of="のところを"/dev/disk3"ではなく、"/dev/rdisk3"とすると書き込みが早くなるらしい。

> https://qiita.com/sira/items/0e7cc588276b8bec35ac

# CentOS8をインストール

BIOS画面のブート起動から、UEFIのUSBを選択して起動します。
起動したら、CentOSのインストールを選択する画面があらわれるので、上下キーで"Install CentOS8 ..."を選んだらクリックせずに、キーボードの"e"を入力します。
eを入力することで、起動コマンドを編集できるようになります。
選択画面の下の方に"Press 'e' to edit the selected items,..."と表示されていると思います。

ここで焦ってEnterで選択しちゃうと、その後真っ暗画面で進めなくなります。

eを入力したら、コマンドを編集できるようになりますが、そのなかで、

~~~
linuxefi /images/pxeboot/vmlinuz ... quiet
~~~

という行があるので、そのquietの後ろに、`rdblacklist=nouveau nouveau.modeset=0`を付け加えます。

~~~
linuxefi /images/pxeboot/vmlinuz ... quiet rdblacklist=nouveau nouveau.modeset=0
~~~

付け加えたら、Ctrl + x で実行します。

そしたらおなじみのインストール画面が立ち上がるので、インストールしちゃいます。私はとりあえず最小インストールしました。GUIいれると起動できずに詰む気がします。

# nouveauドライバを無効化

インストール後の最初の起動時にも、上と同様に起動コマンドを編集してnouveauドライバを無効にして起動します。でないと真っ暗な画面のまま進みません。

起動したら、nouveauドライバを無効にします。

~~~
# vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
# dracut --force
# reboot
~~~

これでいちいち起動時に起動コマンドを編集して立ち上げる必要がなくなります。

# nvidiaドライバインストール

必要なパッケージをインストール

~~~
# dnf -y install kernel-devel kernel-headers elfutils-libelf-devel zlib-devel gcc make
~~~

ドライバをhttps://www.nvidia.com/Download/index.aspx?lang=en からダウンロードして実行します。

~~~
# bash NVIDIA-Linux-x86_64-440.82.run --kernel-source-path=/usr/src/kernels/***.x86_64
~~~

`--kernel-source-path`を指定しないと私はErrorになりました。
> ERROR: Unable to find the kernel source tree for the currently running kernel. Please make sure you have installed the kernel source files for your kernel and that they are properly configured; on Red Hat Linux systems, for example, be sure you have the 'kernel-source' or 'kernel-devel' RPM installed.  If you know the 
correct kernel source files are installed, you may specify the kernel source path with the '--kernel-source-path' command line option.

~~~
Install NVIDIA's 32-bit compatibility libraries?
     Yes                                    No
（32bitライブラリをインストールするかどうか。Yesでいいんじゃないかと。）

Would you like to run the nvidia-xconfig utility to automatically update
your X configuration file so that the NVIDIA X driver will be used when you
restart X?  Any pre-existing X configuration file will be backed up.
     Yes                                    No
（Xの設定ファイルの更新。初めてのインストールであれば、Yesでいいんじゃないかと。）

Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64
(version: 440.82) is now complete.  Please update your xorg.conf file as
appropriate; see the file /usr/share/doc/NVIDIA_GLX-1.0/README.txt for
details.
                                       OK
~~~

インストールが終わったら、`nvidia-smi`とかうってなにか出たら成功です。

~~~
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82       Driver Version: 440.82       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| 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 1080    Off  | 00000000:05:00.0 Off |                  N/A |
|  0%   47C    P8     8W / 198W |    884MiB /  8116MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Off  | 00000000:06:00.0 Off |                  N/A |
|  0%   52C    P8    14W / 198W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GeForce GTX 1080    Off  | 00000000:09:00.0 Off |                  N/A |
|  0%   47C    P8     8W / 198W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
~~~

# ちなみに

途中でCentOSを諦めてUbuntuをインストールした時の話を少し。
インストール時はSafe Graphicモードでインストールすれば無事インストール画面が立ち上がりインストールできるのですが、その後GUIログインでログインループに陥りました。
`Ubuntu ログインループ`でググるとたくさん出てくるので、みんな困ってるようです。これもnvidiaのドライバが問題のようで、色々試してみたのですが解決しませんでした。
最終的にLightDMに変えたら無事ログインできました。
しばらく使ってみて、やっぱり使い慣れたCentOSがいいなと思ったので、Ubuntuはやめてしまいました。
インストールした時点でいろんなソフトも入ってるし、プリンタとかも設定されていたので、かなり使いやすいと思います。


# 参考
https://qiita.com/iaoiui/items/e736eb79fa1ad0875f83
https://serverfault.com/questions/786717/centos7-fresh-install-boots-into-black-screen
https://www.server-world.info/query?os=CentOS_8&p=nvidia