天天看點

Linux grub引導修複

  怎樣修複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試試。

個人學習筆記,不當之處還請指正。

----------不定期更新------------

繼續閱讀