薄荷 UEFI 分區突然不再被 UEFI 辨識 - 啟動 Windows 7 一次後
我正在處理一台PC,一些現成的惠普辦公箱,幾年前。我已經用不同的風格或 Linux 使用它一段時間了,主要用於計算無頭的東西。在某些時候,我必須安裝 Windows 7 x86_64,所以我從機器上移除了所有以前的硬碟驅動器,找到另一個 SSD,插入它,將其擦除並在其上安裝 Windows 7(所有預設值)。據我所知,它是在 UEFI 引導模式下安裝的(即 SSD 有一個帶有設置引導標誌的小 FAT32 分區)。
時間過去了,我需要再次在這台機器上執行 Linux,我拔掉 SSD 並將 Linux Mint(即 Ubuntu)安裝到 2 週前的最新版本到 USB 快閃記憶體驅動器上。Mint 安裝程序向我拋出錯誤消息,告訴我這台 PC 上有另一個作業系統以舊版 BIOS 模式執行,並且在 UEFI 模式下安裝 Mint 是個壞主意。請記住,SSD 已拔出。好的…我無法說服 Mint 安裝程序不要因為此錯誤消息而崩潰,所以我使用 GParted 手動對我的 USB 快閃記憶體驅動器進行分區。設置了 BOOT 標誌的 512 MByte FAT32 加上一個 ext4 系統分區、GPT 分區表。我再次執行 Mint 安裝程序並將其指向這些分區。它向我發出另一個警告,但不會崩潰。Mint 安裝(在 UEFI 模式下)並執行。核心和 Grub 更新工作。
時間又過去了,我又需要 Windows。我的 SSD 還在,所以我把它插上。USB 快閃記憶體驅動器也有,我認為沒關係……我啟動 PC,Windows 工作正常,我將其關閉。好吧,現在我想啟動 Mint。UEFI 沒有找到它。時期。我拔掉了SSD。我嘗試了所有可用的 USB 埠。我打開了安全啟動(只是為了好玩)然後再次關閉。我切換到 BIOS 僅啟動模式並返回 UEFI / legacy 組合。我切換到僅 UEFI 模式。它只是不會辨識薄荷。瀏覽 UEFI 的啟動菜單並沒有將 USB 快閃記憶體驅動器列為 UEFI 啟動選項,而僅將其列為 Legacy BIOS 選項(我記得當我安裝 Mint 時它被列為 UEFI 選項)。
據我所知,Mint UEFI 引導分區未受影響(更改日期與上次 Grub 更新的日期匹配)。設置了 BOOT 標誌。據我所知,它確實沒有任何問題。我唯一的“錯誤”是在將包含 Mint 的 USB 快閃記憶體驅動器插入 PC 時啟動 Windows。
我可以做些什麼來調試和/或解決這個問題?我可能忽略了什麼?
編輯(1):這就是
gdisk
告訴我:# gdisk -l /dev/sdc GPT fdisk (gdisk) version 0.8.8 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sdc: 30464000 sectors, 14.5 GiB Logical sector size: 512 bytes Disk identifier (GUID): *** Partition table holds up to 128 entries First usable sector is 34, last usable sector is 30463966 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1050623 512.0 MiB EF00 2 1050624 30461951 14.0 GiB 0700
分區 1 的程式碼 EF00 令人討厭。不應該是EE00嗎?
也張貼在薄荷論壇。
我的第一個猜測是您失去了 Mint 的 NVRAM 引導變數。當韌體注意到它指的是系統中不再存在的磁碟/SSD時,也許韌體將其刪除。
使用 UEFI,每個作業系統都可以將自己的引導載入程序規範寫入系統的可引導事物列表。該規範基本上包括包含引導載入程序的 EFI 系統分區的 GUID 標識符,以及引導載入程序文件的路徑名。對於 Mint,路徑名可能類似於
\EFI\Mint\grubx64.efi
因為它使用 GRUB2 的 UEFI 版本。訣竅是您可以從作業系統中訪問這些 UEFI 啟動變數……但前提是該作業系統以 UEFI 模式啟動。當使用傳統引導模式時,訪問引導變數所需的 UEFI 執行時服務將被禁用,以使系統更接近於傳統系統。
對於可移動媒體,還有另一個 UEFI 約定:如果沒有適用的 UEFI 引導變數,或者係統被告知從以前從未見過的磁碟以 UEFI 模式引導,那麼 UEFI 韌體會查找具有 FAT32 文件系統的分區這將包含一個名為
\EFI\BOOT\BOOTx64.efi
(對於 64 位 x86 硬體;ARM 架構有自己的引導文件名。)所以有兩種方法可以解決這個問題:
1.) 使用任何能夠理解 GPT 分區表和 FAT32 文件系統的作業系統訪問 Mint 磁碟。找到引導載入程序文件(
\EFI\Mint\grubx64.efi
或類似文件)並將其複製到\EFI\BOOT\BOOTx64.efi
同一磁碟上。如果包含原始引導載入程序文件的目錄包含任何看起來像配置文件的內容,請也複製它們。現在 UEFI 應該將磁碟辨識為 UEFI 可引導,即使 NVRAM 引導變數已消失。(如果/當您必須再次交換 SSD 時,這可能會防止問題再次發生。)
2.)以 UEFI 模式將系統引導至任何類型的 live-Linux 或救援環境。找到引導文件名,並使用
efibootmgr
命令重寫 Mint 的引導變數。所需的命令類似於:# efibootmgr -c -d /dev/sdX -l \\EFI\\Mint\\grubx64.efi -L "Linux Mint"
替換
/dev/sdX
為實際的磁碟設備名稱:efibootmgr
會自動查找對應的 GUID。請注意 Windows 樣式路徑名中的雙反斜杠:這是因為反斜杠是 Linux shell 的特殊轉義字元。最後一個參數是可能出現在引導選擇菜單等的標籤;你可以寫任何你想要的短文本。