
Linux新手來了。最近剛重新安裝了 Ubuntu,每次啟動時,我都會被丟進 grub shell。我到處尋找,浪費了很多時間,但終其一生都無法追蹤問題。
分割表佈局為: /dev/sda1 - 實際作業系統 /dev/sda2 - EFI /dev/sda3 - 交換
透過運行:
set root=(hd0,gpt1)
linux /vmlinuz_something root=/dev/sda1 ro
initrd /initrd.img
boot
我啟動進入作業系統,然後運行 update-grub。它似乎已成功找到核心並更新了條目,但仍引導至 grub。因此,我進一步研究了這個問題,並遇到了一些實例,表明它可能與 GRUB 在引導嘗試失敗後處理引導的方式有關。
根據我的了解,我決定嘗試添加到我的 /etc/default/grub 中:
GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT
我再次運行 update-grub ,問題仍然存在。也嘗試了其他值作為猜測,這並不奇怪。我很抱歉提出這個令人筋疲力盡的話題,但我找到的解決方案對我來說並不奏效。有想法該怎麼解決這個嗎?
答案1
我懷疑您安裝了兩個 GRUB —— 一個用於一個發行版,另一個用於另一個發行版;或是一種 BIOS 模式和一種 EFI 模式。無論哪種情況,如果您正在更新一個 GRUB 的配置文件,但另一個 GRUB 正在執行,您將看到與您所看到的類似的症狀。
如果您安裝了兩個 EFI 模式 GRUB,您應該在輸出sudo efibootmgr -v
和/或您的檔案中看到它們的證據EFI 系統分割區 (ESP),通常安裝/boot/efi
在 Ubuntu 中。嘗試以下命令:
sudo efibootmgr -v
sudo find /boot/efi -iname "*.efi"
第一個顯示了向韌體註冊的引導程序,包括它們的路徑。如果您看到多個對shim.efi
、shimx64.efi
、grub.efi
或 的引用grubx64.efi
(即,這組中不只一個),則可能是問題所在。第二個指令會尋找 ESP 上的所有引導程式(假設它安裝在/boot/efi
)。同樣,多個引導程式也可能是一個問題——但在這種情況下,一個 Shim 可以與一個 GRUB 共存;只是多個 GRUB 二進位檔案可能會出現問題。
如果您有一個 BIOS 模式和一種 EFI 模式 GRUB,則可能更難偵測到。最簡單的方法是運行啟動訊息腳本,它可以識別 BIOS 模式和 EFI 模式引導程序,但需要一些經驗來解釋。
您可能想要將RESULTS.txt
啟動資訊腳本產生的檔案以及我注意到的這兩個命令的輸出發佈到一個pastebin網站,並將 URL 發佈在這裡供我們解釋。
另一件事:如果您同時擁有 BIOS 模式和 EFI 模式 GRUB,並且 BIOS 模式 GRUB 出現故障,您可以透過進入韌體並停用相容性支援模組 (CSM) 來繞過它,又名「傳統啟動支援」或類似的詞語。我認為此操作可能有三分之一的機會解決您的問題,但值得一試,特別是如果您記得按照說明啟用 CSM。即使此操作本身不能解決問題,但一旦更好地理解了原因,它也可能有助於解決問題。