有没有办法使用 GPT 上的 BIOS 启动 Windows 7/8?

有没有办法使用 GPT 上的 BIOS 启动 Windows 7/8?

我想知道是否有方法可以将 Windows 7 或 Windows 8 开发人员预览版安装到我传统 IBM PC BIOS 设置上的 GPT 磁盘。Windows 7 当然会拒绝我的 GPT 分区,因为我没有 UEFI。不过,Debian 和 Grub 2 似乎运行良好……所以我想知道是否有办法强制 Windows 也能正常工作。

我真心不想使用混合 MBR/GPT,因为它很脆弱,而且感觉很黑客,但它工作。我认为主要的阻碍因素是微软根本没有在他们的 BIOS 引导加载程序中添加对 GPT 的支持,我想这是可以理解的。有什么补救措施吗?

在我看来,有几种潜在的解决方案:

  1. 为 Windows 内核提供备用引导加载程序。不是链式加载程序。据我所知,不存在这样的程序。真遗憾。
  2. 在备用的基于 MBR 的磁盘上存储尽可能少的内容。我不喜欢这个想法,但这是可行的。我不确定我是否将其称为解决问题的方法,还是一种变通方法。
  3. 充分模拟 EFI 以使 EFI 引导加载程序工作...我记得听说过一些关于 UEFI-on-BIOS 模拟器的信息,但现在我找不到任何相关信息。我认为这是可行的,但目前可能对它的需求不大,而且设置起来可能一点也不好玩。GRUB 2 似乎能够通过必要的 EFI 模拟来启动黑苹果,但我猜没有兴趣/UEFI 2 更难接近(我认为用于黑苹果的其他 EFI 模拟器也处于同样的境地。)
  4. 使用 TainoCore 进行 Coreboot。据我所知,Coreboot 在我的主板上不起作用,而且我确信在 GSoC 期间进行的最后一次尝试失败了。不过,如果它确实有效,我绝对会喜欢这个解决方案。

我是否遗漏了什么?

答案1

好吧,自从我第一次问这个问题以来,情况已经发生了变化。首先,我的电脑现在是基于 UEFI 的,所以我不再有这个问题了。嗯,有点。我有兴趣在我的笔记本电脑上进行类似的设置(GPT 分区等)。我终于设法获得了一个有效的 Tianocore UEFI DUET 设置,它非常简单!

这假设你想要所有闪亮的新设置。如果你真的想转换旧设置,祝你好运。实际上,无论如何,祝你好运,因为在任何情况下这都是一项不稳定的行动。

警告:如果你喜欢快速启动时间,那么可能想重新考虑这个决定。并不是说 UEFI DUET 很慢,而是它为你的启动过程增加了另一个阶段,所以如果你的 BIOS/POST 速度不快,你可​​能不喜欢这个。

无需再费周折:

  1. 您需要一个 Linux 设置。我使用 USB 上的 Fedora 16(带 UNetBootin),我强烈推荐它,因为它开箱即用。无论如何您都需要一个 USB 驱动器,所以不要打算在没有 USB 驱动器的情况下继续使用。

  2. 获取一些 UEFI DUET 版本。毫无疑问,获取此版本的最佳地点是这里. 实际的构建 tarball 位于第一个存储库的 master 分支下,这里. 给它旧的tar -xf

  3. 设置分区。您应该在磁盘上的某个位置保留 200 MB(最好是开始和第一个分区)。您可以使用 FAT32 格式化它,但我们稍后会重新格式化它。只需确保它显示为分区即可。您应该在这里使用 GPT。

  4. 现在安装您可能需要的任何附加软件。在 ​​Fedora Live 发行版上,我发现我需要yum install gdisk。我想就是这样。

  5. 现在进入解压的构建目录。chmod +x ./duet-install以及./duet-install -64 -F -m /dev/sda1/dev/sda1您想要的 EFI 系统分区在哪里。)

  6. 祈祷并重新启动。运气好的话,几分钟后你就会看到 TianoCore 徽标。如果是这样,你可能就成功了!你需要在 USB 驱动器上设置你的操作系统安装文件 - Tianocore 可以不是开箱即用,支持 CD-ROM/DVD-ROM 驱动器(但我不知道它有什么驱动程序。)

你可能还需要一些 UEFI shell 二进制文件来玩。我找到了一些这里. 但尚未使用 Tianocore 进行测试。

无论如何,感谢所有试图提供帮助的人。

答案2

我设法在 BIOS 设置下在 GPT 磁盘上启动了 Windows 8.1,而无需第二个 MBR 磁盘。

故事是这样的:我的笔记本电脑是 BIOS + GPT 设置,只安装了 Arch Linux。最近我需要在 Windows 中完成一些任务(虚拟机无法完成),所以我很难在现有的 BIOS + GPT 设置下安装 Windows。根据Milind 的回答,我设法将 Windows 启动文件(Boot、bootmgr 等)安装到(小型)MBR USB 驱动器中。每次我打开插入该 USB 驱动器的笔记本电脑时,我都可以启动到 Windows 8.1,之后可以安全地拔出驱动器。

缺点很明显:我需要随身携带 USB 驱动器来启动 Windows。所以我一直在尝试摆脱它。

尝试了不同的方法后,我终于发现 syslinux 项目的 memdisk 模块可以工作。

  • 您需要放弃 Windows 启动管理器。
  • 您不必安装 syslinux。只需安装内存盘模块(需要一个 26 kB 的文件)。
  • 您可以使用许多引导加载程序来加载此模块,就我而言,我最喜欢的引导加载程序是 GRUB(版本 2)。

以下是操作方法的概要:

  • 对你的 GPT 磁盘进行分区以满足 GRUB 的需求,也就是说,划分一个小分区来嵌入 core.img。详细链接
  • 将 GRUB 安装到该小分区。
  • 使用 安装 Windows imagex并使用bootsect并将bcdbootWindows 启动文件安装到小型 MBR USB 磁盘中。
  • 使用dddd_rescue将您的小型 USB 磁盘克隆到磁盘映像中。(您的 USB 磁盘已完成其工作。)该映像可能太大,无法由 memdisk 加载,您可以挂载它并缩小其中的文件系统/分区。
  • 根据我的测试,您不需要物理 MBR 磁盘来安装 Windows 启动文件。您可以创建一个 vhd 文件并将其视为物理磁盘。将 Windows 启动文件安装到 vhd 后,您可以使用 VirtualBox 或 QEUM 提供的工具将其转换为原始(dd 样式)磁盘映像。使用 创建时type=fixed,vhd 文件只是一个普通的原始磁盘映像(dd 样式),带有 512 字节的页脚。页脚将被识别为“未分区空间”并被忽略,因此type=fixedvhd 文件可以直接输入到 MEMDISK 而无需转换,从而启动 Windows。
  • 配置 GRUB 以使用 memdisk 加载此磁盘映像。
  • Windows 将启动。

详细的操作方法可以参见我的reboot.pro 回复到 Milind 的帖子。

答案3

如果你甚至有一个小的备用驱动器,您可以从 BIOS 上的 GPT 启动 Windows(32 位或 64 位)。软盘即可。

启动 Windows 安装/修复光盘。

在小磁盘/软盘上创建系统驱动器,并使用bcdboot将启动文件放在小磁盘上新创建的驱动器上。使用 添加引导扇区bootsect。将 更改为{bootmgr} deviceboot从小磁盘启动。

步骤很详细这里

答案4

文章BIOS 到 UEFI 的转变详细介绍了如何使用 TainoCore UEFI DUET。

我了解您在使用 TainoCore 时遇到了问题,但也许本文对您有所帮助。

文章确实说了:

有些计算机不支持 UEFI DUET。最重要的是,它实际上只在 64 位 x86-64 计算机上有用,尤其是二进制形式。事实上,即使在一些 x86-64 计算机上,它也无法正常启动。在对五台 x86-64 系统进行的测试中,我设法让一个或两个版本仅在三台计算机上运行 - 成功率确实相当低。这可能只是巧合,但对我来说效果最好的两台计算机使用的是英特尔 CPU,而效果最差的两台计算机和使用 2.1 版但不使用 2.3 版的计算机都使用 AMD CPU。

这似乎意味着人们在放弃之前应该尝试几个版本的 UEFI DUET。

了解您的计算机型号会有所帮助。

相关内容