永久固定 GRUB 資料夾的絕對位置

永久固定 GRUB 資料夾的絕對位置

我最近遇到了一個相對常見的問題,即 16.04 安裝程式錯誤地配置了 GRUB 資料夾的位置。在這種情況下,系統會引導至救援 shell,並顯示以下訊息:

error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>

這意味著 GRUB 能夠啟動,但它在錯誤的位置尋找模組。這眾所周知的解決方案是動態指示 GRUB 其模組的位置。就我而言,這是:

grub rescue> set prefix=(hd1,msdos2)/boot/grub
grub rescue> insmod normal
grub rescue> normal

這將成功恢復啟動過程。然而,下次系統啟動時,GRUB 會再次退回到救援控制台,並且必須再次指示其模組的位置。我已經重新安裝了 GRUB,但它沒有解決問題。

如何永久指示 GRUB 其模組的正確位置?

更新: 我跟著WinEunuuchs2Unix 的建議並嘗試了啟動修復工具。我首先驗證了 GRUB 位置,它顯然是正確的:/boot/grubsdg2.

然後我運行了推薦修復診斷,產生了這個輸出。這裡再次報告了正確的 GRUB 位置:

sdg2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 16.04.3 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab 
                       /boot/grub/i386-pc/core.img

然而,報告的最後有一個錯誤,指出了以下問題device.map

grub-probe: error: cannot find a GRUB drive for /dev/sdi1.  Check your device.map.
Unhide GRUB boot menu in sdg2/boot/grub/grub.cfg

An error occurred during the repair.

對此有何建議?

答案1

理解問題所在的關鍵是需要指示 GRUB 走向hd1.這BIOS 預設啟動至hd0,並且在該工作站中存在 MBR 的殘餘物,一旦安裝在該磁碟中,該 MBR 就會嘗試載入 GRUB(因此引用/grub而不是/boot/grub)。

解決方案是在 BIOS 中更改內部磁碟的啟動順序。首先hd1,啟動過程無需人工幹預即可成功完成。在某些 BIOS 中,可能無法修改內部磁碟的啟動順序;在這種情況下,必須將磁碟重新連接到板上。

相關內容