VBOOT及WinXP
4月09日更新:把vboot菜单打包成一个ima文件启动vboot的方法;
                    在VHD文件中安装并启动多个操作系统

4月05日更新:在vboot中添加VHD系统的快速还原菜单

3月29日更新:vboot菜单使用小经验

3月23日更新:将vboot启动的VHD系统转换为在分区中的系统的方法(含附件)

3月18日更新:将安装在分区中的winxp/win2003/winvista/win2008/win7/win2008r2系统转换为由vboot启动的VHD系统的方法

3月15日更新:按照网友2011huisinro提供的方法,解决了winvista/win2008安装后,系统盘符如何由D:变C:的问题

(其他部分也作了些小更新)

以下是本人参照《VMLite VBoot 1.0 操作指南》,并从网上搜索,经网友指点和本人试验后写出的经验汇总。对其中的错误和不妥之处,及我没有搞清楚的地方,望请多多指正和指点。
==================================================================================================================
一、vboot菜单使用小经验
1.启动某一分区的操作系统
如:
menuentry "windows 7" {
  chainloader (hd0,4)+1
}
2.调用grub4dos、ntldr、bootmgr等启动管理器
①调用grub4dos
menuentry "grub4dos menu" {
linux16 (hd0,2)/grub/grub.exe --config-file="configfile (hd0,1)/grub/menu_gfx.lst"
}
注:因执行vboot菜单时是16位环境,所以用linux16,而不能用linux(linux在winpe、windows等32位环境中运行);且因grldr、ntldr、bootmgr均是32位程序,所以既不能用linux16、又不能用linux调用它们,只能通过grub4dos的grub.exe+linux16调用它们。grub.exe不能内置菜单,若已内置了菜单,第二句改为:linux16 (hd0,2)/grub/grub.exe
也可如下强行启动grub4dos的grldr:
menuentry "grub4dos Menu-grldr" {
linux16 (hd0,3)/grub/grub.exe --config-file="rootnoverify (hd0,2);chainloader --force /grldr.mbr"
}

②调用ntldr
menuentry "ntldr menu" {
linux16 (hd0,2)/grub/grub.exe --config-file="rootnoverify (hd0,1);chainloader /ntldr"
}
③调用bootmgr
menuentry "bootmgr" {
linux16 (hd0,2)/grub/grub.exe --config-file="rootnoverify (hd0,1);chainloader /bootmgr"
}
④调用激活文件启动bootmgr以启动winvista/win2008/win7/win2008r2及其VHD系统(含win7/win2008r2的原生VHD系统)
若用Windows 7 Loader 1.9.5激活的激活文件为XQAPR、win7.ld(或为其他名称。老激活方法的激活文件可能为grldr,调用方法相同),则如下调用(将启动win7.ld所在分区的bootmgr):
menuentry "win7 VHD" {
linux16 (hd0,2)/boot/grub/grub.exe --config-file="rootnoverify (hd0,5);chainloader /XQAPR"
}
但如下调用无法执行:
menuentry "win7 VHD" {
set root=(hd0,6)
linux16 /XQAPR (注:此句为linux /XQAPR也不行)
}
3、启动光盘映像文件
①用其本身功能启动winpe的ISO文件
如下可启动win2003pe或win7pe(直接运行方式,不先装入内存):
menuentry "win2003PE" {
  vboot cdrom=(UUID=f014a69714a66078)/grub/03pe_45m.iso
}
menuentry "win7PE" {
  vboot cdrom=(UUID=f014a69714a66078)/grub/win7pe_ty.iso
}
②用syslinux4.03的memdisk启动iso文件
menuentry "win2003PE" --class windows {
set root='(hd0,2)'
linux16 /grub/memdisk iso raw
initrd16 /grub/woxin03pe.iso
}
注:要将syslinux4.03的memdisk复制到/grub/目录下。
但使用vboot本身的memdisk.mod未成功(不知该如何调用之,以下两例均未成功):
menuentry "win2003PE" --class windows {
set root='(hd0,2)'
insmod memdisk
linux16 memdisk iso raw
initrd16 /grub/woxin03pe.iso
}
或如此也未成功:
menuentry "win2003PE" --class windows {
set root='(hd0,2)'
linux16 /vboot/grub/memdisk.mod iso raw
initrd16 /grub/woxin03pe.iso
}
③通过grub4dos的grub启动ISO文件
menuentry "win2003PE" {
linux16 (hd0,2)/grub/grub.exe --config-file="map --mem --read-only (hd0,1)/grub/woxin03pe.iso (hd32);map --hook;chainloader (hd32)"
}
4、启动软盘映像文件
①用其本身功能启动软盘映像文件未成功
menuentry "MSDOS710_1.44M" {
  vboot floppy=(UUID=f014a69714a66078)/grub/MSDOS710.IMG
}
注:调用1.44M、2.88M还是其他非标准容量的img、ima格式的软盘映像文件,均未成功。据网上说,是因grub2有bug,不能启动软盘映像文件。不知是否这一原因。
使用vboot本身的memdisk.mod未成功:
menuentry "DOS_TOOLS" --class windows {
set root='(hd0,2)'
linux16 /vboot/grub/memdisk.mod img raw
initrd16 /grub/dos_sshy.img
}
或如此也未成功:
menuentry "DOS_TOOLS" --class windows {
set root='(hd0,2)'
insmod memdisk
linux16 memdisk img raw
initrd16 /grub/dos_sshy.img
}
②通过grub4dos的grub启动软盘映像文件(可用此法调用标准或非标准的img、ima格式的软盘映像文件)
menuentry "DOS_TOOLS" {
linux16 (hd0,2)/grub/grub.exe --config-file="map --mem --read-only (hd0,1)/grub/dos_sshy.img (fd0);map --hook;rootnoverify (fd0);chainloader (fd0)+1"
}
③用syslinux4.03的memdisk启动软盘映像文件(可用此法调用标准或非标准的img、ima格式的软盘映像文件)
menuentry "DOS_TOOLS" --class windows {
set root='(hd0,2)'
linux16 /grub/memdisk
initrd16 /grub/dos_sshy.img
}
但如下在memdisk后加参数则不成功:
menuentry "DOS_TOOLS" --class windows {
set root='(hd0,2)'
linux16 /grub/memdisk img raw
initrd16 /grub/dos_sshy.img
}
5.使用中文菜单标题
一是要loadfont /vboot/fonts/unicode.pf2成功(unicode.pf2支持中文);二是要使用UTF-8编码,若是使用Windows的写字板(推荐在winxp下使用写字板notepad.exe,可显示unicode格式的一些特殊字符,但将该notepad.exe复制到WINPE或其他windows系统中使用时,则不能显示这些特殊字符)把ANSI另存为UTF-8的话,在文件的开始处会多出三个字符 EF BB BF, 需要使用UltraEdit等二进制编辑工具把它们去掉(改为00 00 00即可。对linux系统必须如此改动;对windows系统可改可不改)。由此,即可把菜单标题改为中文。
如:
menuentry "reboot(重启电脑)" {
reboot
}
menuentry "halt(关闭电脑)" {
halt
}
6.使用自己的背景图片及菜单颜色设定
①使用photoshop编辑某一图片,使之与vmlite-logo.jpg的参数相同(RGB颜色、8位通道、1024×768像素、分辨率120像素,16.7K大小;大小不需相同),存为jpg类型。注意:图片的分辨率要与grub.cfg中此句的设定要相同:set gfxmode=1024x768
②将图片导入到windows自带的画图程序再另存为jpg类型(此步很重要,否则不能显示背景图片)。
③使用如下命令调整菜单的正常色和高亮色,使之不与图片的颜色冲突:
set menu_color_normal=white/black
set menu_color_highlight=red/white
可供使用的菜单颜色有:
black,blue,green,cyan,red,magenta,brown,light-gray,dark-gray,light-blue,light-green,light-cyan,light-red,light-magenta,yellow,white
============================================================================================================
二 、WinXP_VHD软件(lianjiang发布)的使用问题
(一)解决杀毒软件错报毒问题
WinXP_VHD_2011在安装有杀毒软件的系统中,可能会报有毒(但实际无毒),并将此软件删除。因此:
1.建议最好在无杀毒软件环境的WINPE3.0中使用;
2.要保存其RAR压缩包,若被杀毒软件删除后,可从此RAR压缩包中再解压。
(二)能辅助安装的VHD系统
经测试,WinXP_VHD目前只能安装ghost(克隆版,安装源为*.gho)或setup(源安装版,安装源为*.iso)的winxp、win2003系统。且原建立的vhd文件不能太大(在8G以下没问题,10G及以上就出问题)的问题已解决。
尚不能安装winvista/win2008/win7/win2008r2的vhd系统:若安装源为克隆版,虽能走完整个安装过程,但重启后进入winvista/win2008/win7/win2008r2的vhd系统之一后蓝屏(但可参照以下的方法修改注册表即可);若安装源为安装版,则在安装的中途就退出。
(三)软件自动导入vboot驱动问题
WinXP_VHD将系统生成到vhd文件后,会询问是否导入vboot驱动,一定要选是,因该步除拷入vboot的部分文件(包括vbootldr.mbr、vbootldr及vboot目录,且vboot\grub目录下的grub.cfg的配置项已改。)到C:\目录下;且自动判断C:盘的系统是winxp或是win7,将会更改boot.ini(对winxp系统)或bcd配置(对win7系统)文件。还将驱动文件vbootdsk.sys拷入vhd文件中,并改写vhd系统的注册表。因手动做该步有难度,所以一定要选是。只不过WinXP_VHD辅助处理工具2011【基于vboot 1.0】,导入的VBOOT文件及VHD中的vbootdsk.sys驱动均是1.0版的,且驱动时间已过期(2011.2.15过期),通过时间破解后还能使用。WinXP_VHD辅助处理工具2011【基于vboot 1.1】,导入的VBOOT文件及VHD中的vbootdsk.sys驱动均是1.1版的,驱动时间要到2011年5月11号过期。
注:用vboot1.0装的VHD系统升级vboot到1.1版的VHD系统的方法:
install vboot v1.1
then run the following command:
\vboot\tools\x86\vbootctl update current (if booted from the virtual disk)
\vboot\tools\x86\vbootctl update \path\your.vhd (offline)
注:①从vboot1.1老版本上安装的系统,也要按上法升级到vboot1.1新版本支持的系统(即VHD中的驱动程序升级)。
    ②按上法对WINXP升级成功;但对WIN2003未升级成功,而用WinXP_VHD_2011软件重新生成WIN2003.VHD才成功。
    ③VBOOT驱动可如下离线打到VHD系统中去:vbootctl.exe prepare \path\file.vhd
       win7、win2008r2原生VHD即用此命令将VBOOT驱动离线打到VHD中去的,详见如下的方法。
(四)运行前对生成的vhd文件(如winxp.vhd)的处理
1、winxp.vhd须放在ntfs分区中,且该分区一般不小于20G。
2、在win7或win7pe中挂载winxp.vhd,若其内的分区格式为FAT32,启动后会蓝屏,须将其转为ntfs分区,方法如下:
开始——运行——cmd——输入convert 磁盘名: /fs:ntfs
这里的磁盘名可以是电脑中的任意盘,如c,d,e,f
如果将D盘从FAT32格式转换为NTFS,在DOS里直接输入以下命令即可:
convert D: /fs:ntfs
若要将当前系统C盘转为NTFS格式,发命令后需重启时再转换。
注:网上有网友说:启动分区是fat32的,vhd硬盘格式也必须是fat32(但有不超过4G的限制);启动分区是ntfs格式,vhd硬盘也必须是ntfs格式。否则,启动蓝屏。对32位和64 位系统均如此。
3、用bootice软件打开winxp.vhd挂载的盘,将其主引导记录改为nt5.x,将其分区引导记录改为ntldr。
(五)用WinXP_VHD安装win2003.vhd的问题
用WinXP_VHD软件,参照winxp的方法安装win2003.vhd,但需将vboot.img更换为vboot-2k3.img;ISO文件更换为GHOST2003SP2.ISO,且按如下样本更改vboot\grub\grub.cfg即可。
enuentry "win2003 VHD" {
  vboot harddisk="(UUID=0a26be0026bded37)/vhd_sys/win2003s.VHD"
}
menuentry "win2003 Install Step 2" {
  vboot harddisk="(UUID=0a26be0026bded37)/vhd_sys/win2003s.VHD" cdrom=(hd0,1)/vhd_sys/GHOST2003SP2.ISO boot=harddisk
}
menuentry "win2003 Install Step 1" {
  vboot harddisk="(UUID=0a26be0026bded37)/vhd_sys/win2003s.VHD" floppy=(hd0,1)/vboot/vboot-2k3.img cdrom=(hd0,1)/vhd_sys/GHOST2003SP2.ISO boot=cdrom
}
(六)解决已安装的win7等系统不能启动的问题
WinXP_VHD软件运行完后,已安装在本地硬盘的winvista/win7/win2008/win2008r2等用bootmgr启动管理器启动的系统,可能无法启动了。若如此,是因启动配置文件BCD中的主入口{bootmgr}及系统入口如{c9035738-e7b7-11df-9a4b-fc1b310b3614}下的device项及osdevice项的partition=x: 均被置成了unkonwn,需用bcdtool等工具将其改回。如bootmgr启动管理器(含bootmgr及boot目录)在f:盘,主入口{bootmgr}的device项(无osdevice项)的partition=f:;若系统在j:盘,其下的device项及osdevice项的partition=j:即可。
============================================================================================================
三、将vboot启动文件及VHD文件移动到其他分区并隐藏的说明
1、将vboot启动文件移动到其他分区
可将vbootldr.mbr、vbootldr及vboot目录移动到任一主分区或任一逻辑分区,且可将该分区设为EISA配置的隐藏分区,如hd(0,1)盘,须将原C:盘的boot.ini或bcd文件改回原样。
①可用以下命令将启动文件和目录改为隐藏+系统+只读属性:
attrib +h +s +r vbootldr.mbr
attrib +h +s +r vbootldr
attrib +h +s +r vboot /s /d
②用grub4dos启动vboot,命令如下:
title Vboot Menu
rootnoverify (hd0,1)
chainloader vbootldr.mbr
对于新版的grub4dos 0.4.5,还可按如下启动vboot:
title Vboot Menu
kernel /vbootldr
③用syslinux启动vboot,命令如下:
LABEL vboot
MENU LABEL [^V] Vboot Menu
        kernel /vbootldr.bin
其中:vbootldr.bin是将vbootldr.mbr复制一份并更名而来。
若采用如下不能启动:
LABEL vboot
MENU LABEL [^V] Vboot Menu
        kernel /vbootldr.mbr

LABEL vboot
MENU LABEL [^V] Vboot Menu
        kernel ldntldr
append initrd=/vbootldr.mbr

LABEL vboot
MENU LABEL [^V] Vboot Menu
        kernel ldntldr
append initrd=/vbootldr
④将vboot作为主启动管理器
方法一:将其引导记录装到硬盘MBR中
x:\vboot\vbootedit install /drive x: /mbr
注:上句命令中的x:盘可为主分区,也可为逻辑分区,且均可为EISA配置的隐藏分区;MBR引导时,将逐一搜索本硬盘各分区(搜索顺序为分区1-分区N)根目录的vbootldr.mbr、vbootldr及vboot目录,因此,要想从x:盘启动,x:盘之前的各盘根目录下须均无vbootldr.mbr、vbootldr及vboot目录。
方法二:装入分区引导记录
用bootice软件,修改硬盘主引导记录为nt5.x或nt6.x;将vboot所在的激活主分区的分区引导记录更改为grub4dos但引导文件更名为vbootldr。硬盘启动时,即直接启动vbootldr进而启动vboot菜单。
2、将\vboot_vhd\*.vhd移动到其他盘的问题
一般系统VHD文件如winxp.vhd在第一个或其他主分区生成,可将其移动到任一主分区或任一逻辑分区,且可将该分区设为EISA配置的隐藏分区。且可用attrib +h +s +r vboot_vhd /s /d命令隐藏该目录。
其要点是vboot\grub\grub.cfg的启动项要用UUID号方式(此方式兼容性最好),如:
menuentry "XP VHD" {
  vboot harddisk="(UUID=320ceab80cea766f)/vboot_vhd/winxp.vhd"
}
在windows中,可用\vboot\vbootedit uuid x:命令查看x:盘的uuid号。
在VBoot Loader中,可用probe -u (hd0,1)命令获取一个卷的UUID。
当然,也可使用hd0,n)方式,即将(UUID=320ceab80cea766f)全部替换为(hd0,n)。
注:(hd0,n)中的n为grub2(非grub4dos)确定的硬盘分区编号,主分区为1-4,逻辑分区为5至m,与syslinux的分区编号相同,为grub4dos的编号+1。
还可使用(LABEL=volume-label)方式:如winxp.vhd在卷标为my_vhd_sys的盘中,将(UUID=320ceab80cea766f)改为(LABEL=my_vhd_sys)即可。
但使用(hd0,n)、(LABEL=volume-label)方式启动时,可能会出现蓝屏、重启等问题,而采用UUID号方式启动正常。按网友的说法,虽然grub2支持这两种格式,但基于grub2上开发的vboot对这两种格式支持目前还不够好。因此采用UUID号方式支持最好。
3、将vboot启动文件及VHD文件移动到其他盘的补充说明
①按以上2中的方法,先在IDE硬盘中安装成功后,再将该VHD文件从IDE硬盘移动到SATA硬盘的EISA配置的隐藏逻辑分区中,更改vboot\grub\grub.cfg中的配置后也启动成功。
②若在win7pe中,用磁盘管理功能将一逻辑分区设为c:盘,再用WinXP_VHD软件,将vboot启动文件及winxp.vhd均存放在该盘中,并由该软件自动导入vboot驱动,安装好WINXP后,再将该分区设为EISA配置的隐藏分区,也可启动成功。
============================================================================================================
四、建立差分系统问题
(一)方法一:在vboot启动菜单中按's'键生成快照,按'r'键执行一次恢复。按 'i' 键生成不可改变的启动。
①在XP VHD项上按's'键生成快照并启动快照
此时在\vboot\grub\grub.cfg中生成
menuentry "XP VHD" {
vboot harddisk="(hd0,1)/WINXP.vhd"
snapshotentry "Snapshot 1"
{
vboot harddisk="(hd0,1)/WINXP-s1.vhd"
}
}
即在XP VHD项下生成一个一级快照(一级差分),菜单中有XP VHD及其下的Snapshot 1的共两个选项(即嵌套的菜单条目)。
还可在Snapshot 1项下再按下's'键生成一个一级快照的差分(即二级差分)。
注一:在vboot1.1新版本中,建立快照的父VHD菜单项不能再进入(因会导致父VHD发生改变,使子vhd即快照无效;建立了二级快照的一级快照也不能再进入),只能进入快照菜单项。要想进入父VHD菜单项,除进入winpe中删除\vboot\grub\grub.cfg中的快照菜单并删除子VHD文件的方法外;还可按以下②、③中的'r'键、'i' 键的方法分别进行。
注二:在vboot1.1新版本中,无论将\vboot\所在的分区改为非隐藏的主分区,并在\vboot\grub\grub.cfg中如下加入win2008、winxp等的安装项,且将安装项紧靠进入系统项之后,按's'键均貌似无效。
menuentry "win2008 VHD" {
  vboot harddisk="(UUID=32e08b03e08acc93)/vboot_vhd/win2008_d.vhd"
}
menuentry "win2008 Install" {
vboot harddisk=(UUID=32e08b03e08acc93)/vboot_vhd/win2008_d.vhd cdrom=(UUID=7ac824a7c824639b)/sys_iso/win2008.iso boot=cdrom
}
menuentry "XP VHD" {
  vboot harddisk="(UUID=32e08b03e08acc93)/vboot_vhd/winxp.vhd"
}
menuentry "winxp Install Step 2" {
  vboot harddisk="(UUID=32e08b03e08acc93)/vboot_vhd/winxp.vhd" cdrom=(UUID=7ac824a7c824639b)/sys_iso/xp_sp3.iso boot=harddisk
}
menuentry "winxp Install Step 1" {
  vboot harddisk="(UUID=32e08b03e08acc93)/vboot_vhd/winxp.vhd" floppy=(UUID=32e08b03e08acc93)/vboot/vboot.img cdrom=(UUID=7ac824a7c824639b)/sys_iso/xp_sp3.iso boot=cdrom
}
后来,仔细查其原因,发现按's'键生成快速菜单项时,只搜索第一物理硬盘(第一物理硬盘不一定是启动硬盘,因可在开机时选第二硬盘为启动硬盘;若同时装有IDE、SATA硬盘,系统自动将IDE硬盘作为第一物理硬盘,在BIOS中关闭IDE硬盘,则SATA硬盘成为第一物理硬盘)的激活主分区(而不搜索第一物理硬盘的其他分区,也不搜索其他硬盘的分区)的\vboot\grub\grub.cfg,若搜索到配置文件grub.cfg,就将其快照菜单项嵌套加在其父项之中。
因此,按's'键貌似无效问题,解决办法是:将vboot系统安装在第一物理硬盘的激活主分区(可为EISA配置的隐藏分区)即可,iso及VHD文件可放在本硬盘其他分区或其他硬盘的分区中。而与vboot系统所在分区是否是隐藏分区无关,也与在\vboot\grub\grub.cfg中是否加入win2008、winxp等的安装项无关。
但用按's'键生成快速菜单项的方法仍有BUG:它有可能把某一系统的快照错误地加到了另一父项系统之中了(在有多个系统的启动项时,曾出现过这一问题)。
②在XP VHD下的Snapshot 1项上按'r'键执行一次恢复并启动到其父项状态
即相当于去除嵌套的快照启动选项,并删除差分文件WINXP_s1.VHD。但在vboot1.1新版本中,按'r'键貌似无效。究其原因:'r'键搜索并修改配置文件grub.cfg的范围及解决办法,同按's'键。
③在XP VHD项上按 'i' 键生成不可改变的启动
一是在未建快照的父项上按'i'键,或如下在父项上加immutable参数(加了此参数后,每次启动均如此),为用户生成一个父项的临时快照文件WINXP_immutable_child.VHD,并以该快照启动系统,不论你在其中作了一项或多项更改(如安装了软件),因该快照文件重启电脑到同一系统后将被自动删除,相当于实现了与硬盘还原卡类似的功能,因此,称此为一次不可改变的启动。这是为了方便用户实现想启动到父项的状态但又不想改变父VHD内容的目的。
menuentry "XP VHD" {
  vboot harddisk="(UUID=b414523d145202b2)/VHD_System/xp/WINXP.VHD" immutable
}
二是在快照上按'i'键(在已建快照的父项上按'i'键无效),或如下在父项上加immutable参数(此参数加在子项上无效。加了此参数后,每次启动均如此),为用户生成一个该快照的临时快照文件(文件名同上,相当于拷贝了一个快照的复制件。注意:此快照文件名不是WINXP-s1.VHD或WINXP-s1-s1.VHD)。其他同上。
menuentry "XP VHD" {
  vboot harddisk="(UUID=b414523d145202b2)/VHD_System/xp/WINXP.VHD" immutable
  snapshotentry "Snapshot 1" {
    vboot harddisk="(UUID=b414523d145202b2)/VHD_System/xp/WINXP-s1.VHD"
  }
}
(二)方法二:手动建立差分
第一步:用命令创建差分文件:
\vboot\tools\x86\vbootctl creatediff f:\vboot_vhd\win2003s-s1.vhd f:\vboot_vhd\win2003s.VHD
注:此命令只能创建一级快照,用该命令在一级快照上创建二级快照无效,如:
\vboot\tools\x86\vbootctl creatediff \vboot_vhd\win2003s_s1_s1.vhd \vboot_vhd\win2003s_s1.vhd
第二步:为快照添加一个启动条目:
cd\vboot\grub
\vboot\vbootedit uuid f: >uuid.txt
若UUID为f014a69714a66078
\vboot\vbootedit create title="win2003 Snapshot 1" harddisk="(UUID=f014a69714a66078)/vhd_sys/win2003s-s1.vhd" parent=1
注:此命令双引号中的斜杠为顺斜杠;该命令搜索并修改配置文件grub.cfg的范围及无法执行该命令的解决办法同按's'键,否则找不到配置文件(即使在第二硬盘的\vboot\grub\目录下发此命令也如此)。若如此,只能手工直接修改\vboot\grub\grub.cfg如下:
(均嵌菜单):
menuentry "win2003 VHD" {
vboot harddisk="(hd0,1)/win2003s.VHD"
snapshotentry "Snapshot 1"
{
vboot harddisk="(hd0,1)/win2003s_s1.vhd"
}
}
也可如下添加与父VHD项同级的菜单项(用分号分隔子、父vhd文件名):
menuentry "XP VHD-child" {
  vboot harddisk="(hd0,3)/vboot_vhd/WINXP_child.VHD;(hd0,3)/vboot_vhd/WINXP.VHD"
}
对于手动创建的差分,也可这样启动(但要求子VHD必需和父VHD在同一目录下):
menuentry "Windows xp" {
  vboot harddisk="(UUID=94a437daa437bd94)/vboot_vhd/winxp_child.vhd"
}
(三)第二次成功启动快照的方法
vboot1.0(已过期)能成功启动快照,但vboot1.1在第一次能成功启动快照,但在第二次启动时,要么重启,要么蓝屏,解决方法是:
1、方法一
用1.0版的 vbootldr 和vbootldr.mbr ,就可二次启动快照。但我将1.0版的这两个文件复制到vboot所在盘的根目录下替换1.1的后,重启时只出现vboot菜单的框框,而无菜单,当我关机再次重后到vboot时,连这个菜单框框也没出现而是黑屏。当我用1.1的替换回后,又重现了菜单,当然仍然无法启动快照。究其原因,是vboot_1.1_2011.2.18更新版本身的问题。
需使用vboot_1.1_2011.2.20更新版,已解决此问题,能生成快照后,多次启动快照菜单项。而WinXP_VHD辅助处理工具2011【基于vboot 1.1_2011-2-22更新】版,已包含vboot_1.1_2011.2.20更新版,即只用该软件(WinXP_VHD)即可解决此问题。推荐此法。
2、方法二
用WinXP_VHD辅助处理工具2011【基于vboot 1.0_驱动已过期】生成基于vboot1.0驱动的winxp.vhd,并使用vboot1.0时间过期破解版即可。但不推荐此法。
(四)在vboot中添加VHD系统的快速还原菜单的方法
本法借鉴lianjiang对原生win7-VHD系统的快速还原方法改编而成。以下以win2003为例进行说明。
1、建立子VHD及其备份
\vboot\tools\x86\vbootctl creatediff win2003_child.vhd win2003.vhd
copy win2003_child.vhd win2003_child_bak.vhd
2、编制grub.cfg
①启动Win2003的菜单:
menuentry "Windows 2003" {
  vboot harddisk="(UUID=94a437daa437bd94)/vboot_vhd/win2003_child.vhd;(UUID=94a437daa437bd94)/vboot_vhd/win2003.vhd"
}

menuentry "Windows 2003" {
  vboot harddisk="(UUID=94a437daa437bd94)/vboot_vhd/win2003_child.vhd"
}
或用嵌套菜单:
menuentry "Windows 2003" {
  vboot harddisk="(UUID=94a437daa437bd94)/vboot_vhd/win2003.vhd"
  snapshotentry "winxp_child" {
    vboot  harddisk="(UUID=94a437daa437bd94)/vboot_vhd/win2003_child.vhd"
  }
}
②快速还原VHD系统的菜单:
menuentry "快速还原VHD系统" {
linux16 (hd0,2)/grub/grub.exe --config-file="configfile (hd0,1)/menu_vbldr.lst"
}

menuentry "快速还原VHD系统" {
linux16 (hd0,3)/grub/grub.exe --config-file="rootnoverify (hd0,2);chainloader --force /vbldr.mbr"
}
注:vbldr.mbr及vbldr是将最新版的grub4dos的grldr通过改名而来(需用WinHex等十六进制软件将grldr.mbr及grldr中的grldr文本分大小写替换为vbldr)。
或:
menuentry "快速还原win2003" {
linux16 (hd0,3)/grub/grub.exe --config-file="用分号分隔的命令串"
}
注:用分号分隔的命令串,是将以下3中的各行命令用分号分隔即成。
3、编制vbldr的菜单并导入
timeout 0
default 0
password --md5 $1$A$YwcdXCjmILc9uG2dFDVek.
#password is tzy123
title 0. Fast Restore win2003
password --md5 $1$A$YwcdXCjmILc9uG2dFDVek.
fallback 1
find --set-root --ignore-floppies --ignore-cd /vboot_vhd/win2003_child_bak.vhd
dd if=()/vboot_vhd/win2003_child_bak.vhd of=()/vboot_vhd/win2003_child.vhd
pause --wait=10 Restore OK!
chainloader /vbootldr.mbr
title 1. Return to Main Menu
find --set-root --ignore-floppies --ignore-cd /vbootldr
chainloader /vbootldr.mbr
4、补充说明:在家中电脑中,用此法成功实现对winxp、win2003、winvista、win2008、win7、win2008r2的快速还原。
而在办公室的电脑中,用此法仅成功实现对win2003、winvista、win2008、win7、win2008r2的快速还原,
而对winxp,无论采用嵌套或非嵌套菜单,或用按's'键生成的快照(子VHD)改名和改嵌套菜单的方法,均要把修改结果写入父VHD中,由此未能快速还原,不知是何原因(是vboot的BUG?还是其他原因)。还作了如下测试,也未成功:
①因WINXP系统的vmlite vboot virtual disk scsi adapter驱动未安装好,怀疑是这一原因造成的。其驱动一般在vboot.img、vboot-2k3.img中,用vdm虚拟机软件加载为A:盘后,将驱动指向它就安装了,用winxp_vhd工具重新安装winxp。但重新装好此驱动后,问题依旧。
②将WINXP的父VHD改为只读进行测试,问题依旧。注意:若父VHD为只读,重新从父VHD启动时要蓝屏。
============================================================================================================
五、vboot安装winvista/win2008/win7/win2008r2的vhd系统的方法
(一)winvista/win2008/win7/win2008r2的vhd系统安装的通用方法(假设VBOOT完整版及VHD文件存放盘为F:盘,并以winvista为例)
1.vbootctl+make命令法(以下各步建议在WIN7PE中进行)
①准备系统安装光盘
复制winvista的安装版(不能为GHOST版)的光盘镜像ISO文件到某一英文目录下,如f:\winvista.iso。若准备用物理光驱安装,此步可免。
②更改\vboot\grub\grub.cfg文件的菜单项为
menuentry "Vista VHD" {
vboot harddisk=(hd0,2)/vhd_sys/winvista.vhd
}
menuentry "Vista Install" {
vboot harddisk=(hd0,2)/vhd_sys/winvista.vhd cdrom=(hd0,2)/winvista.iso boot=cdrom
}
③生成VHD文件
若用光盘镜像文件WinVista.iso安装,命令如下(下面的size 15表示创建15G大小的VHD文件,此文件的容量必须在15G以上):
f:\vboot\tools\x86\vbootctl make f:\vboot_vhd\winvista.vhd f:\WinVista.iso /size 15
若用物理光驱安装,命令如下(假设光驱的盘符为E:):
f:\vboot\tools\x86\vbootctl make f:\vboot_vhd\winvista.vhd E:\ /size 15

f:\vboot\tools\x86\vbootctl make f:\vboot_vhd\winvista.vhd E:\sources\install.wim /size 15
注:运行前,确保未先创建f:\vboot_vhd\winvista.vhd文件;在安装过程中,若提问winvista在install.wim中的子映像号请输入(选子映像时,尽量用原版系统安装光盘,而不要用某某的修改版进行安装,因用修改版可能无法安装成功)。
④后续安装
VHD文件生成后,重启从VBOOT的Vista VHD选项进入(以后启动系统,也从该项进入),继续安装系统。系统安装完成后,即可进入系统桌面。
⑤VMlite Vbootstor SCSI Disk Device的驱动安装
若为32位系统,将搜索目标指向X:\vboot\tools\x86(X为vboot完整版所在的盘符) ,即可安装驱动。
若为64位系统,将搜索目标指向X:\vboot\tools\amd64。
⑥系统激活
因该VHD文件中含有bootmgr启动管理器(即bootmgr及boot目录),直接运行某一激活软件,将激活文档生成在VHD文件映射的系统盘中即可。如用Windows 7 Loader 1.9.5激活,将在VHD文件映射的系统盘中生成wins.ld(对winvista/win2008/win2008r2,win7系统为win7.ld,此为标志文件)及激活文件XQAPR(或为他名),用bootice软件将VHD文件映射的系统盘的分区启动记录置为NTLDR但改名为XQAPR,重启后即激活了。
若用老激活软件生成的软激活文件grldr或skldr来激活,为使在映射为不同的磁盘时其菜单内容均不改变,可在系统分区根目录置一标志文件如vista.tzy(可用attrib +h +s +r vista.tzy命令将其攺为系统+隐藏属性),再用grubmenu将以下通用菜单导入grldr或skldr即可。
default 0
timeout 0
title Windows Vista
acpi
fallback 1
find --set-root /vista.tzy
chainloader /bootmgr
title Enter Command Line
pause Boot failed! Press any key to enter command line.
commandline
⑦安装其他驱动程序和应用程序。
注意要将winvista/win2008升级到SP2,将win7/win2008r2升级到SP1。
⑧系统盘符
用此法生成的默认系统盘符,winvista/win2008的为D:盘,win7/win2008r2的为C:盘。
我参照网上修改VHD XP的系统盘符D:盘变为C:盘的方法,试图按方法一或方法二,将winvista/win2008的系统D:盘改为C:盘,但未成功。但按方法三试验成功。
方法一:
有网友说:对VHD XP,还可在step1安装完成后,直接启动PE3.X,挂载VHD,然后用注册表编辑器加载x:\windows\system32\config\system,修改mountdevice里的键值就行,修改后,继续Step2,也可达到目的。但对winvista/win2008/win7/win2008r2系统,不知如何进行。
方法二:
第一步:右击“我的电脑”-“管理”,选择“磁盘管理”,在右侧的对话框中找到现在的C盘,在上边单击鼠标右键,选择“更改驱动器名和路径”,单击“更改”按钮,将其改为其他盘符(假设更改为Z:)其实就是释放出C这个盘符。
  
第二步:然后运行一个注册表管理软件“Registry Workshop”,搜索 “D:\”,要选中“Search/Replace In”组中的"Data"、"Values"、"Keys"前的复选框,全选所有搜索出来的结果,将搜索到的所有“D:\替换成”“C:\”,多搜索几次以防有漏网之鱼。但有些项被禁止修改,此步修改未成功。
  
第三步:然后打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices。在右侧值名“\DosDevices\C:”上单击鼠标右键,选择重命名,命名为“\DosDevices\Z:”,将“\DosDevices\D:”重命名为“\DosDevices\C:”。重新启动系统(这个操作完成后重启计算机命令可能无效,需要你强制关机。)。进入系统后需要对桌面和开始菜单里边的快捷方式进行修正,以保证可以正确链接到需要的文件(但如果磁盘格式为NTFS,快捷方式不是根据盘符定位的,所以不需要修正快捷方式就可以正常使用)。
经试验,如此修改后,重启无法进入系统桌面。  
方法三:
对方法二,究其原因,是在线修改法,系统将阻止对系统盘符的修改,因此不成功。此法按网友2011huisinro提供的方法(本人将之称为离线修改法),成功将winvista/win2008的系统D:盘改为C:盘。
第一步:挂载VHD
在用“vbootctl make”命令形成VHD后,在未进入VHD系统前立即在WIN7PE中按如下命令挂载VHD:
vbootctl mount \path\your-vista.vhd  (如为Z:盘)
也可用WIN7PE的磁盘管理功能挂载VHD(推荐此法)
注:也可对已进入并安装了软件的VHD系统进行修改,但修改的工作量很大。
第二步:修改配置单元SOFTWARE(此项载明软件的注册信息)
打开注册表管理软件“Registry Workshop”(也可用注册表管理器regedit,但用它只能手工替换,工作量将非常大,不推荐),在HKEY_LOCAL_MACHINE上,以加载配置单元的方式打开z:\windows\system32\config\SOFTWARE,如命名为0,选中0,用其搜索功能搜索“D:\”,要选中“Search/Replace In”组中的"Data"、"Values"、"Keys"前的复选框;然后用“在查找结果中替换”功能,将搜索到的所有“D:\”替换成“C:\”,多搜索几次以防有漏网之鱼。但有些项被禁止修改的,就放弃修改;然后选中0项,卸载配置单元,如此则将修改结果保存到SOFTWARE中。
第三步:修改配置单元SYSTEM(此项载明系统的注册信息)
先采取与第二步相同的方法,打开z:\windows\system32\config\SYSTEM,将所有“D:\”替换成“C:\”;并将0项下的MountedDevices下的值名“\DosDevices\C:”,单击鼠标右键,重命名为“\DosDevices\Z:”,将“\DosDevices\D:”重命名为“\DosDevices\C:”;然后选中0项,卸载配置单元,如此则将修改结果保存到SYSTEM中。
第四步:卸载VHD:vbootctl umount z。推荐用WIN7PE的磁盘管理功能卸载VHD。
第五步:重启系统,系统将自动加载设备驱动,再重启1-2次后,vista/win2008系统的系统盘符由D:变为了C:。
⑨补充说明
我用此法成功安装了winvista和win2008(在最后其自动加入了\vboot\tools\x86\drivers\vbootstor\目录下的vbootstor.sys驱动,到\windows\system32\drivers目录下),但对win7和win2008r2未试。
对winvista/win2008,推荐此法。但对win7/win2008r2,建议先生成其原生启动的VHD系统,再转换成vboot支持的VHD系统(见下)。
2.vbootctl+直接安装法(只叙述与上法不相同之处)
先创建一个不少于15G大小的VHD空文件
f:\vboot\tools\x86\vbootctl.exe createhd f:\vboot_vhd\winvista.vhd /size 15
启动电脑从VBOOT的Vista Install选项进入,或从物理光驱中的winvista系统安装光盘启动,待进入安装界面后(在现在安装按钮之后),按Shift F10键启动命令窗口,执行以下命令来加载VBoot虚拟磁盘驱动器(假设VBOOT完整版所在的盘现为C:盘):
32位系统:
虚拟光盘:c:\vboot\tools\x86\vbootctl setup
物理光盘(离线访问虚拟磁盘):c:\vboot\tools\x86\vbootctl mount C:\vboot_vhd\winvista.vhd /setup /raw 
64位系统:
虚拟光盘:c:\vboot\tools\amd64\vbootctl setup
物理光盘(离线访问虚拟磁盘):c:\vboot\tools\amd64\vbootctl mount C:\vboot_vhd\winvista.vhd /setup /raw 
注意:要使物理或虚拟光盘的盘符为当前盘符(一般为X:盘),即先加载虚拟硬盘驱动,再执行物理或虚拟光盘中的安装程序setup.exe。且在安装时,要将系统安装到排在最后的虚拟磁盘中(需先按“磁盘高级”按钮,创建磁盘分区)。
说明:①用虚拟光盘方法安装:安装winvista时能在虚拟VHD磁盘中创建分区,但到将结束时退出,未安装成功;安装win2008时,选择虚拟VHD磁盘后无法创建磁盘分区,即使在win7中先创建好win2008.vhd(包括初始化和磁盘分区、激活主分区)也如此,也未安装成功;用此法安装win7/win2008r2未试。
      ②用物理光盘安装的方法。网友介绍可加/raw参数,但我试验时,加此参数或不加此参数,均未试成功。
(二)win7/win2008r2原生vhd转换法
1、先生成win7/win2008r2的原生vhd
使用相关软件生成,方法参见有关文档。此原生vhd文件中一般不含bootmgr启动管理器(即bootmgr及boot目录)。
2、转换原生VHD为VBOOT可启动的VHD
如我用如下命令,成功将win7/win2008r2原生vhd转换成vboot支持的VHD:
D:\vboot\tools\x86\vbootctl prepare D:\vboot_vhd\my_win2008r2.vhd
D:\vboot\tools\x86\vbootctl prepare D:\vboot_vhd\my_win7.vhd
3、\vboot\grub\grub.cfg文件的菜单启动项为
menuentry "win7 VHD" {
vboot harddisk=(hd0,2)/vboot_vhd/my_win7.vhd
}
4、有关说明
①转换后,文件名不变,其主要是向VHD中添加了bootmgr启动管理器(含bootmgr及boot目录),及将\vboot\tools\x86\drivers\vbootstor\目录下的vbootstor.sys驱动,加入到了\windows\system32\drivers目录下。
②原已激活,但转换后可能未激活。请参照vbootctl+make命令法中的第⑥步进行激活。
③转换后的VHD文件,仍可由bootmgr启动管理器按原生VHD的方法启动。我按此法成功启动转换后的win7/win2008r2的VHD文件。但原生VHD启动的系统中有“分离VHD”选项功能,按此法启动的转换后的VHD系统中,无“分离VHD”选项。看其属性,该分区已变为VMlite Vbootstor SCSI Disk Device盘。
④转换后的VHD,比原生启动略慢。所以,不推荐将win7/win2008r2原生vhd转换成vboot支持的VHD。
============================================================================================================
六、安装在分区中的系统与vboot启动的VHD系统的相互转换
(一)将安装在分区中的winxp/win2003/winvista/win2008/win7/win2008r2系统转换为由vboot启动的VHD系统的方法
以下以win2008为例,除第一步在安装在分区的当前winxp/win2003/winvista/win2008/win7/win2008r2系统(以下简称当前)中进行外,其余各步在win7PE中进行。
第一步:在当前系统中,打开 regedit 导出本机HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices为reg文件保存到某盘某目录下,用记事本打开该reg文件,把内容[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]改成[HKEY_LOCAL_MACHINE\000\MountedDevices]保存备用。
第二步:在WIN7PE中创建一个10G(对winxp/win2003系统)或15G(对winvista/win2008/win7/win2008r2)的空vhd文件,将其初始化并创建为一个NTFS格式的激活主分区。如挂载为H:盘(要记住,以下要用)。
第三步:用GHOST32以分区到分区对刻方式将分区中的当前系统克隆到VHD文件中。
第四步:若系统是被隐藏后克隆的,须用bootice软件将其“显现”;须将该VHD文件放置在NTFS分区内;若VHD的内部分区格式为FAT32,须用convert h: /fs:ntfs命令将其转换为NTFS分区格式。
第五步:用bootice软件将VHD系统的主引导记录更改为nt5.x(对winxp/win2003系统)或nt6.x(对winvista/win2008/win7/win2008r2系统);分区引记更改为ntldr(对winxp/win2003系统)或bootmgr(对winvista/win2008/win7/win2008r2系统)。对winvista/win2008/win7/win2008r2系统,若原已用Windows 7 Loader 1.9.5软激活的,如激活文件名为XQAPR(或为他名),其分区引导记录须更改为NTLDR但改名为XQAPR。
第六步:打开regedit,用加载配置单元命令,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把 HKEY_LOCAL_MACHINE\000\MountedDevices 删除;导入以上保存备用的reg文件 ,编辑 MountedDevices,删除 \DosDevices\C: ,把\DosDevices\H: 改为 \DosDevices\C:;选中000项,卸载配置单元,退出 regedit。此步即是导入分区系统的注册表,编辑后保存回vhd系统的\Windows\System32\config\的system配置单元中。(此法保证一定可开机,如只删除MountedDevices,可能开机失败;假设不想让系统占用C:盘,而想让系统占用E:盘,那就删除\DosDevices\E:,把\DosDevices\H: 改为 \DosDevices\E: )。
第七步:用WIN7PE的磁盘管理功能卸载win2008_new.vhd,并将VBOOT驱动离线打入VHD系统中:
\vboot\tools\x86\vbootctl prepare \vboot_vhd\win2008_new.vhd
第八步:在\vboot\grub\grub.cfg中添加启动菜单项:
menuentry "win2008 new" {
vboot harddisk="(UUID=b414523d145202b2)/vboot_vhd/win2008_new.vhd"
}
第九步:重启从VBOOT的"win2008 new"项进入,自动加载设备驱动后再重启即可。若启动时不能进入系统桌面,需再次重复第六步。
注:
①我用此法将winxp、winvista、win2008转换成功,其他系统未试。
②对winvista/win2008/win7/win2008r2系统,第二步、第三步可用WinXP_VHD软件将系统的gho文件直接生成VHD文件(但不导入vboot驱动程序)代替。即对winvista/win2008/win7/win2008r2系统,在用WinXP_VHD软件将系统的gho文件直接生成VHD文件(但不导入vboot驱动程序)后,须作以上第一步及第四步至第九步的工作即可。
③对winvista/win2008/win7/win2008r2系统,推荐用此法;对winxp/win2003系统,除用本法外,为方便起见,建议先用GHOST将系统打包成gho文件,再用WinXP_VHD软件将此gho文件生成VHD文件并让其自动导入VBOOT的驱动程序即可。
(二)将vboot启动的VHD系统转换为在分区中的系统的方法
第一步:挂载vhd,用GHOST32以分区到分区对刻方式克隆到分区中。
第二步:用bootice将硬盘主引导记录更改为nt5.x或nt6.x;将winxp/win2003系统的分区引导记录更改为ntldr;将winvista/win2008/win7/win2008r2系统的分区引导记录更改为bootmgr,若原已激活,须将其分区引导记录更改为ntldr但改名为XQAPR(若其激活文件名为该文件)。
第三步:对winvista/win2008/win7/win2008r2系统,须用BcdTool工具将BCD配置文件中的主入口、系统入口的device项及osdevice项的partition=x:中的盘符x:更改为当前系统所在的盘符;对winxp/win2003系统,须将其boot.ini更改为:
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
第四步:修改注册表
方法一:在win7pe中用微软的driveletter脚本(由fujianabc做过一些修改)更改注册中的盘符,如pe中windows分区的盘符为f:,则执行driveletter /currentos:f即可。这个批处理会自动从离线系统注册表的software中找到windows分区的盘符,然后从winpe注册表的mounteddevice下把系统盘对应的项复制到离线系统的mounteddevice中,并把盘符修正为离线系统的盘符。当然,你的winpe中一定要有reg.exe文件。
方法二:①在VHD系统中,打开 regedit 导出本机HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices为reg文件保存到某盘某目录下,用记事本打开该reg文件,把内容[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]改成[HKEY_LOCAL_MACHINE\000\MountedDevices]保存备用。②在win7pe中,打开regedit,用加载配置单元命令,若克隆到分区系统的盘符为H:,把H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把HKEY_LOCAL_MACHINE\000\MountedDevices 删除;导入以上保存备用的reg文件 ,编辑 MountedDevices,删除 \DosDevices\C: ,把\DosDevices\H: 改为 \DosDevices\C:;选中000项,卸载配置单元,退出 regedit。但方法二未试成功(不能进入系统桌面)。
第五步:重启进入该系统即可。可以删除(也可不删除)设备管理器的磁盘驱动器下的Vmlite Vboot Scsi Disk Device项。
注:我用此法将win2008.vhd、winxp.vhd成功转换到分区中运行,其他系统未试。
============================================================================================================
七、其他有关问题
(一)把vboot菜单打包成一个ima文件启动vboot的方法
1、打包并启动菜单
用WinImage_8.5新建一个自定义映像格式文件、文件系统选FAT16或FAT32,在其根目录下导入vbootldr.mbr、vbootldr两个文件;新建一目录vboot,将硬盘中的vboot目录下的所有文件(含已修改的grub.cfg文件)及子目录导入;用bootice将其分区引导记录更改为grldr但改名为vbootldr。然后用grub4dos按如下菜单启动之即可:
title VBOOT Menu
map --mem --read-only /vbootmenu.ima (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1
注:若仅为启动vboot菜单及VHD系统之需,可对vbootmenu.ima进行精简,即只需在VBOOT目录下导入必需的vboot文件及grub、fonts两个目录即可。若日后要更改启动菜单的内容,只需将更改后的grub.cfg再次导入vbootmenu.ima下的\vboot\grub目录下覆盖原文件即可。以上菜单中,用(fd1)代替(fd0)未成功,提示磁盘错误。
2、直接启动单个vboot菜单项
若想以grub4dos直接启动vboot菜单项中的winxp.vhd、win2008.vhd等,可先按上法打包vbootmenu.ima;再将grub.cfg拷入某一临时目录,复制grub.cfg并分别命名grub_xp.cfg、grub_2008.cfg ,分别编辑grub_xp.cfg、grub_2008.cfg,设其中的default="0"、timeout=0,并只保留进入winxp.vhd、win2008.vhd的菜单项后保存;将rub_xp.cfg、grub_2008.cfg导入vbootmenu.ima中的\vboot\grub目录下;并按如下编辑grub4dos菜单可直接启动之。
title VBoot Menu-in ima(winXP)
map --mem /grub/vbootmenu.ima (fd0)
map --hook
rootnoverify (fd0)
dd if=()/vboot/grub/grub_xp.cfg of=()/vboot/grub/grub.cfg
chainloader (fd0)+1
title VBoot Menu-in ima(win2008)
map --mem /grub/vbootmenu.ima (fd0)
map --hook
rootnoverify (fd0)
dd if=()/vboot/grub/grub_2008.cfg of=()/vboot/grub/grub.cfg
chainloader (fd0)+1
注:①dd命令因是在内存中进行的,vbootmenu.ima中的grub.cfg文件并未被替换,所以还可以1中的方法再次启动带所有菜单项的vbootmenu.ima。②可把此法推广应用到启动bootmgr及原生vhd,方法是:将bootmgr文件、boot目录,和带全部启动菜单的bcd,及分别启动win7.vhd、win2008r2.vhd的bcd_win7、bcd_2008r2,一并打包入ima中,如上法编制grub4dos启动之即可(硬盘中可无bootmgr及boot目录)。
(二)在VHD文件中安装并启动多个操作系统
以下以在一个VHD文件安装winxp、win2003、win7、win2008系统为例进行说明。步骤如下:
1、方法一
①先安装好能以vboot启动的winxp、win2003、win7、win2008的单文件VHD系统,其VHD文件名分别为winxp.vhd、win2003.vhd、win7.vhd、win2008.vhd。
②在WIN7PE中,建立一个46G的动态类型的VHD文件(取名为multisys.vhd),将其分为8G、8G、15G、15G四个分区,其中第一个分区必须为主分区,其他三个分区可为主分区或逻辑分区;以磁盘管理功能分别挂载winxp.vhd、win2003.vhd、win7.vhd、win2008.vhd,再用ghost32以分区到分区克隆方式,将winxp、win2003、win7、win2008分别克隆到以上四个分区内;查看winxp、win2003的boot.ini配置文件及win7、win2008的BCD配置文件是否正确,若不正确须将其进行修改;用bootice软件,修改VHD文件的主引导记录MBR为nt5.x或grub4dos,修改winxp、win2003的分区引导录PBR为NTLDR,修改win7、win2008的分区引导记录PBR为bootmgr(但若原已用Windows 7 Loader 1.9.5软激活的,如激活文件名为XQAPR,其pbr须更改为NTLDR但改名为XQAPR);在winxp、win2003、win7、win2008所在的分区分别建立一个标志性文件(内容为空)vhd_xp.tzy、vhd_2003.tzy、vhd_win7.tzy、vhd_2008.tzy;激活某一主分区,将其PBR更改为grldr,在该分区根目录拷入grldr文件,并内置如下菜单内容:
default 0
timeout 10
title winxp_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_xp.tzy
chainloader /ntldr
title win2003_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_2003.tzy
chainloader /ntldr
title win7_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_win7.tzy
chainloader +1
title win2008_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_2008.tzy
chainloader +1
③在vboot的grub.cfg中添加如下菜单
menuentry "multisys-vhd" {
  vboot harddisk="(UUID=94a437daa437bd94)/vboot_vhd/multisys.vhd"
}
2、方法二(只叙述与上法不同之处)
①激活主分区拷入grldr的菜单内容为:
default 0
timeout 0
title boot_cd
find --set-root /vhd_tzy.cd
chainloader ()
②编辑启动菜单并导入grldr,再分别改名为grldr_xp.bin、grldr_2003.bin、grldr_2008.bin、grldr_win7.bin
menu_xp.lst内容为:
default 0
timeout 0
title winxp_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_xp.tzy
chainloader /ntldr
menu_2003.lst内容为:
default 0
timeout 0
title win2003_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_2003.tzy
chainloader /ntldr
menu_2008.lst内容为:
default 0
timeout 0
title win2008_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_2008.tzy
chainloader +1
menu_win7.lst内容为:
efault 0
timeout 0
title win7_vhd
find --set-root --ignore-floppies --ignore-cd /vhd_win7.tzy
chainloader +1
③建立启动光盘镜像grldr_xp.iso、grldr_2003.iso、grldr_2008.iso、grldr_win7.iso,并拷入某目录(如/vboot_vhd)
以建立grldr_xp.iso为例进行说明(其他相同):打开UltraISO软件,加入一个相同的标志性文件vhd_tzy.cd(名称须为小写,内容为空),选定该文件,设定为隐藏;将grldr_xp.bin加载为引导文件;进入“属性”选项,勾选“windows/unix(31)”、“允许小写字母”、“省略ISO9660版本号”三项,其他项均取消勾选;保存为grldr_xp.iso即可。
④在vboot的grub.cfg中添加如下菜单
menuentry "vhd_xp" {
vboot harddisk=(UUID=94a437daa437bd94)/vboot_vhd/multisys.vhd cdrom=(UUID=94a437daa437bd94)/vboot_vhd/grldr_xp.iso boot=harddisk
}
menuentry "vhd_2003" {
vboot harddisk=(UUID=94a437daa437bd94)/vboot_vhd/multisys.vhd cdrom=(UUID=94a437daa437bd94)/vboot_vhd/grldr_2003.iso boot=harddisk
}
menuentry "vhd_win7" {
vboot harddisk=(UUID=94a437daa437bd94)/vboot_vhd/multisys.vhd cdrom=(UUID=94a437daa437bd94)/vboot_vhd/grldr_win7.iso boot=harddisk
}
menuentry "vhd_2008" {
vboot harddisk=(UUID=94a437daa437bd94)/vboot_vhd/multisys.vhd cdrom=(UUID=94a437daa437bd94)/vboot_vhd/grldr_2008.iso boot=harddisk
}
注意:各项为boot=harddisk,而不能为boot=cdrom,因从光盘启动,将不能将多系统VHD文件虚拟为一个硬盘。
3、补充说明
①方法一的启动顺序是:vboot的multisys-vhd菜单项→VHD中内置的grub4dos→选择启动VHD中的四个系统。
②方法二的启动顺序是:vboot菜单项→VHD中内置的grub4dos→虚拟光盘镜像直接启动VHD中的某一系统。
③用方法一或方法二,启动VHD中的某一系统时,不能隐藏其他分区中的系统,否则将重启。
④如何有效建立VHD中各分区系统的备份及快速还原,还不知怎样进行。
(三)安装win2000问题
我的win2000安装版及克隆版均未带stata驱动,我在我的电脑(配置为双核CPU、4G内存、SATA500G硬盘、IDE80G硬盘)中,先安装为实机系统未成功。用以下两种方法安装win2000.VHD,也均未成功。不知能否安装WIN2000,若能,哪位安装成功的,请多指点!
1、用vboot安装
vboot\grub\grub.cfg的内容如下(其中win2000.iso为安装版):
menuentry "win2000 VHD" {
  vboot harddisk="(UUID=7ac824a7c824639b)/vboot_vhd/win2000.VHD"
}
menuentry "win2000 Install Step 2" {
  vboot harddisk="(UUID=7ac824a7c824639b)/vboot_vhd/win2000.VHD" cdrom=(UUID=7ac824a7c824639b)/win2000.iso boot=harddisk
}
menuentry "win2000 Install Step 1" {
  vboot harddisk="(UUID=7ac824a7c824639b)/vboot_vhd/win2000.VHD" floppy=(UUID=7ac824a7c824639b)/vboot/vboot-2k.img cdrom=(UUID=7ac824a7c824639b)/win2000.iso boot=cdrom
}
结果:进入win2000 Install Step 1时即蓝屏。
2、用WinXP_VHD安装
参照winxp的方法安装win2000.vhd(内部格式更改为NTFS),并让其自动导入vboot驱动。使用win2000.iso的安装版和克隆版均未试成功(启动蓝屏)。

转载于:https://blog.51cto.com/rinehart/1432043

VBoot WinXP相关推荐

  1. winxp运行html代码,关于WinXP系统实现自动化运行的操作技巧

    关于WinXP系统实现自动化运行的操作技巧 发布时间:2014-06-16 10:00:29   作者:佚名   我要评论 与其他系统相比,WinXP系统的自动化运行已经大大改进,根据经验为大家总结了 ...

  2. WinXP不能共享Win7的打印机的解决方法

    现在很多企业里存在着WinXP和Win7混用,WinXP不能正常共享Win7的文件和打印机,经过设置发现Win7可以Ping通Winxp并且也可以发现WinXP的共享文件,可是WinXP却不能共享Wi ...

  3. 【七招破解WinXP系统访问网络变慢的故障】

    WindowsXP系统的网上邻居有许多差强人意的地方:访问速度慢,无法访问其他主机--其实这些问题通过简单的设置都可以很好地解决. 在这之前先确保能够互相PING通. 1.开启guest账户. 2.允 ...

  4. [转]WinXP、Win7脚本自动加域及用户资料迁移

    原文地址 http://shubao.blog.51cto.com/401810/710102 WinXP.Win7脚本自动加域及用户资料迁移 最近公司要上AD域项目,所有的用户全部从工作组环境切换到 ...

  5. PXE BOOT INSTALL WINXP

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://coolerfeng.blog.51cto.com/133059/76156 按照 ...

  6. IPV6在WINXP、WIN2003、WIN7下的网络配置

    IPV6在CERNET2中有着丰富的视频点播和网络电视等服务资源,我们只需要对自己的入网计算机进行简单的配置即可使用,在不同操作系统上的配置具体如下: (注网络环境在教育网内) 一. WINXP和WI ...

  7. winxp ie8.0 html5,(IE8)Internet Explorer 8.0 For WinXP 简体中文正式版

    最新版本: 简体中文正式版官方网站: 微软软件大小: 16506 K软件授权: 免费软件平台: WinXP下载windows 超速版(通用)下载windows 购物版(通用)微软全新推出的最新版本网页 ...

  8. VirtualBox中为WinXP虚拟机添加主体机共享

    1. 首先在VirtualBox中为WinXP虚拟机添加数据空间,如下图: 2. 启动winXP虚拟机,并打开"网络邻居",并"添加网上邻居" -- " ...

  9. Lenovo F41 使用WinXP不能全屏看Flash格式的电影的解决方法

    十一买的Lenovo F41换了WinXP系统后不能全屏看Flash格式的电影,老婆说可能是电脑有问题,但是在Vista系统下面又正常,我觉得应该是系统问题,或者是IE问题,经过仔细检查终于搞定.因为 ...

最新文章

  1. Apache Falcon数据集管理和数据处理平台
  2. drawContours函数
  3. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
  4. 知识付费为何从一个“圈粉”的事业变成一个“骗粉”的勾当?
  5. 策略模式(策略不同类,场景不同策略不同,环境策略分离组合)
  6. linux svn 重新定位SVN URL
  7. bzoj2733永无乡
  8. Tair持久存储系列技术解读
  9. go 错误处理总结
  10. 宏基4750网卡驱动linux,宏碁4750g无线网卡驱动下载
  11. 幸运抽奖系统带后台源码
  12. Nessus下载失败问题解决
  13. jtf_rs_defresources_srp_v引起的问题 同义词无数据 基表有数据
  14. Python鸡兔同笼
  15. 自主研发的流程引擎怎么样?好用吗?
  16. C语言lcd实现奥运五环编程,用C语言程序来设计奥运五环图案.doc
  17. 计算机在生物技术的应用论文,计算机技术在生物学中的应用
  18. 大数据早报:阿里巴巴收购以色列创业公司 迅雷再次回应玩客云用户维权事件(12.1)
  19. 【MySQL从入门到精通】【高级篇】(九)InnoDB的B+树索引的注意事项
  20. 著名EDA公司和工具介绍

热门文章

  1. 第二期:如何通过知晓云快速生成分享海报
  2. 勤于奋聊聊现在还有哪些副业可以做
  3. TypeScript基本类型总结
  4. 已知两条射线的方位俯仰角,求两线夹角的方法(C++实现)
  5. iOS UIWebView
  6. 冷漠的心 在那一刻复苏
  7. Python从网络接口爬取json天气预报数据绘制高温低温双折线图
  8. Java中你所轻视的三目运算符
  9. SpringBoot 太重,Vert.x 真香!
  10. Nginx安装fair模块