意外執行 grub-install 不正確,現在有 grub 提示但沒有菜單
tl;博士:我粗心大意
grub-install
,然後“正確地”重新發布了它,目標是 /boot 文件系統,/dev/sda1
但它沒有讀取grub/grub.conf
,除非我明確告訴它使用 grub 提示工具在哪裡查看。我該如何解決?我有一個關鍵的 CentOS 5 系統,帶有多個不可熱插拔的硬碟。順便說一句,這是個壞主意。
第一個驅動器包含 /boot,然後是作業系統和數據的兩個鏡像 mdraid 分區。第二個驅動器只包含兩個 mdraid 分區。
第一個驅動器正在慢慢消亡,所以我添加了第三個驅動器來為不可避免的情況做準備。我複制了第一個驅動器的分區佈局,將其添加到 mdraid 鏡像中,然後用於
dd
將 sda1 複製到 sdc1。昨晚我有一個硬體維護視窗,無論如何都需要重新啟動機器,所以我想我會藉此機會將 sdc 切換到啟動驅動器。因為我只複製了分區佈局和第一個分區,而不是整個驅動器,所以我認為 sdc 無法啟動。所以在調整 fstab 之後,我使 sdc1 可啟動並用於
grub-install
確保 grub 可以處理事情。只有我粗暴地使用了命令並輸入了
grub-install /dev/sda
.它給了我一個關於在 BIOS 驅動器列表中找不到驅動器的警告,所以我認為它沒有做任何有害的事情。我重新發出了命令定位
/dev/sda1
,但得到了同樣的錯誤。唔。哦,好吧,它可能什麼也沒做,對吧?是的。不。當系統在重新啟動後沒有恢復時(在控制台上一遍又一遍地列印 GRUB GRUB GRUB),我知道我被搞砸了。顯然,我所做的事很常見。
我將機器啟動到一張 live CD 中,用於
dd
對 sda 和 sdc 上的 MBR 進行核對,安裝 sda1 的 /boot 副本,發出正確的命令(包括要求它探測驅動器列表並提供實際的文件系統位置),並且重新啟動。出現的是蠐螬殼。我能夠發出root (hd0,0)
並configfile grub/grub.conf
進入啟動菜單,但我會假設如果我正確發出命令開始,那麼它會立即看到菜單。所以,我的關鍵系統執行良好。我只能在不久的將來重新啟動它一次,所以我想正確處理這個問題。
所以,我的問題:
- 目前的引導進入 grub-but-not-seeing-any-configuration 是否可以在不重新執行的情況下修復
grub-install
?我現在很害怕這件事。- 如果我必須
grub-install
再次呼叫,正確的方法應該是什麼?我曾經grub-install --recheck --root-directory=/path/to/sda1/boot /dev/sda1
把它變成現在的狀態。
我有類似的配置:通常我在鏡像 mdraid 分區上創建 /boot,然後在每個驅動器的 MBR 上安裝 grub,以便伺服器可以在任何驅動器發生故障的情況下啟動,其餘的(即除 MBR 程序階段之外的所有內容)無論如何都是用mdraid複製的,
趕緊跑
grub-install --recheck /dev/sda grub-install --recheck /dev/sdb
你需要在 MBR 上安裝 grub,而不是第一個分區。它將拾取 1.5 階段文件並啟動核心,核心將切換到 mdraid 分區等的根目錄。
這是我的配置的樣子,實際上沒有什麼特別的,是的,它是 Centos 6,但它是同一件事:
設備圖
[root@main ~]# cat /boot/grub/device.map # this device map was generated by anaconda (hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc (hd3) /dev/sdd
菜單.lst
[root@main ~]# cat /etc/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_main-lv_main_root # initrd /initrd-[generic-]version.img #boot=/dev/md0 default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title CentOS (2.6.32-358.14.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/vg_main-lv_main_root rd_NO_LUKS LANG=en_US.UTF-8 rd_MD_UUID=7d8cff6b:744c0786:023226e9:536570ed rd_LVM_LV=vg_main/lv_main_root rd_LVM_LV=vg_main/lv_main_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM quiet initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img