開機出現 grub rescue 指令模式
假如看到grub rescue,表示mbr (master boot record)的資料,完全對應不上磁盤的狀況,所以無法辨別系統的所有磁區,更不用說連grub menu都無法讀入,可以grub程式有問題,找不到系統所在磁區,
ls
# (hd0), (hd0,msdos3), (hd0,msdos2), (hd0,msdos1)
# ls可以列出所有的硬碟與磁區,(hd0)是第一個硬碟,(hd0,msdos1)是第一顆硬碟的第一個磁區,以此類推,輸入指令時,可以簡寫成(hd0,1)表示,若是GPT分割,出現的會是(hd0,gpt0)的格式,
# 只出現(hd0),那表示你的磁區表已經損壞;
ls (hd0,1)/
# 確定各個磁區那個是 / ,哪個是/boot,就可以開始繼續處理,現在假設 / 是(hd0,2),/boot 是(hd0,2)/boot,
- /boot/grub下的i386-pc或者x86_64-efi目錄,是放置grub模組所在
- 前者出現在以mbr開機的系統,
- 后者出現在efi開機的系統 ,
#正式設定
grub rescue> set root=(hd0,2)
grub rescue> set prefix=(hd0,2)/boot/grub
grub rescue> insmod normal
grub rescue> normal
第一行指令:設定根目錄所在的磁區
第二行指令:設定grub目錄,這樣他才知道哪里去找模組,此行設定錯誤,第三行指令執行時,就無法載入模組,假如你的 /boot 沒有額外分割,那這行就要寫成 set prefix=(hd0,2)/boot/grub
第三行指令:載入normal模組
第四行指令:執行normal模組
normal模組作用是什麼?
會把一些指令,檔案系統模組,及其他需要的模組自動呼叫進來,假如你的grub.cfg沒有問題,應該就可以看見grub選單了,
開機出現grub指令模式
-
這類問題通常發生在,mbr可以找到對應的磁盤與各磁區,卻無法找到可用有效的grub.cfg,不能加載內核檔案
-
這時候,相關的模組已經載入,所以比grub rescue好處理
-
同樣用 ls 找出相關的磁區,并檢查哪個磁區是根目錄,哪個磁區是 /boot ,方法與之前的grub rescue相同,
grub> set root=(hd0,2)
grub> linux /boot/vmlinuz-3.11.0-18-generic root=/dev/sda3
grub> initrd /boot/initrd.img-3.11.0-18-generic
grub> boot
# 第一行:設定根目錄所在的磁區
# 第二行:設定核心所在,并設定根目錄所在磁區
# 第三行:設定虛擬系統啟動核心所在,
# 注:如果是grub0.9.8.e即grub-legacy在開機區,那么需要把linux改成kernel
# 第四行:開機,直接進入系統沒有選單
可見到grub menu,但無法開機
系統可以找到grub.cfg,但是上頭的資料有問題,無法找到核心,常發生在變更分割表后,因grub無法辨識uuid或者label造成
處理grub的例外狀況
-
檢查并修改 /etc/fstab :
/etc/fstab 是系統掛載磁區的必要檔案,請確認里面的uuid是否與實際狀況相符?實際的uuid可以藉由sudo blkid取得,若有不符的狀況,請修改,現在ubuntu已經默認使用uuid來辨識磁區,這種辨識方式,可以避免系統的混淆,當然他仍支持以往用設備名稱辨識的方法, -
更新 /boot/grub/grub.cfg :
sudo update-grub sudo update-grub2 -
重新安裝grub到磁盤開頭的開機區
sudo grub-install /dev/sda
-
若有問題,可能需要強制安裝
sudo grub-install /dev/sda --force # 若不是/dev/sda,請自行修改, # 以下三個引數要注意,必要時要特別加入 --boot-directory=[path] --efi-directory=[path] --uefi-secure-boot # man grub-install 查看幫助
MBR與GPT
BIOS+mbr
- 前446位元組村存放grub程式
- 為什么要grub引導:因為bios不識別檔案系統格式
- grub是作業系統安裝后寫入的,因此會識別檔案系統
- 后64,存放磁區表每個磁區的起始,結束柱面號

UEFI+gpt

- 在GPT磁區表中引導記錄被.efi檔案所接管,統一放在一個叫ESP的磁區中,
- 這個磁區的檔案系統必須是FAT檔案系統這樣才能被UEFI所識別,
- 這個磁區可以放置引導不同磁區以及不同的硬碟多個系統的.efi,不過要在UEFI啟動項中設定
- 也可以使用grub2進行設定引導,
- UEFI這些啟動項將會去引導ESP磁區中的.efi檔案,
- Linux中的grubx64.efi, shimx64.efi,
- window10中是ESP磁區\EFI\BOOT\bootx64.efi,或是bootmgfw.efi,具體引導哪個.efi檔案要看UEFI啟動項中的設定,
本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/144792.html
標籤:其他
上一篇:grub例外
