2015-12-18

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

やれやれ。

No comments: