Mint UEFI 分区突然不再被 UEFI 识别 - 启动 Windows 7 一次后

Mint UEFI 分区突然不再被 UEFI 识别 - 启动 Windows 7 一次后

我正在处理一台电脑,一些现成的惠普办公盒,已经有几年了。我已经使用它一段时间了,有不同的风格或 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 MB FAT32 加上 ext4 系统分区、GPT 分区表。我再次运行 Mint 安装程序并将其指向这些分区。它向我发出了另一个警告,但没有崩溃。 Mint 安装(在 UEFI 模式下)并运行。内核和 Grub 更新有效。

时间又过去了,我又需要Windows了。我的 SSD 还在身边,所以我将其插入。USB 闪存驱动器也存在,我认为这并不重要...我启动 PC,Windows 工作正常,我将其关闭。好吧,现在我想启动 Mint。 UEFI 找不到它。时期。我拔掉了SSD。我尝试了所有可用的 USB 端口。我打开安全启动(只是为了好玩)然后再次关闭。我切换到仅 BIOS 启动模式,然后返回 UEFI/传统组合模式。我切换到仅 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吗?


还发布了在造币厂论坛中

答案1

我的第一个猜测是您丢失了 Mint 的 NVRAM 启动变量。也许固件在注意到它指的是系统中不再存在的磁盘/SSD 时将其删除。

借助 UEFI,每个操作系统都可以将自己的引导加载程序规范写入系统的可引导列表中。该规范基本上包括包含引导加载程序的 EFI 系统分区的 GUID 标识符以及引导加载程序文件的路径名。对于 Mint,路径名可能类似于,\EFI\Mint\grubx64.efi因为它使用 UEFI 版本的 GRUB2。

诀窍是您可以从操作系统内部访问这些 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同一磁盘上。如果包含原始引导加载程序文件的目录包含任何看起来像配置文件的内容,也复制它们。

现在,即使 NVRAM 引导变量消失,UEFI 也应该将磁盘识别为可 UEFI 引导。 (如果/当您必须再次更换 SSD 时,这可能会防止问题再次发生。)

2.) 启动系统在 UEFI 模式下进入任何类型的实时 Linux 或救援环境。找到引导文件名,然后使用efibootmgr命令重写 Mint 的引导变量。所需的命令类似于:

# efibootmgr -c -d /dev/sdX -l \\EFI\\Mint\\grubx64.efi -L "Linux Mint"

替换/dev/sdX为实际的磁盘设备名称:efibootmgr会自动查找对应的GUID。请注意 Windows 样式路径名中的双反斜杠:这是因为反斜杠是 Linux shell 的特殊转义字符。最后一个参数是一个标签,可能会出现在启动选择菜单等上;你可以写任何你想要的短文本。

相关内容