星期一, 11月 30, 2009

踩到grub 地雷

前幾天在更新debian (sid) 的時候有看到grub 的更新,每次看到這個就心有餘悸,好像更新grub 都沒什麼好事會發生,但我還是把 /boot remount 為 rw 給他更新下去了。
昨天重開機才發現這果然是bad idea,grub 整個壞掉,出現的訊息是:

Error: the symbol 'grub_gettext' not found
好險我都還有留安裝用的 usb flash,啟動 rescue mode 以後到他要你選擇 root partition 時,切到tty2 (Alt+F2),把系統mount 起來並chroot 進去:
mkdir /tmp/mnt
mount /dev/sda2 /tmp/mnt
mount --bind /dev /tmp/mnt
chroot /tmp/mnt
接下來就相當於用原本的系統開機了。重新安裝 grub :
/usr/sbin/grub-install /dev/sda
 這樣grub 應該就裝好了。 但是我 reboot 後發現還是不行,他會說 "you need to load kernel first" 也就是沒有找到 kernel image 的意思。問題在於我的 /boot 是分開一個 ext3 的 partition,所以 grub 自動安裝的時候,root 會選錯。這裡只要把 /boot/grub/grub.cfg 裡面的
/boot/initrd.img-2.6.xxxx

/boot/vmlinuz-2.6.xxxx

改為
/initrd.img-2.6.xxx
/vmlinuz-2.6.xx
就可以用正確的路徑 boot 了, hooray!

沒有留言: