Ubuntuのカーネルをアップデートしたらカーネルパニックが起きた時の解決方法
昨日、何気なくUbuntuのアップデートをしたら、カーネルが4.2.0-19-genericから4.2.0-21-genericにアップデートされた。いや、正確にはアップデートする途中でdpkgがエラーを出しているようだ。何やら脳裏に不安がよぎる。
リブートすると、"kernel panic not syncing unable to mount root fs on unkonown-block(0,0)"と表示されて止まってしまう。
仕方がないので、ブート時にShiftを押し続けてgrub2のメニューを出し、アップデート前のカーネルである4.2.0-19を選んでブートした。Ubuntuは、少なくとも一つ前のカーネルは残すので、カーネルをアップデートして、何らかの理由でそのカーネルに不具合がある時は、以前のカーネルを使うことができる。
さて、どうするのか。毎回これでは不便なのでとりあえず問題のある新しいカーネルを消してみることにした。
sudo apt-get purge linux-image-4.2.0-21-generic
ただしこれはlinux-genericのような仮想パッケージも消してしまうらしい。apt-get upgradeしても、新しいカーネルが依存関係にないのでインストールされなくなった。
再びlinux-genericをインストールしてみる。
sudo apt-get install linux_generic
結果、linux-headers-generic, linux-image-genericなどのパッケージがすべて入る。
依存関係を解決するために、言われるままに以下のようにする。
sudo apt-get -f install
その結果、linuxカーネルの4.2.0.21をインストールしようとするが、やはりdpkgが途中で止まって、ブートできない。
エラーメッセージをよく見てみると、どうやら、dpkgがlinux-image-extra-4.2.0-21-genericの.debファイルを展開する際にエラーになっているようだ。カーネルに問題があるのではなく、ダウンロード済みのパッケージファイルが何らかの理由で破損しているのだろうか。
ダウンロード済みのパッケージファイルを削除するには、apt-get cleanを使えばよい。
sudo apt-get clean
この結果、パッケージファイルを再びダウンロードし、今度は正しく動いているようだ。年のためにリブートして確認してみる。リブートできた。
~$ uname -r
4.2.0-21-generic
やれやれ。