无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7471|回复: 12
打印 上一主题 下一主题

[原创] BIOS方式安装、引导GPT分区单硬盘中的win7和win8系统问题

  [复制链接]
跳转到指定楼层
1#
发表于 2014-8-16 17:03:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qj_tzy 于 2014-8-22 23:26 编辑

BIOS方式安装、引导GPT分区单硬盘中的win7和win8系统问题

首先要说明的是,在我安装和引导过程中,得到了510819776等网友的热心指点,在此表示感谢!在我以下的阐述中,由于水平所限,错误在所难免。对于阐述中的错误,敬请各位网友指出,谢谢!

一、win7/win8系统安装

假如一电脑仅有一GPT分区的单硬盘,第一分区为esp分区,第二分区、第三分区拟安装以UEFI方式启动的win8、WIN7的64位系统,第四分区拟安装win7的32位系统。

下面,对UEFI方式启动的win8、WIN7的64位系统安装不予阐述,仅对win7的32位系统安装到gpt分区及VHD系统作阐述。

(一)原本机上安装的第二硬盘以MBR方式启动的WIN7的32位系统克隆到gpt分区
1.用CGI64/32一健还原工具(支持gpt分区),克隆到gpt分区硬盘的第四分区上。

2.在winpe下,用skyiar工具,在该分区为ahci硬盘模式安装驱动。

3.对win7的32位系统进行注册表盘符清理。
凡将一个分区安装的系统克隆到另一个分区,无论是nt5.x系统,还是nt6.x系统,均要进行注册表盘符清理,否则将进不了系统桌面,因其注册表中的系统盘符一般不是克隆到的盘符。
如克隆到的gpt分区的盘符为H:盘(要记住,以下要用)。方法是:
①在WIN7PE/win8pe中,打开regedit, HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices,将H:盘对应的两项(其中一项为其ID号)保留。若无ID号项,则双击H:盘项,复制出显示在注册表项右侧的二进制值,修改型如“\??\Volume{ffee9440-0deb-11e3-8493-7845c4387ae8}”的某一项的二进制值为刚才复制的该值。其余项全部删除。导出本机HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices为reg文件保存到某盘某目录下,用记事本打开该reg文件,把内容[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]改成[HKEY_LOCAL_MACHINE\000\MountedDevices]保存备用。如为sys.reg。

②在WIN7PE/win8pe中,打开regedit,用加载配置单元命令,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把HKEY_LOCAL_MACHINE\000\MountedDevices 中的所有信息删除;导入以上保存备用的sys.reg文件 ,编辑 MountedDevices,把\DosDevices\H: 改为 \DosDevices\C:,即把克隆到的gpt分区盘符H:盘修改为系统盘符C:(此步是关键,保证系统盘符为C:);选中000项,卸载配置单元,退出regedit。

4.用bootice对该分区的win7系统boot目录下的BCD进行编辑。

注:
经测试及有网友说,用bootice现发布的各版本、easybcd、BcdTool等工具,编辑esp分区\boot\目录下的bcd、esp分区\EFI\Boot\目录下的bcd、esp分区\EFI\Microsoft\Boot\下的BCD、各gpt分区中安装的win7/win8系统boot目录下的BCD、存放在gpt分区中的win7.vhd/win8.vhdx中的\boot\目录下的bcd,因微软故意按此设计的原因,以uefi方式启动时能正常读取BCD和正常启动系统,而以bios方式启动涉及gpt分区的win7/win8系统及其VHD/VHDX系统时,bootmgr启动管理器不能读取bcd,会启动失败。

且经我测试表明,将该gpt分区硬盘用DiskGenius无损改回mbr分区方式,不改各分区的bcd能正常启动;将存放在gpt分区的win7_x32.vhd复制到mbr分区硬盘上,不改bcd能正常启动;挂载存放在gpt分区的win7_x32.vhd,用Qemu启动测试器增强版测试挂载的盘,不改其内的bcd也能正常启动。

但此步修改bcd,对下步的启动来说,又是必须修改的。

(二)用从网上下载封装的win7_x32克隆版的iso安装到gpt分区
经测试,与(一)的方法基本相同,但要注意:一是从iso文件中首次克隆到分区中时,由于系统内的盘符信息在封装时已被清理过,注册表盘符清理这步就不做了。二是有的网友说,将系统克隆到gpt分区硬盘的前四个分区,成功的几率要大些,安装完成后再将之克隆到5-n(n最多为128)中的某一个gpt分区上,但切记要进行注册表盘符清理。

(三)将mbr或gpt分区安装好的win7_x32系统安装为vhd系统
1.将该WIN7的32位系统克隆备份为win7_x32.gho。
2.用Windows_VHD_VHDX辅助处理工具(2013_2012.12.25更新),选win7_x32.gho,生成win7_x32_gpt.vhd,存放在gpt分区(如第6个分区)。
3.在winpe下,挂载win7_x32_gpt.vhd,用skyiar工具,为ahci硬盘模式安装驱动。
4.对win7_x32_gpt.vhd进行注册表盘符清理。按一中(一)之3步进行,只是盘符是上步挂载win7_x32_gpt.vhd后的系统盘符,而非其第3步所说的win7系统所在的gpt分区的盘符。
5.bootice1.321对win7_x32_gpt.vhd中boot目录下的BCD进行编辑。

(四)系统的激活处理

1.软激活软件:失败
在涉及gpt分区中安装的nt6.x及其vhd系统,均不要再用Windows 7 Loader 1.9.5及以后版本等软激活软件来激活了,因其激活原理是:
①生成激活文件为XQAPR、win7.ld(或为其他名称)。
②若VHD系统虚盘的前部有64个扇区时,用bootice处理虚拟硬盘的mbr为wee查找XQAPR启动,设置pbr为bootmgr引导代码;若无64个扇区,则用bootice处理虚拟硬盘的mbr为nt5.x,设置分区pbr为ntldr但改名为XQAPR。
③启动时将先调用XQAPR,再搜索启动win7.ld所在硬盘分区(不搜索虚拟软盘分区)的bootmgr。
但涉及gpt分区时,bootmgr读取BCD会出错,所以此法不能采用。

2.写系统内核的激活软件:成功
对安装到gpt分区的nt6.x系统或存放在gpt分区的nt6.x的VHD/VHDX系统,不论是用bios方式还是uefi方式启动,win7_x32/win7_x64及其VHD系统均推荐采用Activite0.9激活;win8_x32/win8_x64及其VHD/vhdx系统,均推荐采用KMSAuto Net方式激活。以上激活可在bios方式或是uefi方式启动后激活,则以uefi或bios之另一方式启动后系统也是激活的。

二、以bios方式启动win7/win8系统
(一)方法一:xorboot搜索esp分区某目录下的grldr--启动boot_winnt6.ima包

1.将win8的64位bootmgr及boot目录(含其下的文件),复制到临时目录下,其中boot目录下仅保留Fonts(只保留wgl4_boot.ttf、chs_boot.ttf两个文件)、zh-CN子目录及bcd、boot.sdi、memtest.exe文件。

2.用bootice1.05编辑上步boot目录下的bcd,以启动win7.VHD系统(用bootice1.05编辑BCD可使BCD文件保持原大小为256kb,其他版本要精减bcd的文件大小),然后打包成boot_winnt6.ima包,存放到esp分区boot目录下。

3.用bootice分别对安装到gpt分区的win7_x32、win7_x64、win8_x64系统的\boot\目录下的bcd文件进行编辑,使其分别启动本分区的win7/win8系统。

4.在esp分区boot目录下拷入grldr,内置如下菜单:
title win7/win8.VHD--boot_winnt6.ima
#map (hd1) (hd0)
#map (hd0) (hd1)
#map --hook
#若gpt分区硬盘启动为第二硬盘时,下同
#boot_winnt6.ima内的bcd已修改为启动VHD系统的BCD
#但不能替换为vhd系统boot目录下的BCD
set pathgrub=/boot/
find --set-root --devices=h %pathgrub%boot_winnt6.ima
map --mem %pathgrub%boot_winnt6.ima (fd0)
map --hook
rootnoverify (fd0)
chainloader +1

title win7/win8/x32/x64_gpt--boot_winnt6.ima
#map (hd1) (hd0)
#map (hd0) (hd1)
#map --hook
#若gpt分区硬盘启动为第二硬盘时,下同
set pathgrub=/boot/
set sysdsk=(hd0,6)
#上句表示gpt分区系统所在的分区,不同的系统修改上句所指的分区编号即可
find --set-root --devices=h %pathgrub%boot_winnt6.ima
map --mem %pathgrub%boot_winnt6.ima (fd0)
map --hook
rootnoverify (fd0)
dd if=%sysdsk%/boot/bcd of=()/boot/bcd
#即用所在GPT分区系统boot目录下的BCD替换boot_winnt6.ima包中boot目录下的BCD
chainloader +1

注:①xorboot搜索esp分区某目录下的grldr的详细方法,请见帖子《BIOS方式引导、安装GPT分区的XP/03系统用户经验汇总》
http://bbs.wuyou.net/forum.php?m ... &fromuid=349593(出处: 无忧启动论坛)
    ②经测试,此法能正常启动安装在gpt分区的win8_x64/win8_x32/win7_x64/win7_x32系统,及存放在GPT分区的VHD/vhdx系统,且已激活。

(二)方法二:xorboot搜索esp分区某目录下的grldr+ntboot包启动存放在gpt分区中的win7_x32.vhd

复制ntboot通用工具包到esp分区boot目录下,并将chenall大完善后的ntboot复制到ntboot目录下替换原有的ntboot(此点是关键),grldr中内置如下菜单:
title boot win7_x32.vhd--ntboot
set pntboot=/boot/ntboot/ntboot
find --set-root --devices=h %pntboot%
set pntroot=%@root%
find --set-root --devices=h /vhdos/win7_x32.vhd
%pntroot%%pntboot% nt6=/vhdos/win7_x32.vhd
boot

注:
①若不用chenall大完善后的ntboot,因不能读取win7_x32.vhd内boot目录下的bcd,启动失败。
②若将win7_x32.vhd复制到mbr分区中,不更改win7_x32.vhd内的bcd,按此法能正常启动。且因win7_x32自身含有对gpt分区的支持文件,因此启动后能正常读写各gpt分区的文件。
③经测试,此法能成功启动存放在gpt分区中的win7_x32.vhd/win7_x64.vhd/win8_x64.vhdx系统。因此,强烈推荐此法。

(三)方法三:xorboot搜索esp分区某目录下的grldr+chenall大完善版ntboot启动安装在gpt分区中的win7/win8系统
title win7/win8/x32/x64_gpt
#map (hd1) (hd0)
#map (hd0) (hd1)
#map --hook
#若gpt分区硬盘启动为第二硬盘时,下同
set sysdsk=(hd0,6)
#上句表示gpt分区系统所在的分区,不同的系统修改上句所指的分区编号即可
set pntboot=/boot/ntboot/ntboot
find --set-root --devices=h %pntboot%
%pntboot% nt6=%sysdsk%
boot

注:经测试,此法启动成功。

(四)其他方法:均失败。
1.用xorboot直接搜索esp分区的bootmgr、各gpt分区的bootmgr,或用xorboot搜索grldr启动esp分区的bootmgr或各gpt分区的bootmgr
因一中(一)之4步备注所述原因,不能读取bcd文件,因此会启动失败。

2.用xorboot直接搜索esp分区boot目录下的boot_win8.ima包
按(一)中方法打包boot_win8.ima,用xorboot直接搜索之启动时会出现"bootmgr is missing"的出错提示,未能成功。

注:这应是xorboot的功能缺陷问题

三、尚未解决的问题
(一)如何用grub4dos判断是gpt分区硬盘还是mbr分区硬盘,以根据判断结果采取不同的后续操作

1.网友510819776 提出的方法:

用g4d判读磁盘是gpt分区表很简单
dd if=(hd0)+1 skip=450 bs=1 count=1 of=(md)400+1  
checkrange 0xee read 0x32000 && echo gpt
原理是gpt硬盘的分区表保留的mbr里面第一个主分区分区id是0xee
代码的意思是:判断硬盘0扇区偏移450字节是否为0xEE  如果是就执行echo gpt,当然你可以换成你自己的命令

问:若gpt分区硬盘的0扇区写入了xorboot的主启动代码,是否还可这样判断

网友510819776答:
xorboot只是负责启动而已,不会修改mbr或者gpt的分区表,如果分区表都修改了,那就不是引导工具,而是分区工具了。
gpt的头一个扇区保留mbr结构是:只有windows系统才会优先解读,0xee 是必须的,如果你分区表没有0xee,就一定不是标准的gpt分区表。

2.chenall大师的方法:
判断的话可以用NTBOOT(chenall完善版)里面的方法:
root (hdx,y)
checkrange 0xee read 0x8334 && echo gpt

(二)如何用grub4dos隐藏及显现gpt分区,以在启动某一gpt分区操作系统前先显现该分区,并隐藏其余gpt分区操作系统所在分区。

经chenall大师的修改,grub4dos-0.4.5c-2014-08-22版已经能正常显示隐藏gpt分区了:

用hide/unhide命令来隐藏显示gpt分区。

至于parttype对于gpt分区无效,新的版本已经禁止parttype对gpt分区的操作,以防止出错。

用parttype命令直接修改GPT分区的属性时,可能会导致分区无法访问,因此对GPT不了解就不要使用parttype命令修改。

评分

参与人数 3无忧币 +15 收起 理由
CHENG44 + 5 赞一个!
nf17b + 5 赞一个!
hero8000 + 5 赞一个!

查看全部评分

2#
发表于 2014-8-16 21:42:56 来自手机 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

3#
发表于 2014-8-16 21:53:41 | 只看该作者
谢谢楼主总结的很好
回复

使用道具 举报

4#
发表于 2014-8-17 18:02:10 | 只看该作者
技术贴,支持一下!
这种BIOS+GPT方式的启动我也做成功了(都是VHD版),贴上图看看:






XP可以用ISO镜像完成制作,而WIN7x86只能使用“移植的系统”。
所以我认为最大的问题是:WIN7x86不能使用安装版或GHOST版完成制作,将会严重影响此技术推广使用。
(估计原因是:安装过程中要回写引导,而仿真盘只读,或仿真度不够,被系统识破)
而高于WIN7x86版的其它系统制作可以在UEFI环境下安装完成,在BIOS下加个引导就行了,没有此问题困扰。。。

点评

我与你测试的结果相反:XP我用源安装版不知如何安装到gpt分区,而win7我用ghost版.iso安装成功。我看你上的图,好像是用XP源安装版安装的。如何用XP源安装版安装到gpt分区,还希望贴出,让我们学习一下。  详情 回复 发表于 2014-8-17 19:21
回复

使用道具 举报

5#
 楼主| 发表于 2014-8-17 19:21:20 | 只看该作者
细细哥~ 发表于 2014-8-17 18:02
技术贴,支持一下!
这种BIOS+GPT方式的启动我也做成功了(都是VHD版),贴上图看看:

我与你测试的结果相反:XP我用源安装版不知如何安装到gpt分区,而win7我用ghost版.iso安装成功。我看你上的图,好像是用XP源安装版安装的。如何用XP源安装版安装到gpt分区,还希望贴出,让我们学习一下。
回复

使用道具 举报

6#
发表于 2014-8-17 19:38:17 | 只看该作者
今天刚好恢复了一台带esp分区的机器。win7 64位系统,总是无端弹出垃圾网页,并自动安装网游链接,杀毒软件是新毒霸,清理无效。卸载后安装360卫士,进行清理,看提示把安装的垃圾链接都找出来了,还挺高兴,但重启系统后,悲剧了,屏幕漆黑,只有一个鼠标指针在那里,进安全模式也是这个德行。无奈决定重装,进了pe,启动dg发现居然是双硬盘,30g三星固态,500g西数机械盘,esp分区100兆在500g的前端是c:,三星固态是d:盘系统盘,上网百度后,找到win7旗舰版的完整无精简gho,强行恢复到d:,然后在pe命令行运行 bcdboot  d:\windows /s c: /f uefi /l zh-cn,关机,去掉启动u盘,重启系统,ok。 此机器为bios启动模式。
回复

使用道具 举报

7#
发表于 2014-8-18 11:10:31 | 只看该作者
1、我在IT天空发了个有关XP_VHD的帖子,这阵子IT天空关门了,等开放了我把链接补上。
2、提醒一下,作测试时一定要:绝对只有一块GPT硬盘
3、看到有新的NTBOOT,还没测试。(原始工具包是这个吧?NTBOOT-2013-07-22.zip)
4、只进行了VHD测试,更多测试进行中。。。
回复

使用道具 举报

8#
发表于 2014-8-18 13:27:24 | 只看该作者
哇,这个技术贴,必须支持,楼主辛苦整理了。我等收藏了。
回复

使用道具 举报

9#
发表于 2014-8-18 20:05:09 | 只看该作者
本帖最后由 2010nf17b 于 2014-8-21 03:36 编辑

感謝分享 , 目前參考您的做法 , 個人可以做到用 U盤引導的方式  , 成功啟動 第10分區的 win7x86 及 第11分區的 xp


回复

使用道具 举报

10#
 楼主| 发表于 2014-8-18 23:54:15 | 只看该作者
2010nf17b 发表于 2014-8-18 20:05
感謝分享 , 目前參考您的做法 , 個人可以做到用 U盤引導的方式  , 成功啟動 第10分區的 win7x86 及 第11分 ...

祝贺安装成功。但建议从硬盘引导,总觉得从U盘引导系统不爽。
回复

使用道具 举报

11#
发表于 2014-8-19 15:56:28 | 只看该作者
qj_tzy 发表于 2014-8-18 23:54
祝贺安装成功。但建议从硬盘引导,总觉得从U盘引导系统不爽。


硬盘引导 也完成

xorboot 配合 [发布] 2014-08-12-NTBOOT修改版

非單文件版(放在esp分區) , 替換 6kb 的 ntboot , 用那個 detect.lst  , 自動搜索作業系統的方式 , 可以啟動全部的系統 (legacy + uefi)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-8 14:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表