Fedora 25以降のRedHat系Linuxで、NVMe搭載PCでインストーラがフリーズする場合


Fedora 25以降のRedHat系LinuxのインストーラやLive DVDで、一部のNVMe搭載PCでの起動時に、
A start job is running for Monitoring of LVM2 mirrors, ... (省略)
であるとか、
A start job is running for udev
あるいは、
Starting udev:
はたまた
mce: unable to init MCE device
と表示されたところでフリーズすることがある。また、Live DVDの起動時に、
unable to find a medium containing a live file system
というエラーで起動しないことがある。

このエラーへの対処方法は、Western Digitalのコミュニティサイトに書かれている
(https://community.wd.com/t/linux-support-for-wd-black-nvme-2018/):
NVMeはある閾値を上回る時間使われないとあるPower Stateに遷移するが、一部のNVMeは、
深く眠るPower Stateに入るとLinuxが起こそうとしても起きない。そのため、カーネルパラメ
ータ nvme_core.default_ps_max_latency_us の値を設定して、この値の時間(単位はus)を
越える時間使われないと遷移するはずの深い眠りのPower Stateは使用しないようにすると良い。

具体的には、インストーラの起動時に、「Install ..OS名..」を選択中に e キーを押して
編集モードに入る。そこで、「rhgb quiet」の直後に(スペース区切りで)以下のカーネルオプ
ションを追記する。
nvme_core.default_ps_max_latency_us=5500
それから Ctrl-X を押下してブートする。5,500usはサムスンのNVMeコントローラの動作か
ら類推された値で、他社製品でも経験的にうまく動作することが分かっている値である。

インストーラが起動して、正常にインストールが終わったら、その後の最初の起動時に、
やはり同様にして上記カーネルオプション付きで起動する。

常にこのカーネルオプション付きで起動するようにするため、次のように設定する:
/etc/default/grub を編集し、GRUB_CMDLINE_LINUX項目に上記カーネルオプションを追記する。
例えば、
GRUB_CMDLINE_LINUX="resume=UUID=(...ここは環境によって違う...) rhgb quiet nvme_core.default_ps_max_latency_us=5500"
のように編集して保存する。/etc/default/grub をブートメニューに反映させるために、次の
コマンドを打ち込む。例えばFedoraでUEFI環境の場合、
$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
とする。他のOSの場合は適宜 grub.cfg のパスを読み替えられたい。

戻る