長期使用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得到的結果實現新的跳轉啟動!
當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.modgrub 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