怎樣修複grub開機引導
參考: http://www.xitongzhijia.net/xtjc/20141208/32106.html (推薦)
很多時候,特别是在linux調整分區後,開機重新開機時會出現 error : unknow filesystem grub rescue> 的字樣,系統就是進不去。這表示你的grub2的配置檔案壞了…… 由于分區調整或分區UUID改變造成grub2不能正常啟動,進而進入修複模式了(grub rescue),也稱救援模式。 在救援模式下隻有很少的指令可以用:set , ls , insmod , root , prefix
(1)set 檢視環境變量,這裡可以檢視啟動路徑和分區。 (2)ls 檢視裝置 (3)insmod 加載子產品 (4)root 指定用于啟動系統的分區,在救援模式下設定grub啟動分區 (5)prefix 設定grub啟動路徑
具體修複步驟如下: 1、檢視分區:grub rescue> ls 回車 會出現如下字樣: (hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1) 注:上面是我的分區裝置,每個人可能不一樣,但原理都是一樣的。 grub> find /boot/grub/grub.conf 也行 2、尋找ubuntu所在分區: (就是尋找你的Linux系統是裝在以上哪個分區裡) grub rescue> ls (hd0,msdos1)/ 若出現 unknown filesystem字樣,則嘗試下一個 …… 若出現的是你的ubuntu 主檔案夾下的檔案夾和檔案的名字,那就是的要找的分區了。
3、修改啟動分區: (假如你找到的啟動分區是hd0,msdos8) grub rescue> root=(hd0,msdos8) grub rescue> prefix=/boot/grub //grub 路徑設定 grub rescue> set root=(hd0,msdos8) grub rescue> set prefix=(hd0,msdos8)/boot/grub grub rescue> insmod normal // 啟動 normal 啟動 grub rescue> normal 之後你就會看到熟悉的啟動菜單欄了
4、進入指令行啟動ubuntu 進入系統啟動選項界面後還是進不去, 因為你還沒有真正的修改 grub, 這個要到 ubuntu 裡修改 進入系統啟動項界面後,按 C 進入指令行模式 grub > set root=hd0,msdos8 grub > set prefix=(hd0,msdos8)/boot/grub grub > linux /vmlinuz-xxx-xxx root=/dev/sda8 // 裡邊的 xxxx 可以按 Tab 鍵,如果有 acpi 問題 , 在最後加一句 acpi=off grub > initrd /initrd.img-xxx-xxx grub > boot 這樣就可以進入了
5、進入ubuntu修複grub 在終端裡運作 sudo update-grub sudo grub-install /dev/sda
6、重新開機,搞定!!
注:我當時隻是修改了1~3步驟,然後在菜單欄就可以進入系統了,且一切正常。 可惜,在重新開機時,系統就隻有一個光标在左上角不停的閃,咋也進不了系統。後來開機按F2,開機啟動項改為硬碟啟動就好了。
#################################################################################################
法二 首先制作 Ubuntu 啟動 USB 複制代碼代碼如下: sudo dd if=ubuntu-13.10-desktop-amd64.iso of=/dev/sdb1 #/dev/sdb1 為 USB 盤符 1.使用啟動 USB 進入 Ubuntu 試用環境 2.檢視硬碟分區狀況,擷取 Linux 系統安裝分區編号 代碼如下: sudo fdisk -l 檢視輸出結果,然後根據檔案類型和分區大小來判定 Linux 系統安裝在哪塊硬碟和安裝的分區。我的電腦是在 /dev/sda3 安裝了 Fedora。 或者,打開 Gparted 圖形化工具來檢視分區資訊也可以。 挂載 Fedora 安裝分區 3.已知 Fedora 安裝在了 /dev/sda3 上,是以我們可以用下面指令來挂載 Fedora 安裝分區。你需要将 /dev/sda3 換成自己的 Linux 安裝分區。 代碼如下: sudo mount /dev/sda3 /mnt 4.挂載其他所需的目錄(使用 --bind) 代碼如下: sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys 5.Chroot 到硬碟上的 Linux 系統 代碼如下: sudo chroot /mnt 【chroot指令把根目錄切換到指定目錄下】 6.安裝&更新 Grub 代碼如下: grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg 7.Grub 已經修複成功,我們還需要退出 chroot 環境、解除安裝已經挂載的裝置與目錄: 代碼如下: exit #退出 chroot 環境 sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt 8.重新開機。 #################################################################################################
可以進grub 這就好辦了 >root (hd0,x) 提示: 輸入(後 ,按 TAB鍵 自動補全 很好用的 。x表示你的linux根分區 >linux /vmlinuz ro quiet >initrd /initrd.lz >boot
先找到menu.lst菜單檔案: find --set-root /boot/grub/menu.lst 然後加載: Grub 指令索引configfile /boot/grub/menu.lst 菜單檔案可以換成grub.conf試試。
個人學習筆記,不當之處還請指正。
----------不定期更新------------