无忧启动论坛

标题: VBOOT及WinXP_VHD辅助工具安装VHD系统等的用户使用经验汇总(7月28日更新) [打印本页]

作者: qj_tzy    时间: 2011-2-26 15:13
标题: VBOOT及WinXP_VHD辅助工具安装VHD系统等的用户使用经验汇总(7月28日更新)
7月28日更新:已用软盘映像文件解决快速还原问题:此法支持普通隐藏或EISA隐藏的NTFS分区及长文件名,且还原后,子VHD文件的大小与时间,与备份VHD文件的大小与时间完全相同。由于帖子字数的限制,本帖文本内容未作更改,请详见下贴
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=197753&extra=page%3D1

7月16日更新:(2010ttt操作)重新改版,使版面更清晰易读。
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 操作指南》,并从网上搜索,经网友指点和本人试验后写出的经验汇总。对其中的错误和不妥之处,及我没有搞清楚的地方,望请多多指正和指点。
=====================================================================================================================

目录:
  1. 一、vboot菜单使用小经验
  2. 二 、WinXP_VHD软件(lianjiang发布)的使用问题
  3. 三、将vboot启动文件及VHD文件移动到其他分区并隐藏的说明
  4. 四、建立差分系统问题
  5. 五、vboot安装winvista/win2008/win7/win2008r2的vhd系统的方法
  6. 六、安装在分区中的系统与vboot启动的VHD系统的相互转换
  7. 七、其他有关问题
复制代码

=====================================================================================================================
正文:
一、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启动时要蓝屏。


注:后来分析原因,在办公室的电脑中的winxp.vhd,是按下面六中的方法,将安装在分区中的winxp转换而来的,用WinXP_VHD软件重装winxp.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]保存备用。如为sys.reg

第二步:在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。
第六步:在WIN7PE中,打开regedit, HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices,将挂载VHD加载的H:盘对应的两项(其中一项为其ID号)保留,其余项全部删除,导出本机HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices为reg文件保存到某盘某目录下,用记事本打开该reg文件,把内容[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]改成[HKEY_LOCAL_MACHINE\000\MountedDevices]保存备用。如为sys1.reg
第七步:打开regedit,用加载配置单元命令,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把 HKEY_LOCAL_MACHINE\000\MountedDevices 删除;导入以上保存备用的sys.reg及sys1.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的安装版和克隆版均未试成功(启动蓝屏)。

说明:
原以为子目录vbootdsk-w2k,及vboot-2k.img是用于支持win2000的驱动。

但网友2011shanshan92的试验结果是:用其安装win2000.vhd启动成功,但只要往VHD里也就是C盘写东西,系统就定在那了,就好像硬盘突然消失了一样,系统就不读盘了,卡住那里,从此什么都不好使了,只能看到鼠标在那动。若换成XP的驱动,就启动7B蓝屏。

这说明对win2000的支持不好,且fujianabc说,vboot本来就没说支持win2000。
由此可见,若想用此驱动安装win2000.vhd,就不要再折腾了,会安装不成功的。


[ 本帖最后由 qj_tzy 于 2011-8-6 16:42 编辑 ]

reg.rar

29.02 KB, 下载次数: 1759, 下载积分: 无忧币 -2

driveletter.rar

3.25 KB, 下载次数: 1648, 下载积分: 无忧币 -2


作者: HY    时间: 2011-2-26 16:34
不错的教程,用WinXP_VHD辅助工具做winvista/win2008/win7/win2008r2的vhd系统一定是蓝屏,winvista/win2008/win7/win2008r2的vhd系统有另一个工具做的。
作者: lianjiang    时间: 2011-2-26 16:53
写得非常好,学习了,谢谢楼主。
作者: qj_tzy    时间: 2011-2-28 22:56
标题: 说明:
帖子内容已更新,请网友多指教!
作者: HY    时间: 2011-2-28 23:11
标题: 回复 #6 zhagen2 的帖子
5楼大元帅的两个工具呀
作者: lianjiang    时间: 2011-3-1 09:21
原帖由 qj_tzy 于 2011-2-28 22:56 发表
帖子内容已更新,请网友多指教!


好贴,不顶不行。
作者: haiuyan    时间: 2011-3-1 14:01
原帖由 friend8179 于 2011-3-1 11:21 发表
注:为了解决在安装过程中可能会出现“安装程序无法复制vbootdsk.sys”一类的错误提示,解决办法是:可以将vboot.img中i386中的vdisk的驱动集成到你的系统光盘中,其实更简单的方法是在vboot.img这个镜像文件中建 ...

现在都心照不宣, 版权的问题
作者: HY    时间: 2011-3-1 14:03
"②、VBOOT 中WINDOWS2003的驱动破解后不能使用,系统启动不了。我也遇到这个现象, 2003蓝屏。 可能出现。网上未答。"
这个问题friend8179 在其它帖子中已答,今天11楼又解答了。
作者: qj_tzy    时间: 2011-3-2 14:34
标题: 回复 #10、#11、#13 的帖子
感谢#10、#11、#13的指导,我虽发了此贴,但确实有很多不懂,比如#11、#13说的我就未懂,我再仔细学学,再次感谢!
作者: lianjiang    时间: 2011-3-2 14:58
原帖由 qj_tzy 于 2011-3-2 14:34 发表
感谢#10、#11、#13的指导,我虽发了此贴,但确实有很多不懂,比如#11、#13说的我就未懂,我再仔细学学,再次感谢!


如何破解的问题,可不用管。
作者: qj_tzy    时间: 2011-3-2 15:45
标题: 回复 #15 lianjiang 的帖子
谢谢指点!确实对于破解的问题,我不懂,也不想再去想了(能力有限)。我想重点在能不能装win2000及如何装好winvista/win2008等问题上多试验一下,然后把试验结果贴出,让网友共享。
作者: lianjiang    时间: 2011-3-2 17:02
破解问题,涉及到版权。
vboot的人也常在这里出现,不太好。
这就是魔高一尺道高一丈,还是道高一尺魔高一丈的问题。
作者: wanghh    时间: 2011-3-2 18:46
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:即可。
作者: qj_tzy    时间: 2011-3-2 21:34
标题: 回复 #17 lianjiang 的帖子
很赞同这一观点!还是不谈这一问题较好,我立即在帖子中删除这一部分。
作者: qj_tzy    时间: 2011-3-4 21:07
标题: 说明:
3月4日,又更新了一下帖子内容,请各位网友多指教!
作者: qj_tzy    时间: 2011-3-15 22:17
标题: 说明:
帖子内容已于3月15日 更新(更新重点是:按照网友2011huisinro提供的方法,解决了winvista/win2008安装后,系统盘符如何由D:变C:的问题),请网友多指教!
作者: qj_tzy    时间: 2011-3-18 16:58
标题: 说明
帖子内容已于3月18日更新
作者: amd1969    时间: 2011-3-18 20:31
_VHD辅助工具  
好贴,不顶不行。
作者: ren001    时间: 2011-3-23 23:00
好贴好贴 不顶不行。
作者: mygamexxx    时间: 2011-3-25 16:44
请教楼主一个问题,VBOOT目录放置于C盘下启动正常,放置于D盘或E盘启动不正常。我是用WEE查找VBOOTLDR启动的。
如下:


经试验,WEE是通过/vbootldr启动的,GRLDR是通过chachainloader /vbootldr.mbr启动的,如果放置于其他盘,用WEE必须通过GRLDR才能启动。

[ 本帖最后由 mygamexxx 于 2011-3-25 20:26 编辑 ]
作者: qj_tzy    时间: 2011-3-25 17:44
标题: 回复 #26 mygamexxx 的帖子
未用过WEE,要请用过的高手解答了
作者: qj_tzy    时间: 2011-3-30 08:59
帖子已于3月29日更新。还请各位多多指出帖子中的不无善和错误之处。
作者: 2010ireneuszp    时间: 2011-3-30 23:48
in new grub4dos
/ 2011-02-19 1.修复kernel加载grub2 loader的问题./

kernel /vbootldr

it should works
作者: qj_tzy    时间: 2011-3-31 09:35
标题: 回复 #29 2010ireneuszp 的帖子
谢谢指点,已按你指点之方法启动vboot成功。
作者: mygamexxx    时间: 2011-4-1 09:37
由于想在启动时用GRUB4DOS修改VBOOT的启动菜单GRUB.CFG,所以将VBOOT的全部启动文件做成一个IMG文件,通过GRUB4DOS的map --mem功能载入内存盘,再用GRUB4DOS引导VBOOT的启动器,可以成功引导至VBOOT的启动菜单,再启动VHDXP时出现错误,并有声音报警。不知哪位高人指点一下问题所在。
作者: mahuniu    时间: 2011-4-1 09:57
楼上的,好象不能两次虚拟的,例如要想启动虚拟盘上的虚拟系统,那就出错,所以很多带外置程序的pe的iso文件都不能正常使用。我以前曾经想通过内存盘启动另外一个ram系统,无论用什么软件都不成功,而在虚拟机中,再安装同一虚拟软件,也会出错
作者: mygamexxx    时间: 2011-4-1 10:21
只是引导文件在IMG上,WINXP.VHD在硬盘上。
作者: mahuniu    时间: 2011-4-1 10:41
无论放在哪里有一样的,img文件,虚拟一次,vhd文件,也是虚拟了硬盘一次。例如在ram虚拟盘上的boot.ini里启动另外一个img文件上的ram xp或者vhd里的boot.ini菜单启动另外一个vhd的xp,都不可以吧,前者我试过好多软件了——虽然可以启动到第一个img上的启动菜单,但是绝对进不了另外一个img盘上的ram xp

[ 本帖最后由 mahuniu 于 2011-4-1 10:48 编辑 ]
作者: qj_tzy    时间: 2011-4-1 17:16
标题: 回复 #34 mahuniu 的帖子
我以前不知道,现在看了您的回帖才知道不能两次虚拟,谢谢!
作者: amd1969    时间: 2011-4-1 19:33
grub2,还是不太懂,怎么差分
作者: mahuniu    时间: 2011-4-2 00:06
原帖由 qj_tzy 于 2011-4-1 17:16 发表
我以前不知道,现在看了您的回帖才知道不能两次虚拟,谢谢!

现在好象没有什么软件能实现两次虚拟的,你的引导程序同时虚拟两个盘(例如A盘和B盘),那没有问题的,但是虚拟了A盘后再用A盘上的引导程序来虚拟B盘就不行了。虚拟机里,也不能正常运行自身的虚拟机软件
作者: chenall    时间: 2011-4-2 00:27
@mygamexxx
麻烦试试新版的NTBOOT。

奇怪我在我的电脑上经过了N次启动转换还是可以成功启动VBOOT的系统。

首先WEE->GRUB4DOS->NTBOOT.ISO->VBOOT.ISO->VBOOTLDR
作者: qj_tzy    时间: 2011-4-2 09:16
标题: 能否在VHD文件中安装并启动多个操作系统
如我建一个vhd文件,将其分为4个主分区

第1主分区:10G、NTFS,拟装WINXP或装grub4dos等启动管理器,激活分区;
第2主分区:15G、NTFS,拟装WIN7;
第3主分区:15G、NTFS,拟装WIN2008;
第4主分区:15G、NTFS,拟装Winvista。

现在的问题是:
1、能否在启动前,激活VHD文件中的某一主分区,再用vboot启动该激活分区中的系统。
2、或用vboot启动第1分区(已激活)中的grub4dos等启动管理器,再用该启动管理器选择启动其他3个分区中的系统。
作者: qj_tzy    时间: 2011-4-5 11:42
4月05日更新:在vboot中添加VHD系统的快速还原菜单
作者: qj_tzy    时间: 2011-4-6 16:19
标题: 回复 #31 mygamexxx 的帖子
我已将vboot打包成一个ima文件,启动vboot菜单进而启动vhd系统成功。
作者: qj_tzy    时间: 2011-4-9 15:52
4月09日更新:把vboot菜单打包成一个ima文件启动vboot的方法;
                    在VHD文件中安装并启动多个操作系统
作者: 2010ttt    时间: 2011-6-20 17:56
如此强大的教程,加入精华一点也不过分!
作者: qj_tzy    时间: 2011-6-21 08:54
标题: 回复 #45 2010ttt 的帖子
谢谢鼓励,如有新的使用体会,我将更新此贴。
作者: 2010disifanuo    时间: 2011-6-22 10:10
标题: 全是代码,让小菜汗颜
哎呀 让小菜汗颜的代码啊
作者: hbby    时间: 2011-7-1 00:51
标题: 恢复VHD镜像(解决支持长文件名及隐藏分区问题)
发一个自己做的VHD恢复镜像,感觉还好用,请自行解开IMG修改里面的autoexec.bat就行,支持NTFS分区和中文菜单,支持隐藏分区及长文件名

[ 本帖最后由 hbby 于 2011-7-27 12:54 编辑 ]

FLOPPY.part01.rar

100 KB, 下载次数: 276, 下载积分: 无忧币 -2

FLOPPY.part02.rar

100 KB, 下载次数: 277, 下载积分: 无忧币 -2

FLOPPY.part03.rar

100 KB, 下载次数: 266, 下载积分: 无忧币 -2

FLOPPY.part04.rar

100 KB, 下载次数: 240, 下载积分: 无忧币 -2

FLOPPY.part05.rar

100 KB, 下载次数: 260, 下载积分: 无忧币 -2

FLOPPY.part06.rar

100 KB, 下载次数: 252, 下载积分: 无忧币 -2

FLOPPY.part07.rar

100 KB, 下载次数: 242, 下载积分: 无忧币 -2

FLOPPY.part08.rar

100 KB, 下载次数: 150, 下载积分: 无忧币 -2

FLOPPY.part09.rar

53.78 KB, 下载次数: 141, 下载积分: 无忧币 -2

FLOPPY.part1.rar

200 KB, 下载次数: 129, 下载积分: 无忧币 -2

老方案,仅支持短文件名及中文菜单,不支持隐藏分区及长文件名

FLOPPY.part2.rar

200 KB, 下载次数: 110, 下载积分: 无忧币 -2

老方案,仅支持短文件名及中文菜单,不支持隐藏分区及长文件名

FLOPPY.part3.rar

200 KB, 下载次数: 116, 下载积分: 无忧币 -2

老方案,仅支持短文件名及中文菜单,不支持隐藏分区及长文件名

FLOPPY.part4.rar

45.16 KB, 下载次数: 115, 下载积分: 无忧币 -2

老方案,仅支持短文件名及中文菜单,不支持隐藏分区及长文件名


作者: k71g    时间: 2011-7-1 02:19
不太理解,有什么用途的
作者: 2010i560ma    时间: 2011-7-1 08:56
求解   干什么用?
作者: q67512    时间: 2011-7-1 11:05
下载来看下,多谢提供。
作者: 2011SHENGAI    时间: 2011-7-1 11:15
下来看看,先顶上去!
作者: Plantsoot    时间: 2011-7-1 12:03
呵呵,我也共享下我的菜单。

command --set-path=(bd)/BOOT/GRUB/
timeout 10
default 0
gfxmenu (bd)/BOOT/GRUB/message

title 启动 WIN XP 一般模式
#一般模式,每次启动后自动还原差分VHD
dd if=(bd)/WINXP_VHD/WINXPS.BAK of=(bd)/WINXP_VHD/WINXPS.VHD
VHDLDR /WINXP_VHD/WINXPS.VHD

title 启动 WIN XP 超级模式
#DPSW超级模式动态密码验证
DPSW
#验证通过后启动超级模式
VHDLDR /WINXP_VHD/WINXP.VHD

作者: hbby    时间: 2011-7-1 12:12
原帖由 Plantsoot 于 2011-7-1 12:03 发表
呵呵,我也共享下我的菜单。

command --set-path=(bd)/BOOT/GRUB/
timeout 10
default 0
gfxmenu (bd)/BOOT/GRUB/message

title 启动 WIN XP 一般模式
#一般模式,每次启动后自动还原差分VHD
dd if= ...


采用dd命令模式会导致vhd文件越来越大,所以没有采用这种方式
作者: 忧无    时间: 2011-7-1 21:51
标题: 回复 #6 Plantsoot 的帖子
百草大,请问dd命令支持长文件名吗?像Documents and Settings这样的文件名。
作者: 2011nothingness    时间: 2011-7-2 17:23
什么用途?????????????????
作者: Plantsoot    时间: 2011-7-3 15:16
标题: 回复 #7 hbby 的帖子
确实如你所说,我启动了几十次后,差分VHD已经5G了,dd的方案不好。
呵呵,看看你的方案。
作者: qj_tzy    时间: 2011-7-3 17:37
标题: 回复 #1 hbby 的帖子
我已下载看了,这不失为一个恢复VHD系统的好方法。

但VHD系统的文件名一般取为长文件名,且一般将其置于EISA隐藏的NTFS分区中,若能支持EISA隐藏的NTFS分区,且支持长文件名就好了。

我已努力试着解决这一问题,但无果,本人已无法解决。还望高手现身解决这一问题。

我用grub4dos调用映像文件:

title 快速恢复VHD系统(软盘映像方式)
unhide (hd0,1)  
#先试验普通隐藏方式,非EISA隐藏方式
map --mem /grub/restore_vhd.img (fd0)
map --hook
rootnoverify (fd0)
chainloader +1

autoexec.bat的内容为
@ECHO OFF
PATH A:\
LH DOSKEY.COM
SET COMSPEC=A:\COMMAND.COM
LH tw /ns /np>nul
ntfs4dos command /P /F /E:2000 /k autoexec.bat
rem LH DOSLFN /C- /Z:CP936UNI.TBL
doslfn >nul
mode 80
echo.
echo *** 快速还原VHD系统 ***
echo.
echo 1.快速还原-win2008r2
echo 2.快速还原-win7
echo 3.快速还原-win2008
echo 4.快速还原-winvista
echo 5.快速还原-win2003
echo 6.快速还原-winxp
echo 7.重新启动电脑
echo.
choice /c:1234567 请选择
if errorlevel 7 goto end
if errorlevel 6 goto winxp
if errorlevel 5 goto win2003
if errorlevel 4 goto winvista
if errorlevel 3 goto win2008
if errorlevel 2 goto win7
if errorlevel 1 goto win2008r2

:win2008r2
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vhd_sys\my_win2008r2_CHILD_BAK.vhd set drv=%%b:
copy %drv%\vhd_sys\my_win2008r2_CHILD_BAK.vhd %drv%\vhd_sys\my_win2008r2_CHILD.vhd /y >nul
echo Restore OK!
pause
goto end

:win7
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vhd_sys\my_win7_CHILD_BAK.vhd set drv=%%b:
copy %drv%\vhd_sys\my_win7_CHILD_BAK.vhd %drv%\vhd_sys\my_win7_CHILD.vhd /y >nul
echo Restore OK!
pause
goto end

:win2008
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vboot_vhd\win2008_child_bak.vhd set drv=%%b:
copy %drv%\vboot_vhd\win2008_child_bak.vhd %drv%\vboot_vhd\win2008_child.vhd /y >nul
echo Restore OK!
pause
goto end

:winvista
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vboot_vhd\winvista_child_bak.vhd set drv=%%b:
copy %drv%\vboot_vhd\winvista_child_bak.vhd %drv%\vboot_vhd\winvista_child.vhd /y >nul
echo Restore OK!
pause
goto end

:win2003
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vboot_vhd\win2003_child_bak.vhd set drv=%%b:
copy %drv%\vboot_vhd\win2003_child_bak.vhd %drv%\vboot_vhd\win2003_child.vhd /y >nul
echo Restore OK!
pause
goto end

:winxp
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\vboot_vhd\winxp_child_bak.vhd set drv=%%b:
copy %drv%\vboot_vhd\winxp_child_bak.vhd %drv%\vboot_vhd\winxp_child.vhd /y >nul
echo Restore OK!
pause
goto end

:end
REBOOT
作者: xiaoy    时间: 2011-7-3 19:47
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: O.Y.M.2010    时间: 2011-7-3 21:54
采用OMNIFS  VHD镜像放在最后一个分区

@echo off
cls
tway /np >nul
::---------------------------------------------------
:sys_set
set VHD_DIR=VHD
set VHD_XP=VHD_XP-S1.VHD
set XP_BAK=VHD_XP-BAK.VHD
set VHD_W7=VHD_W7-S1.VHD
set W7_BAK=VHD_W7-BAK.VHD
set USE_PWD=1234
echo.
wbat text 3,6 (+green on black)"正在确定 VHDOS 镜像所在硬盘分区,请等待...... !!!"
echo.
omnifs info >hd_id.txt
awk -f lastdrv.awk hd_id.txt|nset VHD_PART=$1
::---------------------------------------------------
:use_pass
cls
call w.bat box :use_password # +1
if %password%==%USE_PWD% goto menu_vhd
wbat box "操作员密码错误!",重新输入,退出重启 #1
if errorlevel 100 goto use_pass
if errorlevel 2 goto end
if errorlevel 1 goto use_pass
::---------------------------------------------------
:menu_vhd
call w.bat box :vhdmenu # +3
if errorlevel 3 goto end
if errorlevel 2 goto w7_vhd
if errorlevel 1 goto xp_vhd
::---------------------------------------------------
:xp_vhd
cls
echo.
wbat text 3,6 (+green on black)"正删除%VHD_XP%并从%XP_BAK%恢复,稍后启动......!!!"
echo.
omnifs delete %VHD_PART%\%VHD_DIR%\%VHD_XP% >nul
omnifs copy %VHD_PART%\%VHD_DIR%\%XP_BAK%   %VHD_PART%\%VHD_DIR%\%VHD_XP%
grub.exe --config-file="command (fd0)/boot/ntboot/ntboot vboot=/%VHD_DIR%/%VHD_XP%"
goto end
::---------------------------------------------------
:w7_vhd
cls
echo.
wbat text 3,6 (+green on black)"正删除%VHD_W7%并从%W7_BAK%恢复,稍后启动......!!!"
echo.
omnifs delete %VHD_PART%\%VHD_DIR%\%VHD_W7% >nul
omnifs copy %VHD_PART%\%VHD_DIR%\%W7_BAK%   %VHD_PART%\%VHD_DIR%\%VHD_W7%
grub.exe --config-file="command (fd0)/boot/ntboot/ntboot nt6=/%VHD_DIR%/%VHD_W7%"
:end
quit.com r

[ 本帖最后由 O.Y.M.2010 于 2011-7-6 10:56 编辑 ]
作者: Plantsoot    时间: 2011-7-3 22:27
标题: 回复 #13 O.Y.M.2010 的帖子
支持EISA隐藏分区?
作者: O.Y.M.2010    时间: 2011-7-3 22:59
原帖由 Plantsoot 于 2011-7-3 22:27 发表
支持EISA隐藏分区?

OMNFIS 支持EISA隐藏分区的

sshot-1.png (11.19 KB, 下载次数: 365)

sshot-1.png

作者: Plantsoot    时间: 2011-7-3 23:01
标题: 回复 #15 O.Y.M.2010 的帖子
太好了,可以把这个IMG打包共享一下吗?
作者: O.Y.M.2010    时间: 2011-7-3 23:16
原帖由 Plantsoot 于 2011-7-3 23:01 发表
太好了,可以把这个IMG打包共享一下吗?

http://u.115.com/file/e62r0ny6#
RE_XP_WIN7_VHD.img

[ 本帖最后由 O.Y.M.2010 于 2011-7-6 10:55 编辑 ]
作者: zqywult    时间: 2011-7-4 01:39
原帖由 O.Y.M.2010 于 2011-7-3 23:16 发表

http://u.115.com/file/aqbzq9ku#
REVHD.img


下载后虚拟机测试,要求输入密码??
O.Y.M.2010 朋友给出密码!谢谢了!!!
作者: Plantsoot    时间: 2011-7-4 09:36
标题: 回复 #16 Plantsoot 的帖子
奇怪的事情发生了,按你的方法,VHD还是不断增大。

经测试 omnifs copy %VHD_PART%\%VHD_DIR%\%VHD_BAK% %VHD_PART%\%VHD_DIR%\%VHD_NAME% 没起作用。
奇怪了。

[ 本帖最后由 Plantsoot 于 2011-7-4 09:49 编辑 ]
作者: hbby    时间: 2011-7-4 23:10
原帖由 qj_tzy 于 2011-7-3 17:37 发表
我已下载看了,这不失为一个恢复VHD系统的好方法。

但VHD系统的文件名一般取为长文件名,且一般将其置于EISA隐藏的NTFS分区中,若能支持EISA隐藏的NTFS分区,且支持长文件名就好了。

我已努力试着解决这一 ...

就楼上兄弟的autoexec.bat提出两点建议
1、考虑到ntfs4dos程序版本的兼容问题,必须要先使用deltree命令来删除老的VHD文件
2、由于加载了ntfs4dos,所以再加载支持长文件名DOSLFN程序是不起作用的,所以不能支持长文件名
以上两点是经过测试的,仅供参考
作者: 2011dwdcth    时间: 2011-7-5 09:18
很好的教程,对我很有帮助
作者: Plantsoot    时间: 2011-7-5 16:00
原帖由 Plantsoot 于 2011-7-4 09:36 发表
奇怪的事情发生了,按你的方法,VHD还是不断增大。

经测试 omnifs copy %VHD_PART%\%VHD_DIR%\%VHD_BAK% %VHD_PART%\%VHD_DIR%\%VHD_NAME% 没起作用。
奇怪了。


找到原因了
awk -f lastdrv.awk hd_id.txt|nset VHD_PART=$1

我的EISA是第一分区,不是最后一个,我已经搞定了,多谢了。
作者: chenall    时间: 2011-7-5 17:46
VHD不断增大也没有关系呀,反正最大不会超过实际大小。
作者: wangziqiang    时间: 2011-7-6 22:50
全都是 高手啊  辛苦了 好多不懂啊
作者: qj_tzy    时间: 2011-7-10 16:02
标题: 回复 #13 O.Y.M.2010 的帖子
我的VHD系统及其子VHD均取为长文件名,请问#13楼的方法是否支持长文件名。
作者: qj_tzy    时间: 2011-7-10 16:03
标题: 回复 #13 O.Y.M.2010 的帖子
我的VHD系统及其子VHD均取为长文件名,请问#13楼的方法是否支持长文件名。
作者: 2011caigj    时间: 2011-7-12 17:36
写得非常好,学习了,谢谢楼主。
作者: 2010ttt    时间: 2011-7-13 12:10
你这个教程是给菜鸟看的,要图文并茂,自己看41楼
作者: qj_tzy    时间: 2011-7-14 09:14
标题: 回复 #44 2010ttt 的帖子
本贴是本人在试验中总结出来的。但要加图,有些甚至需在DOS、grub4dos、vboot状态下载图,本人不会呀,所以不好意思,只有将就了。
作者: 2010ttt    时间: 2011-7-16 10:46
标题: 回复 #45 qj_tzy 的帖子
还要注意,段落要清晰。
作者: lianjiang    时间: 2011-7-17 14:28
原帖由 2010ttt 于 2011-7-16 10:46 发表
还要注意,段落要清晰。


建议斑竹根据楼主的帖子重写一个图文并茂,段落清晰的教程。呵呵。
作者: qj_tzy    时间: 2011-7-18 08:59
标题: 回复 #46 2010ttt 的帖子
谢谢版主为该帖子改版,改版后,版面更清晰易读。再次谢谢。
作者: 2010anweinuo    时间: 2011-7-21 20:09
写得非常好,学习了,谢谢楼主。
作者: hbby    时间: 2011-7-24 19:01
最新更新了恢复VHD镜像,请大家使用,自己顶下
作者: qj_tzy    时间: 2011-7-25 15:38
标题: 回复 #26 hbby 的帖子
经测试,感觉该软盘映像非常不错,有如下特点:

1、支持中文菜单;
2、能快速还原在普通隐藏的NTFS分区中某英文目录下具有长英文文件名的子VHD(含winxp、win2003、winvista、win2008、win7、win2008r2的VHD系统);
3、还原后的子VHD文件与原备份BAK子VHD文件的大小完全相同,但不知何原因,子VHD文件的时间既非原备份BAK子VHD文件的时间,又非复制时的当前系统时间;
4、不支持EISA隐藏的分区。

若能解决支持EISA隐藏分区问题,及复制后的时间问题(与原BAK相同,或为当前的系统时间均可),则该映像就完美了。非常期待!
作者: Plantsoot    时间: 2011-7-25 17:44
原帖由 qj_tzy 于 2011-7-25 15:38 发表
若能解决支持EISA隐藏分区问题,及复制后的时间问题(与原BAK相同,或为当前的系统时间均可),则该映像就完美了。非常期待!


没问题的,我已经部署了20多台电脑了,都是EISA隐藏分区(第一个最后一个都没问题)。

部分代码修改参考下面。
  1. omnifs info >hd_id.txt
  2. awk '/Diag/' hd_id.txt|nset VHD_PART=$1
复制代码

作者: hbby    时间: 2011-7-25 22:10
标题: 回复 #28 Plantsoot 的帖子
可以给出你的镜像文件吗?
作者: Plantsoot    时间: 2011-7-25 22:28
原帖由 hbby 于 2011-7-25 22:10 发表
可以给出你的镜像文件吗?


可以,我再整理下,还有一个潜在的问题,当然,我目前遇到过一次硬盘有问题的电脑启动失败,这个潜在的问题我解决了就共享下我全套的文件。
作者: zhrmghg117    时间: 2011-7-26 21:05
感谢楼主  昨天下载了你IMG 成功设置了分差还原
同时期待楼上的共享
作者: 2011maizi    时间: 2011-7-27 03:13
还是喜欢楼主原来短文件名的方案
实践中发现有些用ati显卡的电脑替换掉vboot目录下的vboot可以启动,ntboot引导vhd启动后在进度条走到某个阶段黑屏,替换掉vboot.iso中的vboot后花屏,完全无法启动。

用omnifs替换grub的menu.lst后重启会更稳妥
omnifs delete %VHD_PART%\menu.lst >nul
omnifs copy %VHD_PART%\vboot\grub4dos\menu\menu_revhd.lst  %VHD_PART%\menu.lst
reboot

接着用dd命令替换回原来的menu.lst
title WindowsXP sp2(正常模式)
map () (hd0)
map (hd0) ()
map --rehook
dd if=()/vboot/grub4dos/menu/grub_normal.cfg of=()/vboot/grub/grub.cfg
dd if=()/vboot/grub4dos/menu/menu_bak.lst of=()/menu.lst
kernel ()/vboot/vbootldr

[ 本帖最后由 2011maizi 于 2011-7-27 04:09 编辑 ]
作者: hbby    时间: 2011-7-27 13:15
标题: 回复 #32 2011maizi 的帖子
应你要求,把老的方案也加上了
作者: pw4321    时间: 2011-7-27 20:00
强,今后就用vhd版xp了
作者: zhrmghg117    时间: 2011-7-28 00:40
再次感谢共享 学习了
作者: qj_tzy    时间: 2011-7-28 14:44
标题: 回复 #1 hbby 的帖子
在DOS下使用omnifs info命令,或在winpe或windows中使用omnifs32 info命令,如列出存放VHD文件的分区的编号为1.3(即第1硬盘第3分区),将autoexec.bat的内容(其中的1.3:\dir\file,不能改为1:3\dir\file)作如下修改,将映像更改为2.88M后,将omnifs.exe及autoexec.bat加入映像后,用grub4dos调用该映像即可。

此法支持普通隐藏或EISA隐藏的NTFS分区及长文件名,且还原后,子VHD文件的大小与时间,与备份VHD文件的大小与时间完全相同。

只是想请问楼主,采用omnifs后,你原提供的映像是否可再精简,使采用omnifs后仍只有1.44M?

@ECHO OFF
PATH A:\
LH DOSKEY.COM
DOSLFN
SET COMSPEC=A:\COMMAND.COM
set cp=936
if not %1#==# set cp=%1
lh hdpmi32
lh ndos -lfn -mountall -cp:%cp%
ndlist -
set cp=
LH tw /ns /np>nul
mode 80
echo.
echo *** 快速还原VHD系统 ***
echo.
echo 1.快速还原-win2008r2
echo 2.快速还原-win7
echo 3.快速还原-win2008
echo 4.快速还原-winvista
echo 5.快速还原-win2003
echo 6.快速还原-winxp
echo 7.重新启动电脑
echo.
choice /c:1234567 请选择
if errorlevel 7 goto end
if errorlevel 6 goto winxp
if errorlevel 5 goto win2003
if errorlevel 4 goto winvista
if errorlevel 3 goto win2008
if errorlevel 2 goto win7
if errorlevel 1 goto win2008r2

:win2008r2
omnifs copy 1.3:"\vhd_sys\my_win2008r2_CHILD_BAK.vhd" 1.3:"\vhd_sys\my_win2008r2_CHILD.vhd"
echo Restore OK!
pause
goto end

:win7
omnifs copy 1.3:"\vhd_sys\my_win7_CHILD_BAK.vhd" 1.3:"\vhd_sys\my_win7_CHILD.vhd"
echo Restore OK!
pause
goto end

:win2008
omnifs copy 1.3:\vboot_vhd\win2008_child_bak.vhd 1.3:\vboot_vhd\win2008_child.vhd
echo Restore OK!
pause
goto end

:winvista
omnifs copy 1.3:\vboot_vhd\winvista_child_bak.vhd 1.3:\vboot_vhd\winvista_child.vhd
echo Restore OK!
pause
goto end

:win2003
omnifs copy "1.3:\vboot_vhd\win2003_child_bak.vhd" "1.3:\vboot_vhd\win2003_child.vhd"
echo Restore OK!
pause
goto end

:winxp
omnifs copy "1.3:\vboot_vhd\winxp_child_bak.vhd" "1.3:\vboot_vhd\winxp_child.vhd"
echo Restore OK!
pause
goto end

:end
reboot

[ 本帖最后由 qj_tzy 于 2011-7-28 14:45 编辑 ]
作者: qj_tzy    时间: 2011-8-3 11:59
标题: 回复 #37 liujingxiong 的帖子
dos 的 if exist 命令不支持EISA隐藏分区
作者: zqywult    时间: 2011-8-3 14:27
原帖由 O.Y.M.2010 于 2011-7-3 23:16 发表

http://u.115.com/file/e62r0ny6#
RE_XP_WIN7_VHD.img


该文件的分享已到期,..............

O.Y.M.2010 朋友把您的分享续期!谢谢了!!!

作者: O.Y.M.2010    时间: 2011-8-4 14:18
原帖由 zqywult 于 2011-8-3 14:27 发表


该文件的分享已到期,..............

请O.Y.M.2010 朋友把您的分享续期!谢谢了!!!

http://u.115.com/file/e62r0ny6#
RE_XP_WIN7_VHD.img
作者: crazymanwj    时间: 2011-8-18 20:26
仔细学学,再次感谢!
作者: liningbest    时间: 2011-8-23 09:48
很好,很强大,谢谢楼主的总结~~
作者: scflh    时间: 2011-9-15 22:54
标题: 请教:您的第七步看不懂,系统xp转xpvhd。
第七步:打开regedit,用加载配置单元命令,把 H:\Windows\System32\config\system 挂上HKEY_LOCAL_MACHINE 取名为000;把 HKEY_LOCAL_MACHINE\000\MountedDevices 删除;导入以上保存备用的sys.reg及sys1.reg文件 ,编辑 MountedDevices,删除 \DosDevices\C: ,把\DosDevices\H: 改为 \DosDevices\C:;选中000项,卸载配置单元,退出 regedit。此步即是导入分区系统的注册表,编辑后保存回vhd系统的\Windows\System32\config\的system配置单元中
作者: scflh    时间: 2011-9-15 22:57
标题: 第七步,看不明白啊
将安装在分区中的winxp/win2003/winvista/win2008/win7/win2008r2系统转换为由vboot启动的VHD系统的方法
第七步,看不明白啊。
作者: sutuo    时间: 2011-9-18 08:40
win7 2008 vista 直接用bootmgr引导
作者: qj_tzy    时间: 2011-9-18 11:24
标题: 回复 #94 sutuo 的帖子
应该说,只有win7企业版、旗舰版的VHD系统及win2008r2的VHD系统,才能用bootmgr启动;win2008、vista的vhd系统,及win7企业版、旗舰版之外版本的VHD系统,均只能用vboot驱动启动。

当然,chenall之NTBOOT能启动以上两者。

若能用bootmgr启动win2008及vista的vhd系统,我确是不知。若真能这样,还真心请教该如何做?谢谢!

[ 本帖最后由 qj_tzy 于 2011-9-18 11:36 编辑 ]
作者: liuhecaixjj    时间: 2011-9-23 00:42
89#楼,麻烦共享下,要此文件未共享。
http://u.115.com/file/e62r0ny6#
RE_XP_WIN7_VHD.img


谢谢。
作者: wan06    时间: 2011-10-20 20:11
这个怎么安装原版的XP系统啊!我的总是提示不能打开镜像文件
作者: daxiziqi    时间: 2011-11-15 22:33
VBOOT用不起,装了XP VHD ,全部按照说明操作,结果还是0x0000012F的蓝屏代码。
据说VBOOT是中国人开发的,怎么主页全是英文,该不会是开发小组里有一个中国人,就说是中国人开发的吧。
这么不稳定,还不如直接装双系统算了,反正XP系统也不大,还原也快。
作者: 2011huisinro    时间: 2011-11-19 03:52
0x0000012F error indicates the license has expired. Try to download the new v2.0 version.
作者: daxiziqi    时间: 2011-11-24 16:14
标题: 回复 #99 2011huisinro 的帖子
多谢!我再试试看吧,最近用win7 的vhd系统,感觉也还不错,与原系统相比没慢多少,如果真能用xp vhd系统,那还是很不错的。
作者: 2011d2138    时间: 2011-12-20 18:12
标题: Vboot还是蛮好用的!!
我第一次用vboot v1.1,就是用xp_VHD辅助工具,很容易建立并灌入xp.gho,启动后12蓝屏,copy破解vbootdsk.sys,
很快就正常装好xp,用e驱装好驱动,不到半小时全部OK!
装w2k3时出现7b蓝屏,用笨方法,改ahci为ide,全部装完后按网上介绍硬改AHCI,也很顺利.
作者: szfhx    时间: 2012-8-16 08:26
学习一下,感谢分享。。。
作者: 2012yao69    时间: 2012-8-23 09:45
想试试xp系统 可 WinXP_VHD_201和vbootdsk驱动.rar 找不到下载希望楼主提供下。115的没有一个能下载。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3