有什么方法可以使用GPT上的BIOS引导Windows 7/8?


21

我想知道是否有一种方法可以将Windows 7或Windows 8 Developer Preview安装到我的传统IBM PC BIOS设置上的GPT磁盘上。Windows 7当然会拒绝我的GPT分区,因为我没有UEFI。好吧,Debian和Grub 2似乎工作正常……所以我想知道是否有一种方法可以强制Windows也正常工作。

我非常希望避免使用混合MBR / GPT,因为它非常脆弱并且感觉有点黑,但是它确实有效。我认为主要的阻碍因素是,微软只是没有在其BIOS引导加载程序中增加对GPT的支持,我想这是可以理解的。有没有追索权?

我认为,有一些潜在的解决方案:

  1. 具有Windows内核的备用引导程序。不是链条装载机。据我所知,不存在。真可惜
  2. 尽可能少地在基于MBR的备用磁盘上存储。不喜欢这个主意,但这是可行的。我不确定是否可以将其称为解决问题的解决方案。
  3. 对EFI进行足够的仿真以使EFI引导加载程序能够正常工作...我记得曾听说过一些关于BIOS上UEFI的仿真器,但现在找不到任何有关它的信息。我认为这是可行的,但是对此可能需求不多,设置起来可能根本没有乐趣。GRUB 2似乎能够通过必要的EFI仿真来启动hackintosh,但我想没有兴趣/ UEFI 2很难实现(我会假设用于hackintosh的其他EFI仿真器在同一条船上。)
  4. TainoCore的Coreboot。据我所知,Coreboot无法在我的主板上工作,我很确定在GSoC期间最后一次这样做是失败的。不过,如果它确实可行,我绝对会喜欢这种解决方案。

我有什么想念的吗?


1
不完全的。我知道它可以在混合MBR / GPT上运行,并且我不怕使用它。而且,我对这种解决方案不满意,想知道是否还有另一种更好的方法。不过,我仍在研究此问题,并且可能会找到自己的解决方案。
约翰·查德威克

1
考虑到2年的差距,我非常确定这个问题是问题的重复。除此之外,那里的问题实际上没有答案,或者至少没有直接答案,而这个问题有直接答案。
约翰·查德威克

你检查我的回答了吗?它是新的,没有其他人这样做过。想对其进行一些测试。保证非hacky。
Milind R 2014年

不过,它真的无法在笔记本电脑上运行。但是,我再次发现,将这个问题标记为重复后,甚至在提出该问题之前将近两年,它都被回答了,这真是太奇怪了。我发现运行UEFI实现并不容易。只是有点古怪,但是它的优点是不需要额外的磁盘驱动器。
约翰·查德威克

工作中只有一个磁盘实现,在经过测试时会更新...。此外,从某种意义上讲,这是一种骇客行为,因为您躺在有关系统的Windows上:在混合MBR中,在分区类型中,在DUET中,说谎关于固件。
Milind R 2014年

Answers:


8

好吧,自从我第一次提出这个问题以来,情况已经发生了变化。一方面,我的PC现在基于UEFI,所以我不再遇到这个问题。好吧,有点。我对在笔记本电脑上进行类似的设置(GPT分区等)感兴趣,最终我设法获得了可正常工作的Tianocore UEFI DUET设置,而且它变得非常简单!

假设您需要所有闪亮的新设置。如果您想实际转换旧设置,请好运。实际上,无论哪种方式,都祝您好运,因为在任何情况下,这都是不可靠的操作。

一个警告:如果您喜欢快速启动,那么您可能需要重新考虑这个决定。UEFI DUET并不是很慢,但是会在启动过程中增加另一个阶段,因此,如果BIOS / POST不够快,您可能会不喜欢这样。

无需再费周折:

  1. 您需要Linux安装程序。我从USB记忆棒(带有UNetBootin)上使用了Fedora 16,因此我强烈建议这样做,因为它实际上是开箱即用的。无论如何,您都需要一个USB驱动器,因此不要计划没有一个USB驱动器。

  2. 抓住一些UEFI DUET构建。毫无疑问,让这个最好的地方就是这里。实际构建包是第一资源库的主分支下,在这里。给它旧的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进行测试。

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


这适用于Windows安装吗?
摩押

我早在2012年就在Windows 8上成功使用了它。我不再需要它了,因为过去几年中制作的所有东西都使用UEFI,因为Windows 8+需要硬件制造商来支持它。它可能今天仍然可以使用,但是我不知道我是否会推荐它。
约翰·查德威克

2
UEFI DUET链接现在应该在这里,但不再维护。该网站说改用四叶草EFI
kirbyfan64sos

1
您可以将Clover安装到HDD上,从而无需单独的驱动器
phuclv

6

我设法在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并使用Windows启动文件bootsect并将bcdboot其安装到较小的MBR USB磁盘中。
  • 使用dddd_rescue将小型USB磁盘克隆到磁盘映像中。(您的USB磁盘已完成工作。)该映像可能太大,无法加载内存磁盘,您可以挂载它并缩小其中的文件系统/分区。
  • 根据我的测试,您不需要物理MBR磁盘即可将Windows启动文件安装到其中。您可以创建一个vhd文件并将其视为物理磁盘。将Windows启动文件安装到vhd中后,可以使用VirtualBox或QEUM提供的工具将其转换为原始(dd样式)磁盘映像。使用创建时type=fixed,vhd文件只是具有512字节页脚的普通原始磁盘映像(dd样式)。页脚将被识别为“未分区空间”,并且将被忽略,因此type=fixed可以将vhd文件直接输入MEMDISK,而无需进行转换,从而启动Windows。
  • 配置GRUB以使用内存磁盘加载该磁盘映像。
  • Windows将启动。

在我的reboot.pro中,可以找到有关Milind线程的详细操作方法。


1
@wzboy我正在使用Arch linux,在设法安装Windows之后(使用wimlib-imagex),我设法做到了。现在我不确定如何继续。您能否详细说明如何从linux发行版中创建vhd文件?
MihaiBişog2014年

@MihaiBişog您需要Windows PE才能创建该vhd。有很多方法可以启动Windows PE。例如,GRUB和syslinux可以引导到iso文件中。
卓卓云

这不是会中断Windows更新吗?我的意思是,如果Microsoft将发布更新,该更新应该修改您放入虚拟磁盘映像中的这些boot / bootmgr文件-它们将不会被更新,您甚至都不会注意到这一点。另外我想这可能会破坏某些Windows修复操作。还有其他缺点吗?
Powerman 2014年

实际上,Windows永远不会找到BCD / Bootmgr,因为它位于软盘/磁盘映像中。因此,没有自动更新的问题。自动修复将不起作用。与Microsoft相关的与您的启动相关的工具都可能无法正常工作。
Milind R

1
是的,与bootmgr相关的任何操作均将不起作用,因为在帮助Windows引导之后它们“消失”了。实际上,当您在cmd.exe中运行“ bcdedit”时,它将告诉您找不到引导文件。:-)
卓卓云2014年

5

如果您的备用驱动器很小,则可以从BIOS上的GPT引导Windows(32位或64位)。软盘可以。

引导至Windows安装/修复光盘。

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

步骤在这里详细说明。


2
尝试了一下,它奏效了。现在,在BIOS设置下的GPT磁盘上,我可以使用Windows 8.1。我要做的就是插入USB闪存驱动器以启动它。引导过程完成后,即可卸下USB驱动器。就像过去一样,我的意思是MS-DOS软盘...
卓卓玮

大声笑。我正在研究不需要其他磁盘的解决方案。你能告诉我它有多慢/快吗?
Milind R 2014年

1
我认为将bootmgr放在另一个磁盘上不会使Windows的启动时间更长,至少我感觉不到。
卓卓云2014年

2
哦,是的。太抱歉了,很抱歉。我花了整整一个下午的时间,最后设法通过使用能够加载硬盘映像的syslinux memdisk模块在BIOS setupt下的GPT磁盘上引导Windows 8.1,而没有第二个(小)MBR磁盘。
卓卓玮

1
这是帖子:reboot.pro/topic/...
倬云伟

3

非常感谢wzyboy。

尝试将Windows 2012安装到具有6TB RAID的Dell PowerEdge 2950时遇到此问题。它没有UEFI。

我进行了一些实验。正如wzyboy所说,首先我创建了32Mb虚拟HDD,然后简单地复制了Microsoft保留分区中的所有内容。Windows已正常启动。但是使用此解决方案,Hyper-V服务无法启动。

就像记忆磁盘Wiki所说的那样,它会根据图像大小,必须模拟的媒体类型自动确定。因此,我在WMware环境中创建了虚拟720K软盘,并在其中复制了bootmgr,BCD和bootstat.dat(以防万一,从BCD存储中删除了memtest子菜单)。我把软盘大小选得尽可能小,所以它可能更大或更小,我没有尝试过。

现在,它可以从GPT驱动器启动,Hyper-V可以正常工作。

PS可能会对第三方软件有所帮助。有人使用过这样的东西吗? https://www.terabyteunlimited.com/bootit-bare-metal.htm


最近,在花了很多时间进行映像技巧之后,我发现RAID控制器Perc5-i能够切片比物理硬盘容量小的阵列。因此,在专业硬件上,GPT引导不是问题。
Nikolai Vakulenko 2014年

您能否在此开发线程中叙述您的方案及其解决方案?我试图将所有细节保持在一起。
Milind R

2

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

我知道您在使用TainoCore时遇到了问题,但是本文可能对您有用。

文章确实说:

某些计算机不能与UEFI DUET一起使用。最重要的是,它实际上仅在64位x86-64计算机上有用,尤其是在二进制格式下。实际上,即使在某些x86-64计算机上,它也无法正常启动。在五个x86-64系统上进行的测试中,我设法使一个或两个版本只能在三台计算机上运行—确实,成功率非常低。可能只是巧合,但是对我来说性能最好的两台计算机都使用了Intel CPU,而性能最差的两台计算机以及适用于2.1版本而不是2.3版的计算机都装有AMD CPU。

这似乎暗示着在放弃之前应该尝试几种版本的UEFI DUET。

这将有助于了解您的计算机的型号。


自上次更新此问题以来,实际上我确实获得了UEFI DUET才能在计算机上成功启动。可悲的是,缺少DVD-ROM驱动程序使我丧命,因为我没有任何USB驱动器可以存储Windows。我的主硬盘驱动器随机出现故障后,我决定给它休息一下,并在备用磁盘上使用BIOS分区。但是,本文绝对有帮助,并且我仍然想让它自己运行。我会尽力记得不久后拿起一个闪存驱动器。
约翰·查德威克

@JohnChadwick,您可以使用Clover并将其安装到HDD上,这样就不再需要单独的启动驱动器
phuclv

@phuclv:您是否注意到约翰·查德威克(John Chadwick)的评论来自2011年,而他对此帖子给出了自己的答案
harrymc '18

我当然知道@harrymc。该信息供将来的读者使用
phuclv

0

人们需要记住,并非所有的BIOS固件都能够处理GPT驱动器。我有一个出厂时是GPT的USB Seagate 4 Tb驱动器,而我的两台计算机都无法在该驱动器插入USB端口的情况下启动。

机器将在F2 Enter Setup F10 Boot菜单屏幕上冻结,此时唯一可以做的就是关闭电源,然后重新打开。

一旦将驱动器转换为MBR,这将浪费大约2 Tb的驱动器空间,两个系统都将在连接驱动器的情况下正常启动并引导进入OS。

我正在寻找BIOS补丁来纠正此问题。


BIOS对驱动器一无所知,无论是GPT还是MBR,甚至BSD标签还是APM ...它只是加载第一个扇区(即MBR)并运行它。此时,BIOS的工作可以视为“完成”。如果您的驱动器无法启动,则意味着该驱动器上没有有效的启动扇区
phuclv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.