我在 64 位 PC 上的 FAT32 分区(我希望有它的 PBR(分区引导记录))上安装了带有 DOSBox 的 Windows 95(传统 BIOS 操作系统),该分区位于 GPT 硬盘上,并安装了 UEFI Windows 11 和 ESP(EFI 系统分区)。
我无法使用旧式 BIOS CSM(我在 BIOS 设置实用程序中设置,del启动时按下)或 VirtualBox 来启动它。
在Windows 11上,我无法激活分区:
diskpart
sel disk 0
sel part 8 // the Windows 95 FAT32 partition
active
The selected disk is not a fixed MBR disk.
The ACTIVE command can only be used on fixed MBR disks.
因此硬盘需要 MBR,但根据https://www.diskpart.com/gpt-mbr/mbr-and-gpt-on-same-disk-7201.html同一大容量内存上不可能同时拥有 GPT 和 MBR。
那么该怎么办?
也许 ESP 中的一个 .efi 文件可以启动旧版 BIOS 操作系统、PBR 分区,不需要 MBR?
使用 GRUB?
答案1
它是实际上可以在 GPT 分区磁盘上拥有 MBR 引导代码——第 0 个扇区仍然专门保留以保存“保护性 MBR”,它仍然可以像以前一样保存 BIOS 引导代码(只要您以传统模式启动它,因为即使 MBR 引导代码存在,UEFI 也不会查看它)。
(就此而言,UEFI 实际上并不要求使用 GPT – MBR 分区磁盘仍然是 UEFI 规范的一部分。MBR 的引导代码部分仍然未被 UEFI 使用,因此可以在需要时保存传统的 BIOS 引导代码。)
您可以安装系统LinuxMBR 启动代码 (gptmbr.bin),其行为与跳转到活动分区的 PBR 的传统 MBR 非常相似,但可以理解 GPT 分区表并查找名称类似的 GPT 属性标志。(具体来说,它会检查位 2,该位gdisk
调用“传统 BIOS 可启动”。)Syslinux 的其余部分则不需要。
但您必须使用传统启动模式 (CSM) 才能实现此功能。MBR和PBR 保存专门为 BIOS 启动编写的启动代码(它们都不用于 UEFI 启动过程);通常它们依赖于通过 BIOS 调用(中断)来访问磁盘,如果您尝试在没有 CSM 的 UEFI 环境中运行该代码,这自然将不可用。
因此,仅仅拥有一个尝试运行 MBR 或 PBR 的 .efi 可执行文件是不够的 - 您需要使用传统模式,或者如果您没有它,您需要引入一个所有的BIOS 实现,例如 SeaBIOS(有时用作 UEFI 固件中的 CSM,可以大概可以作为普通 .efi 二进制文件启动吗?
但是,如果机器太新,不再具有 UEFI CSM 支持以 BIOS 方式启动,那么您将遇到的问题不仅仅是初始启动 - 很可能您实际上没有适用于该机器上任何硬件的 Windows 9x 兼容驱动程序。(请参阅侧边栏/r/windows98更多详细信息 – “Windows 7 附带” 的任何东西都已经太新了,因此您的机器将极其太新了。)