BIOS方式引导、安装GPT分区的XP系统用户经验汇总
首先要说明的是,在我安装和引导过程中,得到了510819776等网友的热心指点,在此表示感谢!在我以下的阐述中,由于水平所限,错误在所难免。对于阐述中的错误,敬请各位网友指出,谢谢!
其次要说明的是:
①安装在GPT分区中的winXP或winXP.VHD只能以bios方式启动,而不能以uefi方式启动。
②gpt分区硬盘没有激活分区、主引导记录MBR、分区引导记录PBR的概念,而是有一个类fat32/fat16格式的esp分区作uefi的引导分区,引导文件都存放在里面,ueif启动时自动搜索里面的文件而启动的。下面,为安ios引导用的xorboot启动代码之需,仍沿用MBR和PBR的称谓。
③gpt分区的好处:一是支持2T以上大硬盘;二是分区表更加安全;三是可以超过4个主分区;四是同时兼容uefi的启动。
现在已经证实,除了xp和win7 32位不能直接支持从gpt分区启动之外,linux的各种发行版本、unix的各种版本,都是完美支持gpt分区的。
④bios+gpt方式意义不大:小于2TB的硬盘,一般没必要用GPT。大于2TB的硬盘,bios访问大多会出问题,所以大于2T的硬盘启动一般用EFI+GPT。以下是在小于2TB的GPT分区硬盘上作的试验。
一、引导菜单的安装和编制
(一)创建xorboot启动菜单和安装xorboot启动代码
1.在xorboot中创建启动菜单
由于xorboot不列显GPT分区硬盘的信息,不能采取指定启动gpt分区中某文件的方法,而是采取“搜索文件并启动”方式,直接搜索启动ntldr、ima包、VHD文件的方式,或编辑grldr内置菜单、并搜索启动grldr的方式,以启动安装在gpt分区的系统,或启动存放在gpt分区的vhd系统。
2.安装xorboot启动代码
目前,对gpt分区格式的磁盘,xorboot0.72、0.73均不支持,而用0.68、0.71正式版(2014.01.02版)则部分支持。用0.68安装后,常常不到启动文件,要用0.71正式版,即使0.71-2014-01-07版也不支持。用不支持的版本安装后,启动时会出现“boot error”的出错提示。
对于xorboot_0.71正式版(2014.01.02版),其输出的bin文件大小为32kb,即占用32*1024/512=64扇区。
对于该版以后的其他xorboot_0.7X版本,其输出的bin文件大小为38kb,即占用38*1024/512=78扇区。
均分为主启动代码(占1个扇区,必须安装到主引导记录MBR或分区引导记录PBR中)、辅助代码(占63或77个扇区,辅助代码可以安装到磁盘任何位置,但是务必安装到非数据区,如安装到分区间隙中)两部分。
方法如下:选“部署到磁盘指定扇区”→①硬盘选GPT分区硬盘。②首扇区选0扇区,用于安装主启动代码。不能输入1及以后扇区,因gpt分区表的 1扇区、2扇区等都保存有分区信息
,若如此就会毁了分区信息。对于MBR分区硬盘,还可将主启动代码安装到PBR,若安装到 PBR 的话,注意不要安装到 EXFAT 分区,仅支持安装到 FAT16/FAT32/NTFS 分区的引导扇区上。由于gpt分区格式磁盘不支持从分区引导记录PBR启动,只能将主启动代码安装到MBR中,且不能勾选首扇区为分区的引导扇区(pbr),因此处为mbr而非pbr。③辅助代码安装到分区间隙中(用WinHex软件查看要安装到的分区间隙的扇区编号)。
(二)启动安装在gpt分区的winxp系统
若已将XP系统安装到GPT分区硬盘的某个分区,如第7个分区。安装方法见二。启动方法如下:
uefi boot将GPT分区硬盘的第一个分区划为ESP分区(实质为fat16或fat32分区),将XP的ntldr、boot.ini、bootfont.bin、NTDETECT.COM等4个启动文件拷入该分区根目录。
也可直接搜索启动安装winxp所在的gpt分区根目录下的ntldr,但xotboot对ntfs分区支持不好,且要求其他分区根目录下无ntldr文件。
其中,boot.ini的内容如下:
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(7)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(7)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
注:
①
xorboot搜索功能不完善,特别是对搜索ntfs分区中的文件的功能支持不好。
xorboot搜索文件时提示“NO Such file",或用grldr访问gpt分区硬盘出现磁盘错误,或esp分区有efi目录及相关文件确无uefi启动项出现时,一般是因gpt分区硬盘存在如下问题造成的:即进入bootice的分区管理中无法列显gpt分区硬盘的分区
信息、不能写入分区引导记录。解决办法是:先进入windows或winpe的磁盘管理功能,删除某一gpt分区的盘符,再添加该gpt分区的盘符,再进入bootice即可显示gpt磁盘的分区信息了。
经如上处理仍搜索不到文件时的解决办法:将搜索不到的文件重命名为“原名_复件”,复制一份命名为原名,也许就能搜索到。但有时即使这样处理后,仍搜索不到指定的文件,这应是xorboot的搜索功能不完善造成的。
②经测试,该方式能正常启动进入系统桌面。
将XP的ntldr、boot.ini、bootfont.bin、NTDETECT.COM等4个启动文件,制作成bootxp.ima,存放在esp分区boot目录下。
启动时,出现"ntldr is missing"的出错提示,未能成功。
注:这应是xorboot的功能缺陷问题。
grldr的内置菜单为:
title winxp_x32_gpt --bootxp.ima
#map (hd1) (hd0)
#map (hd0) (hd1)
#map --hook
#若gpt分区硬盘启动为第二硬盘时,下同
set pathgrub=/boot/
find --set-root --devices=h %pathgrub%bootxp.ima
map %pathgrub%bootxp
.ima (fd0)
map --hook
rootnoverify (fd0)
chainloader +1
注:
①启动时,若xorboot搜索grldr后出现out of range(超出范围)的出错提示时,是因grldr默认或设定的屏幕分辨率高于显示器的最大分辨率造成的,可在grldr内置菜单的前面加入一句graphicsmode -1 800 600即可,可不设定背景及字体文件。
②经测试,能成功启动进入系统桌面。
grldr的内置菜单为:
title winxp_x32_gpt --ntldr
rootnoverify (hd0,6)
#chainloader +1
#经测试,若用上句,要先用bootice为该分区安装了ntldr类型的分区引导记录PBR,也能启动。
chainloader /ntldr
注:经测试,能成功启动进入系统桌面。因此,推荐此法。
title winxp_x32_gpt --ntboot
#map (hd1) (hd0)
#map (hd0) (hd1)
#map --hook
set pntboot=/boot/ntboot/ntboot
set sysdsk=(hd0,6)
find --set-root --devices=h %pntboot%
%pntboot% nt5=%sysdsk%
boot
注:经测试,能成功启动进入系统桌面。
(三)启动存放在gpt分区的winxp.vhd系统
将winxp安装为VHD系统(如何安装详见三)存放在GPT分区某目录下,如第6分区。同时创建其子VHD即winxp_sub.vhd也存放在该GPT分区相同目录下。启动的方法如下:
选启动文件的系统类型时,要选vboot。但启动时,会提示硬盘I/O错误,可不于理睬,按几次回车后,就可正常启动。
将vboot(含其下的文件及目录)复制到esp分区根目录,编辑\vboot\grub\grub.cfg文件,在其菜单段加入下段:
menuentry "Boot winxp_sub.vhd" {
vboot harddisk="(UUID=94a437daa437bd94)/vhdos/winxp_sub.vhd"
}
注:
①winxp_sub.vhd与其父VHD须在同一分区同一目录下。
②(UUID=94a437daa437bd94)是winxp_sub.vhd所在分区的磁盘ID,在windows/winpe环境中,可用\vboot\vbootedit uuid x:命令查看x:盘的uuid号。64位系统中用\vboot\vbootedit64 uuid x:命令
③UUID的方式兼容性最好,当然也可使用(hd0,n)方式(n从1起算),即将(UUID=94a437daa437bd94)全部替换为(hd0,n),当然后一种的兼容性差一些。据网友510819776的说明,若采用后一种方式,将vhd系统存放在前四个gpt分区以外的分区时,启动时会蓝屏。而采用前者则不存在这一问题。
按以上2中的方法处理后,并将vboot目录下的所有文件及子目录打包成vboot_xpvhd.ima包,存放在esp分区boot目录下。
注:卡在启动vboot_xpvhd.ima包处,猜测可能是因vboot_xpvhd.ima存放不连续造成的,但用PowerDefragmenter整理连续后仍如此。应可能是xorboot的功能不完善造成的。
分区vboot目录下的vbootldr
按以上2中的方法处理后,在grldr中内置如下菜单:
title boot winxp_sub.vhd--vbootldr
find --set-root --devices=h /vboot/vbootldr
kernel /vboot/vbootldr
按以上3中的方法处理后,在grldr中内置如下菜单:
title boot winxp_sub.vhd--vboot_xpvhd.ima
set pathgrub=/boot/
find --set-root --devices=h %pathgrub%vboot_xpvhd.ima
map %pathgrub%vboot_xpvhd.ima (fd0)
map --hook
rootnoverify (fd0)
chainloader +1
复制ntboot通用工具包到esp分区boot目录下,在grldr中内置如下菜单:
title boot winxp_sub.vhd--ntboot
set pntboot=/boot/ntboot/ntboot
find --set-root --devices=h %pntboot%
set pntroot=%@root%
find --set-root --devices=h /vhdos_gpt/winxpx32_gpt_child.vhd
%pntroot%%pntboot% vboot=/vhdos_gpt/winxpx32_gpt_child.vhd
boot
注:推荐此法。
二、安装winxp到GPT分区
(一)将在mbr分区硬盘上安装好的系统备份winxp.gho克隆到指定gpt分区上
1.在mbr分区硬盘上安装好winxp系统,并将该系统备份为winxp.gho。
2.用CGI64/32一健还原工具(支持gpt分区),将winxp.gho,克隆到GPT分区硬盘的任一ntfs分区上,如为最后一个分区,编号为7。
3.加入gpt分区支持补丁。
①将win2003系统\windows\system32\drivers\下的disk.sys、diskdump.sys文件拷入winxp系统的相同位置覆盖之。经测试,不需要拷贝diskdump.sys文件。
②将win2003系统\windows\system32\drivers\下的disk.sys文件拷入winxp系统\windows\system32\dllcache\下覆盖disk.sys文件。如果没有这个文件那就不用管。
③xp系统的\windows\Driver Cache\下面有drivers.cab、sp3.cab文件,直接点击cab包就可查看其内包含的文件,但不能直接向里面拷贝文件,发现disk.sys文件在sp3.cab包文件中,当然也可能在drivers.cab包文件中,我把它解压到一个文件夹,将2003的disk.sys拷贝到解压的相应文件夹中覆盖相同的文件,再用cab包工具将该文件压缩回cab包。但压缩回后,sp3.cab文件中的disk.sys又被改回xp系统的disk.sys文件,不知为何。于是就将drivers.cab、sp3.cab文件改名,或者直接将其清空。经测试,cab包改名或直接清空的方法,均可行。
注:2003系统的disk.sys对gpt支持是非常好的,但只限于对gpt硬盘的头2T空间的支持,对2T以后的空间不支持,如果硬盘小于2T,或不操作2T后的那部分空间,即可完美使用。
4.清理注册表盘符信息。若不清理盘符信息,xp会在滚动条后卡在带"windows XP"字样和徽标的界面,而始终不出现“欢迎使用”的界面,进不了系统桌面。遇到这样的问题,一般都是因为未清理注册表盘符的原因造成的,因其注册表中的系统盘符一般不是克隆到
的盘符。
如克隆到的gpt分区的盘符为H:盘(要记住,以下要用)。方法是:
①在WIN7PE/win8pe中,打开regedit, HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices,将H:盘对应的两项(其中一项为其ID号)保留。若无ID号项,则双击H:盘项,复制出显示在注册表项右侧的二进制值,修改型如“\??\Volu
me{ffee9440-0deb-11e3-8493-7845c4387ae8}”的某一项的二进制值为刚才复制的该值。其余项全部删除。导出本机HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices为reg文件保存到某盘某目录下,用记事本打开该reg文件,把内容[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]改成[HKEY_LOCAL_MACHINE\000\MountedDevices]保存备用。如为。
②在WIN7PE/win8pe中,打开regedit,用加载配置单元命令,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把HKEY_LOCAL_MACHINE\000\MountedDevices 中的所有信息删除;导入以上保存备用的文件 ,编辑 MountedDevices,把\DosDevices\H: 改为 \DosDevices\C:,即把克隆到的gpt分区盘符H:盘修改为系统盘符C:(此步是关键,保证系统盘符为C:);选中000项,卸载配置单元,退出regedit。
(二)将从网上下载封装的克隆版winxp.iso直接安装到gpt分区
1.用虚拟光驱等软件加载从网上下载的克隆版winxp.iso为一虚拟光盘符,用CGI64/32一健还原工具,选择该虚拟光盘符中的winxp.gho,克隆到GPT分区硬盘的任一ntfs分区上,如为最后一个分区,编号为7。假设其所在gpt分区的盘符为H:。
2.按照上述(二)中第3步之方法,加入gpt分区支持补丁,此步建议仅将sp3.cab改名,drivers.cab不改名。
3.清理注册表盘符信息,此时打开regedit,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE,发现其下无MountedDevices项,因此,此时不需要清理盘符信息。
4.重启进入gpt分区中的winxp,开始执行封装程序的安装过程,若其中要求插入sp3.cab的盘需要拷入文件可选放弃,直到执行完所有安装过程。但若因放弃不能继续时,只有强行重启进入winpe中,按本方法第2步把改名后的sp3.cab改回原名,重新执行第4步。若不能重新执行第4步,只有重新克隆winxp.iso到gpt分区了。但sp3.cab改回原名重新执行第4步后,须在执行下步前,要按第3步重新加入gpt分区支持补丁。
5.重启再次进入gpt分区中的winxp,若过滚动条后至“欢迎使用”界面前卡住进不了桌面,须按(一)中第4步的方法清理注册表盘符信息,并把sp3.cab改回原名,再重启即可进入系统桌面了。此时,会自动安装一些驱动程序,并可用先下载的万能驱动助理WanDrv,为其安装驱动。在此过程中不要重启。且可见IDE/ATA的IDE或AHCI模式的驱动还未安装,所以刚才能进入系统桌面。
6.重启进入WINPE
,一是为winxp重新加入gpt分区支持补丁,并将sp3.cab改名。二是硬盘模式若为AHCI模式的话,此时要执行先下载的SkyIAR,为winxp装入AHCI驱动。
7.重启进入winxp,就安装OK了。
(三)将从网上下载源安装版winxp.iso直接安装到gpt分区(未实现)
将该iso文件刻录为光盘进行安装,或进入winpe中虚拟该iso为光盘后,直接执行setups进行安装,均会在安装过程中出
现7B蓝屏。因此我采用了下法:
1.用winntsetup3.61进行安装:①安装文件夹,选虚拟的光盘Z:。②引导驱动器、安装磁盘,均选GPT分区硬盘的某一NTFS分区。③选不要更新启动代码。④winntsetup3.61安装执行完成后,只是将winxp的初始文件拷入了gpt分区,此时,其根目录下尚无boot.ini文件,需将esp分区根目录下的winxp的4个启动文件移动到某目录下,以让xorboot直接搜索刚才安装到的gpt分区根目录下的ntldr进行启动。
2.重启进入了winxp的安装过程。仍因源版winxp安装光盘未集成ahci及gpt分区支持补丁,如此安装照样会出现7B蓝屏。
因此,将从网上下载的源安装版winxp.iso直接安装到gpt分区,现不知如何实现。
三、将MBR或GPT分区硬盘上的winxp系统制作成winxp.vhd存放在GPT或mbr分区上启动的方法
以下各步建议在win7pe/win8pe中进行:
1.在mbr分区硬盘上安装好winxp系统,或者按上述二中的方法在gpt分区上安装好winxp系统后,用CGI64/32一健还原工具,克隆备份该系统为winxp_mbr.gho或者winxp_gpt.gho。
2.用WinXP_VHD辅助处理工具2011,选择winxp_mbr.gho或者winxp_gpt.gho,生成winxp.vhd,生成的VHD文件内部的磁盘格式均为mbr分区格式,而非gpt分区格式(若用DiskGenius软件将VHD文件的内部磁盘格式更改为GPT分区格式,
经测试,vboot将不能启动该VHD系统),要选导入vboot驱动,存放入GPT分区硬盘或者MBR分区硬盘的任一NTFS分区,如第7分区(编号从1起算时)。
3.挂载winxp.vhd,挂载后该系统的盘符如为H:盘,拷入vboot1.1已破解的vbootdsk.sys,替换winxp.vhd中的\windows\system32\drivers\下的vbootdsk.sys。
4.按照以上二中(一)之3步的方法加入gpt分区支持补丁。
5.进入注册表清理盘符。按照二中(一)之4步的方法进行,只是盘符是上步挂载winxp.vhd后的系统盘符,而非其第4步所说的winxp系统所在的gpt分区的盘符。
6.先启动母VHD,待调试完成后,再生成子VHD系统并启动。
注:按以下方法处理后,第一次能正常进入该VHD系统,系统盘符为c:,可见各gpt分区,但自动安装驱动重启后7B蓝屏,为此,作了如下处理:
第一:按照网友510819776的提示“vboot驱动的winxp.vhd必须放到gpt分区硬盘的头四个主分区里”,我将winxp.vhd放在GPT分区硬盘的第4分区(编号从
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论