/etc/grub.conf の設定を削除して再起動したら起動できなかった話

普段、/etc の下のファイルなんてそうそういじったりするわけじゃないんですが。
ちなみに、起動できなくなってしまったのは GuestOS(CentOS 5.4)です。なので、HostOS から入ってなんとか起動できました。
発端は、以前 GuestOS の時計が狂いまくっていて、HostOS と時間の同期とるという設定をこのファイルに追加したためでした。
その設定をしたのが半年くらい前で、その時使用していた Redmine のチケットに「下記設定を追加」と書いていたので、すべて新規で追加したと思ってしまったんです。で、まるごと消しちゃったんです。(よく見れば分かりそうなのに…)
/etc の下を、etckeeper とかでちゃんとバージョン管理していなかったのも悪かったのです。反省。

# 設定を追加したとかかれていた部分↓
kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10 clocksource=acpi_pm


それで reboot かけたらいつまでたっても立ち上がらない…。HostOS からコンソールを開いて確認するとなんか変な画面で止まってる。おかしいなぁと思って調べてみると、「/etc/grub.confの設定に従い,Linuxカーネルが読み込まれます。」とか書いてあるサイトを発見。
そこでやっと気づきました。まるごと消しちゃいけなかったんだって。よく考えたら kernel 読み込むところ削除してるし。そりゃ起動しないよ。
7GNU GRUB を使用してシステムを起動する方法 を参考にすると、grub.conf に書かれている設定を一行ずつ実行していけばいいっぽい。でも、そのファイルに何が書かれていたのか分からない…終わった…。と絶望しかけたとき、そういえば他のプロジェクトで使ってるサーバも、バージョン一緒だったことを思い出しました。急いで接続し、その内容を起動しなくなった方のサーバで下記のように実行しました。

  • とりあえず、CentOS がこれと同じならそのまま使えます。
# 起動パーティションを指定
grub>root (hd0,0)
# Linuxカーネルを読み込む
grub>kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
# initrd を展開
grub>initrd /initrd-2.6.18-164.el5.img
# 読み込んだカーネルを使用し、システムを起動
grub>boot


成功!よかったよかった。冷や汗かきました。/etc の下をいじるときは、もっと慎重にならないとダメですね。あとバージョン管理の大切さが身にしみました。
今回はじめて initrd とかを知りました。こんなの今まで何も考えてなかったので、勉強になりました。
参考 : initrdとは