PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

【仅限折腾党】单盘GPT+Legacy BIOS安装Windows

[复制链接]
跳转到指定楼层
1#
iFive 发表于 2015-1-20 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:10831|回复数:17
本帖最后由 iFive 于 2015-1-21 13:20 编辑

此文只适合以下三种用户阅读:
一、折腾党,不折腾不舒服。
二、喜欢GPT分区表却不喜欢UEFI BIOS的用户。(本文参考资料1的用户就是这种类型,富有Linus精神,反对UEFI)
三、家庭轻量级小服务器用户,想用3T单盘+单分区做启动盘,却发现服务器虽然是UEFI BIOS却屏蔽了UEFI引导。(比如说HP的一些服务器)


也许你想过,MBR+UEFI能正常启动吗…也许你还想过,GPT+Legacy BIOS能正常启动吗…

第一个问题你可能已经试过了,当然能,只不过BCD的自动加载设置可能很折腾…
至于第二个问题…

去年论坛回档时我便考虑过如何在Legacy BIOS下启动放在GPT盘上的Windows,我发现(其实已经有很多人发现了)可以用MBR引导盘(硬盘或U盘)安装(使用第三方程序)/启动/升级GPT盘上的Windows 7及以上版本(vista我试过了,不可以)。
自从远景上有一贴介绍了使用GPT上的保留扇区启动模拟UEFI(Clover DUET)进而启动Windows 8之后(参考资料4),我便对单盘GPT+Legacy BIOS启动Windows产生了兴趣。那篇帖子彻底颠覆了我对GPT分区表的认识。
后来我又发现有人用GRUB2将VHD虚拟硬盘模拟为启动盘启动Windows的方法(参考资料1,2,3)。
于是我便开始了探索之旅…

一、不顺利的探索
在看了上面提到的帖子和wiki后,我了解到GPT的保护MBR也可以写入引导扇区,GPT硬盘也可以在Legacy BIOS下正常引导(部分Intel原厂主板例外)。抱着试试看的心态,我翻出了硬盘里的Linux开始第一轮虚拟机探索之旅。过程没什么好说的,先用gparted分下区(设为gpt分区表),(linux分区是第三个分区,同时文件系统为ext3),再用安装程序就能把linux装进去了。
装好之后因为我不懂linux,我只好进入win8pe,安装好ext3插件,看看linux是怎么写引导的。
首先我打开了bootice,看到了这块GPT硬盘的MBR引导记录为“GRUB 2”,同时我又看了下PBR,没什么奇怪的东西。
随便写了下第三分区的PBR,发现linux的启动并未受到影响。
我随后尝试了所有分区删除,将备份的第三分区文件恢复入新的第三分区(已从ext3变为ext2),启动未受影响。
最后我将第一、二分区删除,新建新分区,这时发现grub2加载错误,出现grub rescue提示。
根据上面的测试我基本判断出来:
1、grub2是通过写入引导信息到GPT中的保护MBR(第一个扇区)来实现系统加载的。
2、引导哪个分区的信息是写到保护MBR中的。
3、引导分区的确认是通过分区号,并非分区签名/分区标识符。

本想这就可以直接引导bootmgr启动Windows了,可现实却很悲剧…

这就是我当时的试验图片,可以看出不仅bootmgr不读BCD,而且还不读字体,很明显bootmgr在加载BCD之前是根本不认GPT的。
很快我借助古哥找到了参考资料1,看了他的方法后,我大受启发,利用grub2将bootmgr.VHD成功引导。

二、艰难的引导器寻找过程
GRUB2的安装需要Linux,对于我这样的Linux纯小白来说太不方便,我曾尝试提取GRUB2的引导扇区,但因GRUB2的引导扇区过大,扇区0存不下,需要存到GPT分区表之后的一些扇区,无论是备份还是恢复均非常困难,并且因为GRUB2只能从ext分区启动,给我这样的Windows重度用户造成了很大不便。
于是我便到了无忧,看到了Pauly正在做新版本的xorboot,并且宣称支持GPT,心想希望终于要实现了,可惜的是…Pauly已经抛弃了传统BIOS支持…
随后我使用syslinux,可是无论如何都无法启动成功,很快,单盘GPT-BIOS启动Windows的计划就被我搁置了。
四个月之后的2015年1月,那份折腾的passion最终还是找回来了…

下面切入正题。
注意:目前来说此法(模拟MBR引导硬盘法)依旧存在一些bug,下面是已知的bug列表:
1、千万不要使用Metro启动页面/高级启动功能,高级启动功能会导致第二次开机时永远进入这个画面(因为在开机期间Windows无法识别虚拟引导分区,造成无法对一次性BCD选项进行删除操作,同时因为这个原因,Metro版本的多系统选择菜单也不会显示),比如说选择命令提示符则每次开机时都会加载WinRE,造成无法正常开机。
2、因为无法自动识别引导分区,所以WinRE不受密码保护…同时你也无法进行系统还原操作,除非你在命令提示符处加载bootmgr.VHD。
3、此法启动时间肯定要比MBR-Legacy BIOS略慢一点(毕竟有模拟过程)。
4、你无法升级这样安装的Windows,除非你用U盘做了替补引导装置。
5、某些老AMD平台对GPT支持不佳(使用卡顿)不属于本法bug范围内。
6、Diskgenius会破坏保护MBR中的引导扇区和VBoot分区的Legacy BIOS Bootable属性(相当于MBR分区表中的激活主分区),因此请大家尽量使用Windows自带的diskmgmt,diskpart来管理分区。

Step1 你需要准备下列软件/工具:
Windows 安装文件,Win8PE,BOOTICE,GPT FDISK Windows版,VHD Attach,VBoot 2.0,syslinux压缩包中的BIOS\MBR\GPTMBR.bin文件,挂载bootmgr.VHD用的1.bat文件。
以下文件我均会在压缩包中提供。

Step2 进入Win8PE,将硬盘初始化为GPT格式。创建两个分区,一个大小40MB,格式可以任意(FAT32/NTFS),另一个大小任意。
如图所示:


Step3 将压缩包中的vboot-v2文件夹中的所有文件都解压到40MB分区根目录。

Step4 将压缩包中的文件解压。将1.bat放置在D盘根目录(将要安装系统的分区)
打开BootICE,选择你的硬盘,点击主引导记录,将mbr文件夹中的gptmbr.bin恢复入启动扇区。


接下来选择分区引导记录。
选择40M分区,按图安装好PBR。


接下来打开Gdisk,注解都在图上:
最后用磁盘管理删除C盘(40M)盘符,需要注意下:gpt删除盘符是写在分区表中的,因此如果不手动分配,这个盘符永远不会自动挂载。

Step5 创建bootmgr.vhd,并分区。将分区改为活动分区。
如图所示,不再描述:


Step6 使用NT6快捷安装器安装系统
不解释。


Step7 重启,进入Windows安装界面后按Shift-F10,输入\1加载bootmgr.vhd虚拟启动盘,如果不行,多试几次。如果错过了最佳时机,Windows便会提示“Windows 无法配置在此计算机的硬件上运行。”,掌握不好时间的坛友可以将引导文件存在U盘上,然后再重建引导文件。

Step8 在Windows初次设置时继续Shift+F10,输入\1回车,进入系统后打开BOOTICE,按图将启动菜单改为传统模式,禁止自动修复,同时要将WinRE项的winload.efi改为winload.exe(看来WinRE安装程序是通过判断分区表来判断固件类型的。。U盘引导用户也要改这一项),否则WinRE(即系统恢复选项)无法正常加载。



Step9 安装.Net Framework 3.5,然后安装VHD Attach,按图设置为自动挂载bootmgr.vhd,最后设置好VHD Attach服务的依存关系,让它永远领先于TrustedInstaller启动(防止Windows Update在开机时找不到引导分区)。

依存关系是这样设置的:
按Win+x,选择命令提示符(管理员),输入
sc config TrustedInstaller depend= VHDAttach
回车即可。

All done!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1活跃度 +20 收起 理由
nighttob + 20 果然够折腾……

查看全部评分

来自 2#
iFive  楼主| 发表于 2015-4-19 18:32 发自PCEVA移动客户端 | 只看该作者
本文除了发到远景之外,没有发到任何其他论坛和杂志社,某杂志社请自重。

点评

看来盗稿已成常态了。。某人你敢站出来吗?  发表于 2015-4-20 18:58
3#
iFive  楼主| 发表于 2015-1-21 12:59 | 只看该作者
4#
NOIP117 发表于 2015-1-27 15:03 | 只看该作者
好折腾啊。我还是挺喜欢用GPT+UEFI,而且最好关掉CSM的UEFI
5#
板砖财 发表于 2015-1-27 17:15 | 只看该作者
纯蛋疼的实践啊,我还以为楼主要挑战Win Xp+Legency BIOS+GPT,结果是折腾Win8。
6#
iFive  楼主| 发表于 2015-1-27 17:38 | 只看该作者
板砖财 发表于 2015-1-27 17:15
纯蛋疼的实践啊,我还以为楼主要挑战Win Xp+Legency BIOS+GPT,结果是折腾Win8。
xp肯定不行了。2003可以试试,2003是可以这么启动成功的。
只不过一些步骤要改一下。

7#
iFive  楼主| 发表于 2015-1-28 12:45 | 只看该作者
NOIP117 发表于 2015-1-27 15:03
好折腾啊。我还是挺喜欢用GPT+UEFI,而且最好关掉CSM的UEFI

恩。我这帖子只是针对老电脑来说的。并且,使用MBR U盘启动GPT盘上的Windows系统比虚拟MBR硬盘(bootmgr.vhd)更稳定(几乎不存在bug),20块钱随便买个U盘(甚至用淘汰的64M U盘)就能搞定。(16M U盘也可以,先把引导创建到其他盘,再复制bootmgr和boot\bcd等启动Windows的必须文件到U盘就OK)
对于某些服务器来说,使用参考资料4的Clover DUET模拟UEFI法更好,毕竟服务器的引导速度就那样了,慢个5秒又不算什么。。
8#
NOIP117 发表于 2015-1-28 13:33 | 只看该作者
iFive 发表于 2015-1-28 12:45
恩。我这帖子只是针对老电脑来说的。并且,使用MBR U盘启动GPT盘上的Windows系统比虚拟MBR硬盘(bootmgr. ...

改天拿笔记本实验下,老本子没有UEFI BIOS也是。
9#
dongyi945 发表于 2015-1-28 14:12 | 只看该作者
重度强迫症患者
10#
iFive  楼主| 发表于 2015-1-28 23:28 发自PCEVA移动客户端 | 只看该作者
NOIP117 发表于 2015-1-28 13:33
改天拿笔记本实验下,老本子没有UEFI BIOS也是。

试试吧。
需要注意下休眠/快速启动可能会失灵,这有可能是VHD造成的,当然也有可能是因为系统唤醒时找不到引导设备(或设备变动)造成的。原因暂时未知。
如果你的笔记本里面有USB接口,可以试试插个小U盘。
当然,老笔记本肯定用不了3T盘(毕竟2.5"在那里摆着呢。。),在不支持UEFI的老笔记本上使用GPT意义不大。
折腾倒是可以。
11#
yddzhandao 发表于 2015-1-29 15:36 | 只看该作者
楼主还折腾这个,我连pe里装win8.1都装不起来,
我把引导设为esp的盘符,8.1用安装器装在c。重启就是不行,
12#
iFive  楼主| 发表于 2015-1-29 20:01 | 只看该作者
yddzhandao 发表于 2015-1-29 15:36
楼主还折腾这个,我连pe里装win8.1都装不起来,
我把引导设为esp的盘符,8.1用安装器装在c。重启就是不行, ...

可能是你的安装器版本太老,不支持uefi。
直接用微软自己的安装不就行了吗。。
估计你是看了那些PE装系统的“教程”。。
13#
easports1200 发表于 2015-2-1 00:17 | 只看该作者
话说GPT+UEFI到底哪里不好了……
14#
iFive  楼主| 发表于 2015-2-1 12:06 | 只看该作者
easports1200 发表于 2015-2-1 00:17
话说GPT+UEFI到底哪里不好了……

没有不好。
这只是部分Linuxer的强迫症而已啦。。
高分辨率支持+结构简洁,我还是比较喜欢用UEFI+GPT的。对于我来说:能用UEFI+GPT就用UEFI+GPT。
PS:对用不了UEFI的老电脑只能这么办。
15#
neilshi 发表于 2015-2-4 22:16 | 只看该作者
没事瞎折腾,可以增值经验

评分

参与人数 1活跃度 -41 收起 理由
iFive -41 签名广告

查看全部评分

16#
karl.12 发表于 2015-4-19 14:38 | 只看该作者
够折腾!不过很有启发,有些主板的伪uefi引导很有问题,可以用lz的方法试试
17#
iFive  楼主| 发表于 2015-4-19 18:33 发自PCEVA移动客户端 | 只看该作者
karl.12 发表于 2015-4-19 14:38
够折腾!不过很有启发,有些主板的伪uefi引导很有问题,可以用lz的方法试试 ...

那就直接用MBR好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部