2023年11月25日发(作者:)

BIOS方式安装、引导GPT分区单硬盘中的win7win8

统问题

BIOS方式安装、引导GPT分区单硬盘中的win7win8系统问

首先要说明的是,在我安装和引导过程中,得到了510819776

网友的热心指点,在此表示感谢!在我以下的阐述中,由于水平所限,

错误在所难免。对于阐述中的错误,敬请各位网友指出,谢谢!

一、win7/win8系统安装

假如一电脑仅有一GPT分区的单硬盘,第一分区为esp分区,第

二分区、第三分区拟安装以UEFI方式启动的win8WIN764位系

统,第四分区拟安装win732位系统。

下面,对UEFI方式启动的win8WIN764位系统安装不予阐

述,仅对win732位系统安装到gpt分区及VHD系统作阐述。

(一)原本机上安装的第二硬盘以MBR方式启动的WIN732

位系统克隆到gpt分区

1.CGI64/32一健还原工具(支持gpt分区),克隆到gpt

区硬盘的第四分区上。

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

动。

3.win732位系统进行注册表盘符清理。

凡将一个分区安装的系统克隆到另一个分区,无论是nt5.x系统,

还是nt6.x系统,均要进行注册表盘符清理,否则将进不了系统桌面,

因其注册表中的系统盘符一般不是克隆到的盘符。

如克隆到的gpt分区的盘符为H:盘(要记住,以下要用)。方

法是:

WIN7PE/win8peregedit

HKEY_LOCAL_MACHINESYSTEMMountedDevices,将H:盘对

应的两项(其中一项为其ID号)保留。若无ID号项,则双击H:盘

??Volume{ffee9440-0deb-11e3-8493-7845c4387ae8}”

一项的二进制值为刚才复制的该值。其余项全部删除。导出本机

HKEY_LOCAL_MACHINESYSTEMMountedDevicesreg文件保

reg

[HKEY_LOCAL_MACHINESYSTEMMountedDevices]

②在WIN7PE/win8pe中,打开regedit,用加载配置单元命令,

H:WindowsSystem32configsystem

000HKEY_LOCAL_MACHINE

[HKEY_LOCAL_MACHINE000MountedDevices]

HKEY_LOCAL_MACHINE000MountedDevices 中的所有信息删除;

导入以上保存备用的文件 ,编辑 MountedDevices,把

DosDevicesH: 改为 DosDevicesC:,即把克隆到的gpt分区盘符

H:盘修改为系统盘符C:(此步是关键,保证系统盘符为C:);选中

000项,卸载配置单元,退出regedit

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

辑。

注:

经测试及有网友说,用bootice现发布的各版本、easybcd

BcdTool等工具,编辑esp分区boot目录下的bcdesp分区

EFIBoot目录下的bcdesp分区EFIMicrosoftBoot下的BCD

gpt分区中安装的win7/win8系统boot目录下的BCD、存放在

gpt分区中的/中的boot目录下的bcd,因微软

故意按此设计的原因,以ue

fi方式启动时能正常读取BCD和正常启动系统,而以bios方式启

动涉及gpt分区的win7/win8系统及其VHD/VHDX系统时,

bootmgr启动管理器不能读取bcd,会启动失败。

且经我测试表明,将该gpt分区硬盘用DiskGenius无损改回mbr

分区方式,不改各分区的bcd能正常启动;将存放在gpt分区的

win7_复制到mbr分区硬盘上,不改bcd能正常启动;挂载

存放在gpt分区的win7_,用Qemu启动测试器增强版测试

挂载的盘,不改其内的bcd也能正常启动。

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

(二)用从网上下载封装的win7_x32克隆版的iso安装到gpt

经测试,与(一)的方法基本相同,但要注意:一是从iso文件中

首次克隆到分区中时,由于系统内的盘符信息在封装时已被清理过,

注册表盘符清理这步就不做了。二是有的网友说,将系统克隆到gpt

分区硬盘的前四个分区,成功的几率要大些,安装完成后再将之克隆

5-n(n最多为128)中的某一个gpt分区上,但切记要进行注册表

盘符清理。

(三)将mbrgpt分区安装好的win7_x32系统安装为vhd

1.将该WIN732位系统克隆备份为win7_

2.Windows_VHD_VHDX辅助处理工具(2013_2012.12.25

新),选win7_,生成win7_x32_,存放在gpt分区

(如第6个分区)。

3.winpe下,挂载win7_x32_,用skyiar工具,为ahci

硬盘模式安装驱动。

4.win7_x32_进行注册表盘符清理。按一中(一)之3

步进行,只是盘符是上步挂载win7_x32_后的系统盘符,而

非其第3步所说的win7系统所在的gpt分区的盘符。

e1.321win7_x32_boot目录下的BCD

行编辑。

(四)系统的激活处理

1.软激活软件:失败

在涉及gpt分区中安装的nt6.x及其vhd系统,均不要再用

Windows 7 Loader 1.9.5及以后版本等软激活软件来激活了,因其激

活原理是:

①生成激活文件为XQAPR(或为其他名称)。

②若VHD系统虚盘的前部有64个扇区时,用bootice处理虚拟

硬盘的mbrwee查找XQAPR启动,设置pbrbootmgr引导代

码;若无64个扇区,则用bootice处理虚拟硬盘的mbrnt5.x,设

置分区pbrntldr但改名为XQAPR

③启动时将先调用XQAPR,再搜索启动所在硬盘分区

(不搜索虚拟软盘分区)的bootmgr

但涉及gpt分区时,bootmgr读取BCD会出错,所以此法不能

采用。

2.写系统内核的激活软件:成功

对安装到gpt分区的nt6.x系统或存放在gpt分区的nt6.x

VHD/VHDXbiosuefi

win7_x32/win7_x64及其VHD系统均推荐采用Activite0.9激活;

win8_x32/win8_x64及其VHD/vhdx系统,均推荐采用KMSAuto Net

方式激活。以上激活可在bios方式或是uefi方式启动后激活,则以

uefibios之另一方

式启动后系统也是激活的。

二、以bios方式启动win7/win8系统

(一)方法一:xorboot搜索esp分区某目录下的grldr--启动

boot_

1.win864bootmgrboot目录(含其下的文件),复

bootFonts

wgl4_chs_两个文件)、zh-CN子目录及bcd

文件。

2.bootice1.05bootbcd

系统(用bootice1.05编辑BCD可使BCD文件保持原大

小为256kb,其他版本要精减bcd的文件大小),然后打包成

boot_包,存放到esp分区boot目录下。

3.bootice分别对安装到gpt分区的win7_x32win7_x64

win8_x64系统的boot目录下的bcd文件进行编辑,使其分别启动

本分区的win7/win8系统。

4.esp分区boot目录下拷入grldr,内置如下菜单:

title win7/--boot_

#map (hd1) (hd0)

#map (hd0) (hd1)

#map --hook

#gpt分区硬盘启动为第二硬盘时,下同

#boot_内的bcd已修改为启动VHD系统的BCD

#但不能替换为vhd系统boot目录下的BCD

set pathgrub=/boot/

find --set-root --devices=h %pathgrub%boot_

map --mem %pathgrub%boot_ (fd0)

map --hook

rootnoverify (fd0)

chainloader +1

title win7/win8/x32/x64_gpt--boot_

#map (hd1) (hd0)

#map (hd0) (hd1)

#map --hook

#gpt分区硬盘启动为第二硬盘时,下同

set pathgrub=/boot/

set sysdsk=(hd0,6)

#上句表示gpt分区系统所在的分区,不同的系统修改上句所指的

分区编号即可

find --set-root --devices=h %pathgrub%boot_

map --mem %pathgrub%boot_ (fd0)

map --hook

rootnoverify (fd0)

dd if=%sysdsk%/boot/bcd of=()/boot/bcd

#GPTbootBCD

boot_包中boot目录下的BCD

chainloader +1

注:①xorboot搜索esp分区某目录下的grldr的详细方法,请见

帖子《BIOS方式引导、安装GPT分区的XP系统用户经验汇总》。

gpt

win8_x64/win8_x32/win7_x64/win7_x32系统,及存放在GPT分区

VHD/vhdx系统,且已激活。

(二)方法二:xorboot搜索esp分区某目录下的grldr+ntboot

包启动存放在gpt分区中的win7_

复制ntboot通用工具包到esp分区boot目录下,并将chenall

大完善后的ntboot复制到ntboot目录下替换原有的ntboot(此点

是关键),grldr中内置如下菜单:

title boot win7_--ntboot

set pntboot=/boot/ntboot/ntboot

find --set-root --devices=h %pntboot%

set pntroot=%@root%

find --set-root --devices=h /vhdos/win7_

%pntroot%%pntboot% nt6=/vhdos/win7_

boot

注:

①若不用chenall大完善后的ntboot,因不能读取win7_

boot目录下的bcd,启动失败。

②若将win7_复制到mbr分区中,不更改win7_

内的bcd,按此法能正常启动。且因win7_

x32自身含有对gpt分区的支持文件,因此启动后能正常读写各

gpt分区的文件。

gpt

win7_/win7_/win8_系统。因此,强烈推荐

此法。

(三)方法三: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_

按(一)中方法打包boot_,用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分区表。

l大师的方法:

判断的话可以用NTBOOTchenall完善版)里面的方法:

root (hdx,y)

checkrange 0xee read 0x8334 && echo gpt

(二)如何用grub4dos隐藏及显现gpt分区,以在启动某一gpt

分区操作系统前先显现该分区,并隐藏其余gpt分区操作系统所在分

区。

chenallgrub4dos-0.4.5c-2014-08-17

grub4dos-0.4.6a-2014-08-17已经能正常显示隐藏gpt分区了:

hide/unhide命令来隐藏显示gpt分区。至于parttype对于

gpt分区无效,新的版本已经禁止parttypegpt分区的操作,以防止

出错。