RSS

CentOSのUEFIブートエントリが失われた場合の対処

自宅で動かしているCentOSのサーバーの調子が悪く、メモリ差しなおしたりCPU取り付けなおしたりガチャガチャしている内に、ブート時にOSが見当たりませんという旨のエラーが出て起動しなくなってしまいました。

USBに焼きこんだFedoraのLiveイメージは正常にブート出来、見えなくなった筈のCentOSがインストールされたハードディスクも認識し、正常にマウント出来たことから、一体何が問題でサーバーがCentOSを見失ってしまっているのか謎でしたが、原因が分かりましたので備忘メモ。

今回、問題だったのは、サーバーのハードウェア周りで試行錯誤している際に、マザーボード上のボタン電池を一度取り外してしまったことでした。 CentOSをインストールする際に、サーバーのマザーボードファームウェアをレガシーBIOSモードではなく、UEFIモードで動作させていました。レガシーBIOSモードの場合、認識しているデバイスの一覧から、設定された優先順位にそって各デバイスでブートできないか試みていくのに対して、UEFIモードの場合、マザーボード上のNVRAMにインストール時にUEFIブートエントリという、起動時に必要な情報を書き込んでおり、起動時にはNVRAMからUEFIブートエントリを読み込み、ブートを試みるという仕様だそうです。NVRAMは、ボタン電池を取り外すとデータが揮発しまうので、今回、ブートする際に必要なUEFIブートエントリが失われ、ブートが出来なくなってしまっていたのでした。

回復には、UEFIブートエントリを手動で追加し直してやる必要があるということで、efibootmgrというコマンドが使えるそうです。 FedoraのLiveイメージにも含まれているため、こちらを参考にエントリの追加を実施したところ、無事起動するようになりました。