yum update後の再起動でkernel panicになった話

Linux Server

結論から

経緯はともかく、解決策の結論を言えば、OS起動時のブートメニュー画面で更新前の古いバージョンのカーネルを選択して起動すると、起動できました。

その上で、sudo yum reinstall kernelで再インストール。

経緯

細かいことは書きませんが、単純にyum updateを実行、その後httpd(だと思う)がパスワードの入力を求めてきましたが、入力しても反応なし。

にっちもさっちもいかかないので、OS再起動を実施。

すると、通常は[OK]で始まる行がずらずら出てくるはずですが、それが一向に出てこない。

よく見ると、No filesystem could mount root, triedとか、Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-blockとかあり、最後にKernel Offset...で止まったままです。

Kernel panicか……。

結構焦りました。

(まぁ、やり方が悪いかったと言えば悪かったのだけど)

GRUB2のブートメニューから旧バージョンを選択できる

旧バージョンというのは、更新前の旧バージョンのカーネルのことです。

VPSを使用しているのですが、なぜか起動直後のブートメニューが出てこなくてGRUB2まで壊れたのかと焦りましたが、そうではなくコンソール画面(VPSなのでブラウザで操作している)を素早くリロードしたら出てくれました。ブートメニューの表示時間が思ったより短かったようで、タイミング的に画面に出てきてなかっただけのようです。

で、ブートメニューから旧バージョンのカーネルを選択し(今回の場合は2行目に出てくる)、すると無事に起動。他のサービス類もちゃんと起動してくれました。

起動後に再度kernelをインストール

yum reinstall kernelを実行しました。今度は、きちんとインストールできていたようで、rebootして起動できることを確認。

無事に事なきをえました。

ひやひやしましたけどね。

バックアップは忘れずに

まぁ、一応バックアップは取得していますが、こういうことが起こることも想定してこまめにバックアップは取得しておきましょう。

あと、基本的には同一パッケージがインストールされている検証環境でテストした後に本番環境に適用することが望ましいですが、パッケージのリビジョンが上げられていて取れないこともあるので、最悪ぶっつけ本番をしないといけないこともあります。

この辺りの対処も課題ですね。

まぁ、重要な情報はインターネットに接続しているサーバーには一切置いていませんが(それが大事だという気はしている)。