GRUB2 无法在 BIOS/GPT 设置中加载

GRUB2 无法在 BIOS/GPT 设置中加载

我的平台是什么

在 Dell Latitude E5550 上使用 Linux 内核 5.10.40 进行 Debian 测试。

我正在做什么

到目前为止,我的设置都是老式的 MBR 分区和“传统” BIOS 模式。不幸的是,我的新笔记本电脑不再支持 BIOS 模式,所以我必须迁移到 UEFI 设置。

自从据称 Linux 上的 BIOS 模式支持 GPT之后,我构思了如下的迁徙路径:

BIOS/MBR -> BIOS/GPT -> UEFI/GPT

为此,我按照上面 GRUB 手册的指示创建了 BIOS 启动分区,并使用 将分区转换为 GPT sgdisk -g /dev/sda。我当前的分区布局是:

# parted /dev/sda print
Model: ATA TS128GSSD370S (scsi)
Disk /dev/sda: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system  Name         Flags
 1      32,3kB  253MB  253MB   ext4
 2      253MB   263MB  10,5MB               boot-system  bios_grub
 3      263MB   128GB  128GB

分区#3 是我的主分区,具有 LUKS 加密的文件系统根,分区#1 是未加密的 /boot 目录。

转换为 GPT 后,我使用 重新安装了 GRUB grub-install --target=i386-pc /dev/sda

什么不起作用

尝试从该驱动器启动时,屏幕变黑,约 2 秒后显示一条消息:Selected boot device failed. Press any key to reboot the system.谷歌搜索似乎表明它可以指向 Linux 和 Windows 的多种问题,因此它可能是 BIOS/UEFI 消息并且 GRUB 此时甚至没有加载,尽管这可能是错误的假设。

目前,我使用超级 GRUB2 磁盘,它会在分区 #1 上找到 GRUB 配置并使用它引导到我的系统。因此,它与之前在 MBR 分区上的工作方式一样,只是 MBR 中的 GRUB2 代码似乎没有执行

我尝试过的方法

我唯一想到的就是尝试boot在分区 #1 上设置一个标志。在 GPT 转换之前它曾经存在,但我不确定是否需要它。但是,这样做并再次重新安装 GRUB 并没有改变结果。

答案1

理论上,是的,应该支持 BIOS/GPT,因为 BIOS 实际上根本不读取分区表,只有引导加载程序(写入 MBR 的 GRUB 片段)需要了解 GPT 分区。

然而,一些固件即使在 BIOS 启动模式下仍会查看分区表,并且众所周知,即使磁盘安装了完全有效的 MBR 启动代码,固件也不会尝试从 GPT 分区磁盘启动。据我所知,戴尔有时也属于此类。

我建议完全跳过这个迁移步骤。这实际上不会让将来迁移到 UEFI/GPT 变得更容易——您仍然必须丢弃当前的 GRUB 配置,并将这两个“启动”分区重新设置为 EFI 系统分区反正,因此只需一步即可完成所有操作。

相关内容