歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Ubuntu Linux

Ubuntu——grubrescue主引導修復

長期使用windows 和 ubuntu 雙系統的人,很有可能碰到重裝某一個系統,或者另外添加分區,導致系統重啟出現 :

GRUB loading
error:unknow filesystem
grub rescue>

轉載請注明出處:http://blog.csdn.net/jscese/article/details/36865449

一.概念

BIOS:"Basic Input Output System",中文名稱就是"基本輸入輸出系統"。其實,它是一組固化到計算機內主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啟動程序。 其主要功能是為計算機提供最底層的、最直接的硬件設置和控制。

MBR: “Master Boot Record” 硬盤的物理扇區,也叫主引導記錄!因為BIOS 很小無法承載啟動的運行程序,所以在bios檢測到一個硬盤後,將硬盤的0柱面、0磁頭、1扇區的內容經過簡單判斷後, 至內存中的指定位置,然後跳轉至這個位置,開始從這個位置運行,大小為512個byte,其中主要存放引導程序和該硬盤的分區表。

GRUB:“GRand Unified Bootloade” 多重操作系統啟動管理器,就是運行這個GRUB之後可以通過它來引導進入其它的系統,包括window以及linux

上面三個概念,從字面意思上應該能明白他們的流程,大體是:

PC 首先啟動到BIOS ,然後檢測硬盤的MBR,將MBR這塊扇區的內容(也就是寫在上面的GRUB)裝入內存運行,再通過運行GRUB得到的結果實現新的跳轉啟動!

二.Ubuntu的grub2 修復

當PC 是先裝windows後裝ubuntu 或者只有一個ubuntu系統,是將ubuntu系統自帶的grub2 引導程序寫在了MBR上的話,那麼開機的主引導程序就是grub2 ! (ubuntu 自9.10之後就全部使用的grub2)

而grub2 分為兩部分,其中一部分寫入MBR,其中一部分存在與ubuntu的/boot/grub 目錄下。

而出現 grub rescue> 就是代表MBR部分的無法正常運作grub程序,啟動grub 救援模式,因為無法找到/boot/grub部分。

grub rescue下可用命令:

set,ls,insmod,root,prefix(設置啟動路徑)

首先通過 ls 查看所有的分區,會列出:

(hd0),(hd0,msdos8),(hd0,msdos7),(hd0,msdos6),(hd0,msdos5),(hd0,msdos3),(hd0,msdos1)

需要找到ubuntu的安裝分區,通過ls (hd0,msdos*)/boot 直到不出現:error:unknown filesystem

如果知道開始安裝ubuntu 在哪個分區的話,比如sda7 那麼這裡就是msdos7,如果是在ubuntu 硬盤空間之前的地方進行了添加分區,那麼就把ubuntu的分區序號往後移!變成msdos8

找到之後通過如下命令設置設置一次性啟動參數:

grub rescue>setroot=(hd0,msdos8)
grub rescue>set prefix=(hd0,msdos8)/grub
grub rescue>insmod /grub/normal.mod
grub rescue>normal 就會出現boot/grub 中的啟動界面了!

如果/boot/grub沒有損壞,就能進入ubuntu 系統啦,如果grub啟動ubuntu的部分損壞了,就需要手動引導了:

進入grub命令行:

grub> root (hd0,8) ## 指定包含vmlinuz-2.6.18-274.7.1.el5和initrd-2.6.18-274.7.1.el5.img的partition
grub> kernel /boot/vmlinuz-2.6.18-274.7.1.el5 ro root=/dev/sda8 ## root= 是指定包含/sbin/init的partition,即掛載/的partition(以Linux的角度)
grub> initrd /boot/initrd-2.6.18-274.7.1.el5.img ## 據說這項可以省略
grub> boot

在正確進入了ubuntu之後,需要更新MBR的grub部分來適應新的分區情況:

終端輸入:

sudo update-grub2
sudo grub-install/dev/sda
更新到 /boot/grub/grub.cfg 中!然後再把grub 安裝到主硬盤的MBR

有遇到過這樣安裝不成功的,在GRUB2手冊中有另外的重裝grub2 到MBR 的方法,記錄一下:

此方案安裝會使用 chroot 指令來存取受損系統的檔案。
一旦執行了 chroot 指令,LiveCD 會將損壞系統的 / (根目錄)當作是目前自己所使用的。
在 chroot 環境中執行的指令會影響受損系統的檔案系統,而不是 LiveCD 的。
1. 開機進入 LiveCD 桌面(Ubuntu 9.10 或更新版)。注意此 LiveCD 必須要與您現在欲修復系統的版本相同 - 無論 32-bit 或是 64-bit(否則 chroot 會失敗)。
2. 開啟終端機 - 應用程式,附屬應用程式,終端機。
3. 確認您的標準系統分割區 - (選項是小寫的「L」)
sudo fdisk -l
若您不確定,執行
df -Th
找到正確的磁碟容量及 ext3 或 ext4 格式。
4. 掛載您的標準系統分割區
用正確的分割區替換:sda1, sdb5 等等。
sudo mount /dev/sdXX /mnt #範例:sudo mount /dev/sda1 /mnt
5. 若您有獨立的 /boot 分割區:
sdYY 是 /boot 分割區的位置(例如 sdb3)
sudo mount /dev/sdYY /mnt/boot
6. 掛載重要的虛擬檔案系統:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
7. Chroot 至您的標準系統裝置:
sudo chroot /mnt
8. 若系統中沒有 /boot/grub/grub.cfg 或其內容不正確,使用以下指令重建
update-grub
9. 重新安裝 GRUB 2:
以正確裝置替換 - sda, sdb, 等等。不要指定分割區號碼。
grub-install /dev/sdX
10. 驗證安裝(使用正確的裝置,例如 sda。不要指定分割區):
sudo grub-install --recheck /dev/sdX
11. 退出 chroot:按下鍵盤之 CTRL-D
12. 卸載虛擬檔案系統:

sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
若您有掛載獨立的 /boot 分割區:
sudo umount /mnt/boot
13. 卸載 LiveCD 的 /usr 目錄:
sudo umount /mnt/usr
14. 卸載最後的裝置:
sudo umount /mnt
15. 重新開機。sudo reboot
Copyright © Linux教程網 All Rights Reserved