この話には前日談(以下のリンク)がある。
pacman -SyuでXとネットワーク回りがぶっ壊れた(2019/06/03)-とけろぐ
「これだからArch Linuxはクソ」
とか言っていたけれども
結局自分の知識不足による設定の誤りが原因だったことが判明した。
ごめんなさい(._.)、Arch Linuxもう2度と悪く言いません。
端的にいうと、EFIシステムパーティションESPを/bootにマウントしていなかったことが原因だった。
[Masanoriのプログラミング日誌]Arch Linuxでカーネルを更新したのにバージョンが古いままだった件 (環境の問題)
このブログ記事のおかげで解決した。感謝。
この記事ではブートローダーとしてGRUBを使っているが、私はブートローダーとしてsystemd-bootを使っているということ以外は何も違いがないのだが、自分の勉強のために一応記録に残しておくことにする。
2019年6月にインストール4月5月頃以来初めての
# pacman -Syu
をしたところ
startxしてもXが起動しなくなった。
有線無線ともにネットワークが使えなくなった。
という2つの症状が出た。そのときは原因が分からなかったので、linux(カーネル)だけdowngrader[AUR]でダウングレードしてだましだまし使っていた。
2019年8月23日、再び
# pacman -Syu
をしても同じような症状が出たので、原因を究明してみることにした。
ちなみにstartxしたときは下記のようなエラーメッセージが出た。
modprobe: FATAL: Module i915 not found in directory /lib/modules/5.0.7-arch1-1-ARCH
modprobe: FATAL: Module i915 not found in directory /lib/modules/5.0.7-arch1-1-ARCH
(EE) Fatal server error:
(EE) no screens found
エラーメッセージにあった/lib/modules/の中身を覗いてみると、エラーメッセージの言うとおり5.0.7-arch1-1-ARCHというディレクトリはなかったが、5.2.9-arch1-1-ARCHというディレクトリは存在して、その中にi915というファイルもあることに気づいた。
そこからどこかでカーネルのアップグレードがうまくいかず、カーネルのバージョンがちぐはぐになっているのではないかと感じた。
/proc/versionの中身を見て、カーネルのバージョンを確かめたところ、5.0.7となっていた。
一方、# pacman -S linuxでは「linux-5.2.9.arch1-1 is up to date」と言われて、Pacmanは現在のカーネルのバージョンは5.2.9と認識していることが分かった。
このちぐはぐな状態についてGoogle検索をかけたところ、上記のブログ記事を見つけて原因が判明した。
→/bootがマウントされていなかったので、新しくインストールしたファイルをうまく書き込むことができなかったのだ。
arch-chrootで破壊されたシステムに入る。
ESPである/dev/sda1を/bootにマウント。
# pacman -S linux
(Linuxカーネルの再インストール)
/etc/fstabに
/dev/sda1 /boot vfat rw,relatime 0 2
と書き込んで、起動するたびに(?)、/dev/sda1を/bootにマウントするよう設定する。
(私はvfatのところをfat32にしていて少し嵌った。)
これで万事解決。
カーネルを最新状態に保つためにESP は/bootにマウントすることが推奨されています
と、Arch Wikiのsystemd-bootのページにもしっかり書かれていた。愚かであった。
解決してスッキリ!