最近我的硬碟出現了一些壞扇區。就在幾天前,出現了資料損壞的情況。看來我的硬碟即將達到其使用壽命。
因此,一個選擇是購買新硬碟,但我將在接下來的 5-6 個月內更換筆記型電腦,因此我不想增加費用。所以我在外部硬碟上安裝了Ubuntu。現在我需要連接外部硬碟來啟動。
我想將兩個 EFI 分割區分開。我想要一個 EFI 分割區,可以在沒有外部磁碟機的情況下開啟內部硬碟 ubuntu,並且如果內部故障,我想在外部啟動。所以我想要兩種不同的 EFI,一種在內部,一種在外部。
我嘗試從內部 ubuntu 運行 update-grub 。它向我展示了它可以從內部檢測 Windows,也可以從外部檢測 ubuntu。但它不會修改 EFI 分割區。另外,如何為外部磁碟機配置單獨的 EFI 分割區?我已經在外部磁碟機中建立了 200MB 的 EFI fat32 分割區。我將整個EFI從內部複製到外部。我測試了它是否從我在 BIOS 中建立的自訂條目啟動。所以現在我想知道如何從內部硬碟啟動內部 grub,以及除了 /etc/default/grub 中的 EFI 路徑之外我需要在外部進行哪些更改才能使一切正常工作。
答案1
Launchpad bug #1396379(在安裝過程中,使用者輸入的引導程式位置將被忽略,並使用找到的第一個 EFI),是導致此類問題的原因。請務必將自己加入「這對我有影響嗎?」。如果您安裝到第二個磁碟,則會出現該錯誤。在安裝程式之外,grub 可以正常工作,並且可以與適當的選項一起使用來指定安裝位置。
安裝到第二個磁碟的結果是第一個磁碟的 EFI 被更新並且仍然引導 grub,但現在 grub 的附加檔案位於第二個磁碟上。只要連接了第二個磁碟,此操作就有效。如果沒有連接第二個磁碟,grub 將無法找到繼續開機所需的檔案。將第一個磁碟的 EFI 檔案複製到第二個磁碟的 EFI 將導致第二個磁碟正常啟動。選擇/將磁碟作為啟動順序中的第一個啟動。
第一個 EFI 的修復方法是編輯 EFI/ubuntu/grub.cfg 檔案(只有幾行),將磁碟/分割區引用更改回第一個磁碟,並使用 UUID(透過在以下位置執行 sudo blkid 提供)一個終端)用於第一個磁碟上的Ubuntu。此變更允許 grub 從第一個磁碟啟動。您(可能)需要的唯一其他變更是將 Windows 引導程式還原為裝置的預設設定。檔案 /EFI/Boot/bootx64.efi 最初是 Windows 引導程序,但它可能已重新命名為 /EFI/Boot/bckbootx64.efi (或可能是 bootx64.efi.bup)。檢查 /EFI/Microsoft/Boot/bootmgfw.efi 中 Windows 開機載入程式的大小,以確保 bckbootloader.efi 確實是 Windows 開機載入程式。然後只需將其(或/EFI/Microsoft/Boot/bootmgfw.efi)複製回/EFI/Boot/bootx64.efi。將裝置或 /EFI/Microsoft/Boot/bootmgfw.efi 放在開機順序的第二個位置,因此如果未連接第二個磁碟,它將引導第二個條目。