1. 程式人生 > >Linux grub引導修復

Linux grub引導修復

很多時候,特別是在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試試。 個人學習筆記,不當之處還請指正。
----------不定期更新------------