CentOSでサーバを構築中にカーネルパニックに遭遇したのでその対処方法を残しておきたいと思います。
サーバ会社から引き渡された直後に、少し設定変更をして再起動をしたらOSが起動せず… IPMIの仮想コンソールを開こうにもJavaのセキュリティ制限に阻まれ四苦八苦しましたが、ようやく何が起きているのかを確認する事ができました。
原因はカーネルが正しくインストールされていなかった事みたいだったのですが、今後のためにやった事などを書いておきます。
目次
スポンサーリンク
カーネルパニック時のメッセージ
IPMIで繋いだ仮想コンソールには不吉なKernel panicの文字とこのようなメッセージが。
メッセージを調べるとyumアップデート後にこれになっている人がチラホラいるみたいで、kernelのインストールに失敗するとこうなるみたいです。
VFS: Unable to mount root fs on unknown-block(0,0) の対処方法
起動しようとしたkernelには不具合が起きているので、一度機器を再起動させて古いkernelを選択して起動してあげます。
この場合、一番上が最新で問題が起きたkernelなので、二番目を設定して起動します。
無事、起動できたらGRUBの設定で、kernelの起動順序を変更します。CentOS6まではgrub.confを編集すれば良かったのですが、CentOS7からは下記コマンドから変更します。
## 現在の設定を確認 (問題のカーネルで起動するようになっている) # grub2-editenv list saved_entry=CentOS Linux (3.10.0-1062.1.2.el7.x86_64) 7 (Core) ## インストールされているカーネルの確認 ## 0番目は不具合があるので1番目に変更する # awk -F\' '=="menuentry " {print i++ " : " }' /etc/grub2.cfg 0 : CentOS Linux (3.10.0-1062.1.2.el7.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) 2 : CentOS Linux (0-rescue-8809d399e3824934a6f54236364ad05e) 7 (Core) ## 起動順序を変更 # grub2-set-default 1 ## 正常性確認のため再起動 # reboot
ここでは念の為、古い方のカーネルだと正常起動できるかどうかを確認しています。先程、このカーネルを手動で指定して起動させているのですが念の為です。
無事、起動してくると思うのでそしたら問題のカーネルを再インストールします。
# yum reinstall kernel-3.10.0-1062.1.2.el7.x86_64 # reboot
再インストールをするとGRUBは勝手に更新されるので、また新しい方のカーネルが使われます。
これで正常に起動してくれば前回のカーネルインストール時に何か問題が発生していたと考えて良いと思います。
納品前にカーネルをアップデートしたら再起動しておこう
自分に渡された直後に早速起動しなくなってしまい「あれ?やらかしちゃった?」と心配していましたが、復旧後にhistoryコマンドを見てみたらyum updateが実行されていて、問題はその時にインストールされたkernelだったみたいです。
yum updateをしてくれるのは別に良いのですが、historyでもlastコマンドでも再起動の痕跡は見当たらなかったので、今回は代わりにハマってしまった感じです。
一度運用が始まるとOSを再起動する機会はほぼ無いですが、正しく再起動する事も含め納品前には確認しておきたいですよね。