TL;DR
pacman -Syu (linux パッケージをアップデート) する時は、 /boot のマウントがちゃんとされているか確認しようという話.
OS: Arch Linux 4.13.11
今回起きた起きた現象
インターネットに繋がらない
- Ethernet Controller が動いていない
-
$ lspci -v | grep -10 Ethでみたとき,kernal modules: e1000eがなくなったり, 色々[disabled]になったりしていた.
-
-
$ ip addr showだとか$ ifconfig -aだとかでloしか表示されない. - NFS 関連のエラーが起動時に起きる.
バージョン違う!?
-
pacman -Q linuxと,uname -aで linux のバージョンが異なる状態になっている.
やったこと
$ pacman -U /var/cache/pacman/pkg/linux-<元のバージョン>
で, 元のバージョンに戻してから, リブート,
すると, 正常に起動した (ように見えた) ので
$ mount /dev/<bootファイルが置いてあるパーティション> /boot
を実行し, ちゃんと boot がマウントできていることを確認した後に,
再度,
$ pacman -S linux
を実行した.
今回起きた問題の原因
$ pacman -Syu で linux kernel のバージョンを上げた際に, 起動時に読み込まれる設定にしているディスクにカーネルイメージを書き込むことができていなかった.
→ ディスクを /boot にマウントできていなかった.
インターネットに繋がらなかった原因
ネットワークアダプタードライバ download link (= Ethernet の Driver ?) であるところの e1000e という kernel module がアプデの影響により、/lib/modules/4.13.11-1-ARCH/ のディレクトリにあるのに対して、実行されている ( $ uname -a で表示される) linux kernel は 4.13.7 だった.
これにより、起動しているカーネルでは、ネットワークドライバが認識されていない (そんなドライバ存在しないよ!) 状態だった.
e1000e ないこと以外にも, lsmod で表示されるモジュールが明らかに少なかった
備考
当初、systemctl や netctl の profile 関連のファイルをいじって解決しようとしていたものの, それ以前の問題だった.
$ systemctl restart network
とか,
$ netctl start <mypropile>
をやった後,
$ journalctl -xe
で出力されるログに
Cannot find device <設定した interface 名>
とか表示されて絶望しそうになっていた.
$ lsmod
で、 e1000e が表示されなかったりしたことから、kernel module の問題では? と考えた.
そこで,
$ find /lib/modules -name e1000e -print
を実行したことで, 先述したインターネットに繋がらなかった原因に気がついた.
その後、研究室の先輩に 「アプデの時に /boot がマウントできてなかったのでは?」 というアドバイスをいただいたことにより解決に至った.
最後に
他にも同じような問題を起こす方がいるかもしれないと思ったので, 備忘録も兼ねて記事にしてみました.
Arch Linux 初心者のため, 記事には表現の間違いがあるかもしれません.
間違いを見つけた際は, よろしければ, コメントにてご指摘いただけると嬉しいです.