EndeavourOS(ArchLinux)インストール後、ブラックスクリーンになりました。
ArchLinuxって何か魅力的でついつい触ってみたくなります。
少し前に試してみたArchLinux + i3wm 環境では、あーだこーだしている内にpacmanの更新が上手くいかなくなっていき(パッケージの依存関係が崩れたり干渉したり色々)、ボディーブローの様にダメージが蓄積して結局やられてしまったのですが(心が...)、EndeavourOSなら何とかなりそうです。(今のところ...)
でもやっぱりArchなので、当たり前のように初手で躓きました。今回はその時の話です。
EndeavourOS 自体のインストールは簡単で、ArchLinux なのに歯ごたえが無く少し違和感はあったのですが、順調に進みました。
難なくインストールされた後ブータブルUSBを抜け、何となく不安を感じながらも特に何もせずインストールされたOSを起動してみると問題なく起動出来ました。(ここで完全に油断する)
ここから暫く vim などの必要なパッケージをインストールしたり、設定を弄ったりして ArchLinux を満喫。
がしかし、起動時の挙動を確認するために再起動すると画面に何も表示されなくなりました。 Alt + F1,F2
を押したりしても仮想コンソールは表示されません。何回再起動しても同じです。
自暴自棄になりアンインストールしかけたのですが、何とか堪えた(自身をコントロール出来た)ので記事にしておきます。
何が原因だったのか
暫く休憩して冷静になると、すぐに答えは出ました。
原因は... ただ Nvidia のドライバーがインストールされていなかっただけです...(小声)
起動時にwelcome to hell的な表示があったので起動自体は出来ていそう、仮想コンソールが表示されないのは画面出力が出来ていないからではないか?からのグラフィックドライバーだろうという推測から判明しました。
言い訳ですけど、インストール前にISOのライブ環境から起動する方法で for nvidia を選択していたのに nvidia のドライバーがパッケージに含まれてないなんて思わなくないですか?
解決方法
では復旧作業ですが、archLinux には 便利な chrootコマンド があるので、これを使ってドライバーをインストールしていきます。
ブータブルUSBから EndeavourOS のライブ環境を起動して bash を開きます。
まず、EndeavourOS がインストールされているドライブを確認。
lsblk -f
# ドライブ情報が表示されます
2つのパーティションにマウントします。ext4 と efi。
1つ目、ext4にマウント。
# ext4 システムパーティション
mount /dev/先程確認したext4のドライブ名 /mnt
efi は /efi の場合と /boot/efi の場合があるので一旦確認。
cat /mnt/etc/fstab
# 情報が表示されます
2つ目、efiにマウントします。
mount /dev/先程確認したefiのドライブ名 /mnt/efi # /efiだった場合
# または
mount /dev/先程確認したefiのドライブ名 /mnt/boot/efi # /boot/efiだった場合
2つともマウント出来たので、chroot します。
arch-chroot /mnt
ここからインストールされているOSを弄っていきます。
インストールされているパッケージ一に nvidiaドライバーが無いか確認します。
pacman -Qq
# インストールされたパッケージの一覧が表示されます。
nvidiaの表記はありませんでした。これで解決したも同然です。
ここで原因の nvidiaドライバーをインストールするのですが、nvidiaのドライバーは何種類かあるので使用しているグラフィックボードの型を確認する必要があります。
以下のコマンドで確認。
lspci -k -d ::03xx
# 結果
10:00.0 VGA compatible controller: NVIDIA Corporation TU117 [GeForce GTX 1650] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device 86b9
Kernel driver in use: nvidia
Kernel modules: nouveau, nvidia_drm, nvidia
# TU117 というのが型です
ArchLinux公式に適合表があります。
表と照らし合わせると TUXXX のドライバーは nvidia-open
でした。
ではパッケージをインストールします。
pacman -S nvidia-open
あとは chroot を抜けてアンマウントし、再起動すれば完了です。
exit
cd
umount --recursive /mnt
reboot
無事復旧出来ましたとさ。
無駄な時間を過ごした筈なのに達成感を得る事が出来ました。複雑な気持ちです。
直らないとき
他に原因があると思いますが、以下でシステム更新をすると正常に戻る場合があるので試してみると良いかも知れません。
上記と同じように chroot してから以下を順に実行します。
pacman -Syyu
pacman -S udev
pacman -S mkinitcpio # ここでエラーが発生する事がありましたが、繰り返すと上手くいきました。
pacman -S linux
mkinitcpio -p linux