一、安裝到mbr(mbr=Master Boot Records,主引導記錄區)
因為安裝windows,或者不小心刪除/改變了mbr,都有可能導致啟動時看不到grub的引導菜單或者提示出錯,下面是恢復的辦法
(寫於Ubuntu下,但應該可適用於其它系統)
使用Ubuntu livdCD啟動,出現桌面後,打開一個終端,輸入:
sudo grub
然後在grub>下輸入
grub>find /boot/grub/stage1
查找到grub的文件所處的位置,如果安裝了多個linux系統,會全部顯示出來,看好Ubuntu的/boot/grub/所在的位置,然後
grub>root (hd?,?)
(hd?,?)中的問號用Ubuntu下的/boot/grub/位置取代,比如上面的find命令查找結果是hd(0,1),那這兒就是root(hd0,1)
使用下面的命令把grub安裝到mbr上:
grub>setup (hd0)
退出
grub>quit
解釋一下:
sudo grub得到grub命令解釋器
find /boot/grub/stage1用來查找stage1文件的位置,它告訴我們grub的文件在哪兒。只有一小部分grub放在mbr上,其它部分位於你的boot文件夾。grub需要這些文件來安裝。
最後setup(hd0)把grub安裝到hd0。當使用hd0參數而沒有提供具體分區時,grub安裝到mbr。grub認為hd0是第一個硬盤的mbr區標志。
二、安裝到其它分區
thanks to 5-HT
如果想把grub安裝到一個分區而不是mbr上,把setup (hd0)改成setup (hdx,y)。X表示是第幾塊硬盤,Y是這塊硬盤上的第幾個分區。grub的計數方法是從0開始(如hd0,1表示第一塊硬盤上的第2個分區)
三、如果grub找不到stage1文件或認不出硬盤
thanks to TOSK
1.使用livdCD加載/root分區
sudo mkdir /mnt/root
sudo mount -t ext3 /dev/sda6 /mnt/root
2.在/mnt/root下加載proc與udev
sudo mount -t proc none /mnt/root/proc
sudo mount -o bind /dev /mnt/root/dev
這樣grub能認出你的驅動器樂。下一步:
sudo chroot /mnt/root /bin/bash
關於chroot,參見:
什麼是chroot
linuxfocus.org/ChineseGB/January2002/article225.shtml" target=_blank>chroot linux中所有的服務
然後如果想安裝grub到mbr上,見一,想安裝到一個分區,見二
俺做過的事:
(一)安裝到mbr上,這台機器上有3個os,都能良好運行。
(二)安裝到一個分區,這台機器上也有3個os,俺安裝到hd(2,0)上,結果剛開始時grub菜單沒出現,因為電腦是默認從hd0上找啟動器的,後來改成從hd2啟動,就解決問題了。