我的平台是什么
在 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 系统分区反正,因此只需一步即可完成所有操作。