grub救援注意事項與經驗分享

Home Home
引用 | 編輯 lawrencelu71050
2008-11-13 21:47
樓主
推文 x0
我想大家可能有此經驗,重新安裝xp的時候,grub開機選單不見,原因是xp會把mbr給覆蓋,要把MBR救回很簡單,首先用linux安裝光碟開機,會跑出一個畫面,按下enter就是開始安裝,這時候要按下F5-Rescue,輸入linux rescue(enter)
Choose a Language選English,Keyboard Type選us,Setup Networking選no,接下來這很重要,會跑出問說是否要把根與開機目錄掛載到/mnt/sysimage
這時候程式開始搜尋,成功之後會跑出Your system has been mounted under/mnt/sysimage,enter進入文字
模式,這時候要查說當初grub是裝在mbr還是linux自己分割區上面
這非常重要,因為如果當初grub是預設且沒有類似spfdisk之類開機選單的話,就是裝在mbr上面,那事情就很簡單,萬一當初有使用spfdisk 來建立開機選單的話,就不能裝在mbr上面,而是linux自己分割區,萬一裝錯的話,把grub裝在mbr上面的話,spfdisk開機選單要重建了, 不確定的話先輸入:df -h看分割區狀態,不過這時候都是掛載到/mnt/sysimage/底下,如果當初boot有獨立分割的話,那grub就要裝在那邊,如果沒有的話,那就是在根底下
df -h就會顯示說是/dev/hda或是/dev/hdb,Fedora7之後是/dev/sda,不確定的話fdisk -l(小寫L)看硬碟所有分割區狀態

想要知道hda幾是根,或是boot的話
e2label /dev/hda幾,剛才fdisk -l就可看到linux分割區在哪邊,Windows分割區在哪邊,像我之前有把boot獨立出來,所以也就是/dev/hda6,
更快的方法是輸入blkid,就可以看到所有的,圖片我根就在/dev/hda7,boot就在/dev/hda6,Windows就在1和5

想一下如果當初安裝的時候是進階設定開機選單的話,想一下當初是裝在mbr還是linux開機分割區第一個分割區上面

如果知道grub是裝在mbr還是linux自己分割區上面的話
首先輸入:chroot /mnt/sysimage
grub是裝在mbr上面的話:grub-install /dev/hda
linux分割區的話:grub-install /dev/hda6(舉例)
exit就會重開機,記得光碟片要拿出來
如果要備份mbr的話
dd if=/dev/hda of=mbr.dat bs=512 count=1
要看剛才建立的檔案的話,就打上hexdump -c mbr.dat
如果有spfdisk那文字的話,就代表mbr裡面有spfdisk,grub就要裝在linux自己分割區
如果要還原mbr的話: dd if=mbr.dat of=/dev/hda
大家看/boot/grub/menu.lst的時候,會看到
linux與其他os的選單,有hd0,5和hd0,0

這hd0,5的意思是這grub硬碟分割區序號是從0開始,linux從1開始
硬碟主分割可以分割四個,但實際上只能分割三個,因為最後一個要建立延伸分割區,由延伸分割區在分割邏輯分割區
所以也就是主分割hd0~hd2,hd3就是延伸,hd4之後就是邏輯,所以fdisk -l 就可以得知
hd0是windows的c槽
hd4是windows的D槽
hd5是linux的/boot分割區
hd6是linux的/分割區
可是linux是從1開始,所以hd5就等於hda6
hd6等於hda7以此類推
最後祝大家成功,雖然說很長,但也是提醒要注意事項與經驗分享


獻花 x0
引用 | 編輯 f117a
2009-01-04 02:43
1樓
  
這得確很有用,要安裝多系統的話的確要特別的注意.

獻花 x0
引用 | 編輯 mnbmnb5266
2010-08-19 20:55
2樓
  
啊,寫的很詳細嗎,雖然我暫時用不到,但是還是幫你推一下吧

獻花 x0