0cat0 发表于 2010-12-10 14:02:40

【VHD教程】自己动手做NT6.X的VHD系统

做NT6.X的VHD系统的方法网上已经有很多了,因为我也是通过网上的方法才学会的,以下就以自己写的一个CMD做示例,简单的从头到尾做一次,这样对于一些想试一下VHD系统的朋友也许有一些帮助。

在这里先简单的说一下VHD差分系统是什么东东,下面这个是直接从DISKPART命令行里面复制出来的:

创建虚拟磁盘文件。当前仅支持 VHD 格式的文件。
语法:CREATE VDISK FILE=<"filename"> MAXIMUM=<N>
            
            


            创建差异磁盘的现有父虚拟磁盘文件
            的路径。对于 PARENT 参数,不应指定 MAXIMUM,
            因为差异磁盘从其父目录获取大小。而且,
            也不应指定 TYPE,因为只能创建
            EXPANDABLE 差异磁盘。
            
简单的说创建VHD差分系统就是用一个现有的VHD创建一个新的差异VHD磁盘文件,这样应该好理解很多,比如:现在我已经有一个正常VHD系统正在使用,但有时候想试用一下某个软件或为了安全一点的上上网银,这时就可以通过上面DISKPART命令行建一个差分VHD,用完删除即可。

下面是文件说明,说白了命令行生成的步骤如下:

生成空白的VHD-》灌入WIN7-》生成win7_x86.vhd-》改win7_x86.vhd为win7_x86.vhd_PARENT-》用win7_x86.vhd_PARENT生成差分win7_x86.vhd

这样就可以自己生成差分版VHD的两个文件了,呵呵。。。

正常使用的VHD系统是win7_x86.vhd,安装完所有东西后,改名win7_x86.vhd为win7_x86.vhd_bak,用win7_x86.vhd_bak生成差分win7_x86.vhd,然后直接复制win7_x86.vhd为win7_x86.vhd_dd

这样看应该关系非常清楚了吧。。。

正常情况下,用G4D秒还原用的是win7_x86.vhd_dd替换掉win7_x86.vhd,如果想更新系统(比如:打补丁),就删除掉win7_x86.vhd,改名win7_x86.vhd_bak为win7_x86.vhd,更新完后,重新改名win7_x86.vhd为win7_x86.vhd_bak,用win7_x86.vhd_bak生成差分win7_x86.vhd,然后直接复制win7_x86.vhd为win7_x86.vhd_dd

下面以做一个X86的WIN7差分VHD系统为例,为了方便,自己写了一个CMD,因为要用到DISKPART命令,所以只能在PE3或NT6.X系统里面才能使用,可以在这里下载:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=163278&extra=page%3D1&page=1


也可以下载个我自己DIY的PE3:

http://u.115.com/file/f65a4cf979


界面如下:


为了方便后面的操作,请看第一行,认清自己的硬盘的活动主分区是哪个盘,如果隐藏了,请先显示出来,其实这步跟做VHD是没有关系的,这步是为了第二项添加菜单准备的,呵呵。。。如果不知道哪个是活动主分区,可以下载这个:

运行里面的CMD就可以看到如下的内容了:


这里C:盘就是活动主分区了,只要设置好这个添加菜单的时候就没有问题了。。。

下面开始做VHD系统,选第一项后,按要求输入文件名,如下:



然后把原版WIN7X86的ISO文件解压或虚拟成光驱,如下:


找到INSTALL.WIM的路径后填到下一步的内容里面,如图:


跟着选生成VHD系统的大小,一般来说正常使用有个32G足够了,选3后,如图:


这时请不要关闭这个CMD窗口,因为后台正在生成和处理VHD文件,这时可以到CMD的目录去看一下,会多出两个文件,WIN7_X86.VHD和WIN7_X86.VHD.TXT,需要查看进度可以打开那个TXT看一下,完了以后也会打开这个文件,如下:


这个时候打开CMD的目录可以看到差分版的VHD系统已经生成完了,而且差分也做好了,如下:

说明一下文件是什么来的:
WIN7_X86.VHD                   ===>这个就是生成好的差分系统了,因为是没使用过的,所以只是一个空的磁盘文件只有100多K
WIN7_X86.VHD_PARENT      ===>这个是WIN7_X86.VHD的父,换句话说,WIN7_X86.VHD就是用这个文件生成的,所以这个文件才是最始的生成文件,也是通用VHD文件,直接拿到别的机器上面也可以用的(当然,如果是要放到移动盘上面还要改注册表)

完成后就可以返回主菜单了。

下面选第二项添加菜单,下图:



输入刚刚生成的WIN7_X86.VHD文件名,然后等完成即可:


到这里WIN7_X86的VHD差分系统就创建和添加菜单完成了。

这时可以运行BCDTOOL查看生成的BCD菜单是否正常,如下:


[ 本帖最后由 0cat0 于 2010-12-30 18:15 编辑 ]

0cat0 发表于 2010-12-10 14:02:57

上面已经简单的介绍了怎么自己做VHD系统了,下面简单说明一下使用VHD系统和那个CMD的要注意的地方:

1.原版的VHD系统生成完以后大概几个G,可以从顶楼的图里面看到X86、X64和WIN2008R2版生成的大小不同。所以放VHD系统的盘要注意大小,硬盘大小最小>生成VHD系统的大小(如:32G)+VHD父的大小(如:X86为5G)+差分系统的大小(一般重启动后自动安装完驱动后大小小于1G)≈32+5+1≈40G,这样如果还需要做备份的话,放VHD差分系统的盘最大≈32GVHD系统+20G左右VHD备份后的大小(安装完驱动及软件后的大小)+5GVHD父的大小≈64G(这个是我自己的习惯)

2.自己写的那个CMD有一个地方需要注意的,就是添加菜单前一定要看清楚自己需要安装VHD系统的硬盘活动主分区是哪个盘,因为添加菜单的时候会先找硬盘里面有没有BCD菜单文件,如果有就直接添加,没有就自动生成BCD文件和修改硬盘的MBR。

[ 本帖最后由 0cat0 于 2010-12-10 15:13 编辑 ]

TCLSHX 发表于 2010-12-10 18:23:23

初次接触,挺复杂,不过看着应该很不错,慢慢学习..........

445112826 发表于 2010-12-11 21:22:06

很好很详细的学习帖,感谢楼主,学到了不少。继续学习,期待楼主的进一步完善。

qj_tzy 发表于 2010-12-10 20:58:46

回复 #1 0cat0 的帖子

我原已会安装VHD系统,但未用WIM2VHD安装过,也不会更改其注册表,更不会将其移植到其他电脑或移动硬盘上。学习了你的帖子后,又有很大的收获,真的非常感谢!

TCLSHX 发表于 2010-12-10 14:16:47

沙发,学习咯..........

0cat0 发表于 2010-12-10 14:03:00

这楼说一下怎么样把一个正常使用的VHD系统做成通用的VHD系统:

1.本地使用的VHD系统,下面这三个文件是自己从原版VHD系统里面导出的注册表,因为把VHD系统复制到别的机器启动不了一般都是磁盘驱动的问题,所以只要导入下面的原版注册表一般都OK(我自己已经试过三台机可以通过)

系统安装[通用启动]的:


系统安装[通用启动]的:


系统安装[通用启动]的:



2.移动设备上使用的VHD系统,通过fujianabc大大的帖子,了解到需要修改注册表才能把VHD放到移动设备上面去使用,下面两个是本地和移动硬盘上面使用的注册表,已经做成了CMD文件方便使用:

系统安装的:


系统安装的:


上网找了一下,知道WIN7系统PollBootPartitionTimeout的值只要15000就行,WIN08R2的要30000,所以就直接用30000了。

[ 本帖最后由 0cat0 于 2010-12-10 15:32 编辑 ]

0cat0 发表于 2010-12-10 14:03:02

这楼说一下如何修改VHD系统的注册表,挂离线VHD系统(我刚刚接触VHD的时候也不知道怎么弄,呵呵),在PE3或NT6系统下运行DISKMGMT.MSC,如图:



选“附加 VHD”,如下:



选要修改的VHD文件后点确定就挂上去了,完成后如图:



2.运行REGEDIT,然后点“HKEY_LOCAL_MACHINE”项,在文件菜单选“加载配置单元”,选择刚才挂上去的VHD系统盘,路径为window\system32\config\,选“SYSTEM”这个文件,如图:



然后输入名称(随便输入就行了,比如:111),这时就加载了VHD系统的注册表项了,如图:



修改完注册表后,点加载的如:111,文件菜单里面选“卸载配置单元”,完成后VHD注册表就保存好了,如图:



这时只要分离VHD文件就行了,如图:



[ 本帖最后由 0cat0 于 2010-12-10 16:08 编辑 ]

0cat0 发表于 2010-12-10 14:03:04

这楼介绍一些自己用VHD系统的经验,自己装VHD系统的步骤,下面以VM里面的VHD系统为例:

用移动硬盘或光盘的PE3启动电脑,用顶楼的方法安装VHD系统,然后加多一个PE3到启动菜单,全部完事后,隐藏放VHD文件的分区,重新启动后,显示分区如图:



可以看到,VHD真的很干净,这也是我很喜欢VHD系统的原因之一,下面是我自己DIY的PE3启动界面,如图:




这样平时还原、更新、备份就很方便了,呵呵。。。

正常安装完系统和添加完PE3并隐藏分区后,重新启动后就会进入WIN7的安装,安装完后进入WIN7系统,显示分区后激活,然后隐藏分区,安装后驱动和软件后,清理垃圾文件,跟着进入PE3就可以备份了。。。

VHD系统的备份非常简单,只要重命名正常使用的VHD文件,然后从这个文件生成分差就行了,生成的分差名改为正常使用的VHD名,这样就可以不用改启动菜单BCD文件了。

VHD系统的还原也非常简单,只要删除正在使用的VHD文件,重新从备份文件生成分差就行了。。。

[ 本帖最后由 0cat0 于 2010-12-10 16:39 编辑 ]

0cat0 发表于 2010-12-10 14:03:07

这楼说一下怎么在启动菜单加个还原菜单项及怎么做到秒还原。。。

假定已经安装好的VHD文件路径如下图:




WIN7_X86.VHD===》为正在使用的VHD系统

WIN7_X86.VHD_DD===》是由正在使用的VHD系统的父生成的差分备份

有了备份文件WIN7_X86.VHD_DD后,我们就可以在启动菜单BCD中加入G4D菜单,方法如下:

@ECHO OFF
@CD /D "%~DP0"
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /ENUM ACTIVE >"%TEMP%\BCDTEMP.TXT"
@TYPE "%TEMP%\BCDTEMP.TXT" | FIND /I "\SYSDD.MBR" >NUL && @DEL /F /A /Q "\\?\%TEMP%\BCDTEMP.TXT" >NUL && @GOTO QUIT
@SET VID=
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /CREATE /D "选择此项后回车【还原系统】" /APPLICATION BOOTSECTOR >"%TEMP%\VID.TXT"
FOR,/F,"TOKENS=2 DELIMS={",%%I,IN (%TEMP%\VID.TXT) DO (SET VIDA=%%I)
FOR,/F,"TOKENS=1 DELIMS=}",%%I,IN ("%VIDA%") DO (SET VID={%%I})
ECHO %VID%>"%TEMP%\VID.TXT"
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /SET %VID% DEVICE "PARTITION=%~D0" >NUL
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /SET %VID% PATH "\SYSDD.MBR" >NUL
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /SET {BOOTMGR} DISPLAYORDER %VID% /ADDLAST >NUL
BCDEDIT.EXE /STORE "%~D0\BOOT\BCD" /SET {BOOTMGR} TIMEOUT "9" >NUL
@DEL /F /A /Q "\\?\%TEMP%\VID.TXT" >NUL
@GOTO QUIT
:QUIT
@DEL /F /A /Q "\\?\%~DP0BCDEDIT.EXE" >NUL
@DEL /F /A /Q "\\?\%~DP0SYSDD.CMD" >NUL
@EXIT


添加成功后,BCD启动菜单就会如下图一样,多了一G4D菜单:



如果选择进入这个菜单就会自动将WIN7_X86.VHD_DD替换掉WIN7_X86.VHD文件,这样就实现了还原的效果了。。。


下面是G4D的内置菜单的内容:

timeout 0
default 0
title
find --set-root --ignore-floppies --ignore-cd /My_BOOT/WIN7_X86.VHD
dd if=()/My_BOOT/WIN7_X86.VHD_DD of=()/My_BOOT/WIN7_X86.VHD
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /BOOTMGR

用最新版的G4D,把上面的菜单内置,然后复制grldr及grldr.mbr文件到BCD所以盘的根目录就可以了

附件是已经做好的全自动添加菜单的CMD,有需要的可以下载按自己的需要改一下就行了。

[ 本帖最后由 0cat0 于 2010-12-24 17:33 编辑 ]

0cat0 发表于 2010-12-10 14:03:08

添加一个录像,录得比较粗糙,下载:

http://u.115.com/file/f6764aa289

[ 本帖最后由 0cat0 于 2010-12-27 11:06 编辑 ]

0cat0 发表于 2010-12-10 14:03:10

提供一下自己DIY别人的PE3,下载:

http://u.115.com/file/f65a4cf979


因为这个是自己放光碟上用的,所以用WINRAR打包成EXE了,双击解压到BCD所在盘,然后手动添加到菜单就行了,里面有个分区管理的文件夹可以剪贴放到其它盘,这样进VHD系统后也可以显示或隐藏分区。



需要新一点版本的,可以到这里2#楼下载:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=177697&extra=page%3D1

[ 本帖最后由 0cat0 于 2011-4-15 12:30 编辑 ]

0cat0 发表于 2010-12-10 14:03:12

NT6XSP1的VHD注册表项(包括WIN6x86SP1、WINX64SP1、WIN2008R2SP1):

[ 本帖最后由 0cat0 于 2011-3-31 22:18 编辑 ]

0cat0 发表于 2010-12-10 14:03:15

补个VHD版WIN7的教程,下面以小体积为例:

1.下载个精简版的WIN7,本例用的是PROSEN的WIN7LITE7.626EX

2.新建VHD,灌入WIN7系统,下面是本例的方法:

解压出install.wim文件放入一个新建的文件夹,如:D:\My_VHD\
把下面的东西保存为CMD,双击运行:@ECHO OFF
@TITLE
@CD /D "%~DP0"
IF /I NOT EXIST "%~DP0IMAGEX.EXE" ECHO. && ECHO 错误:[%~DP0IMAGEX.EXE]不存在,请检查一下... && @PAUSE>NUL && @EXIT
IF /I NOT EXIST "%~DP0INSTALL.WIM" ECHO. && ECHO 错误:[%~DP0INSTALL.WIM]不存在,请检查一下... && @PAUSE>NUL && @EXIT
@CLS
@ECHO CREATE VDISK FILE="%~DP0RAM_WIN7.VHD" MAXIMUM=1538 TYPE=FIXED>"%TEMP%\DISKPART.TXT"
@ECHO SELECT VDISK FILE="%~DP0RAM_WIN7.VHD">>"%TEMP%\DISKPART.TXT"
@ECHO ATTACH VDISK>>"%TEMP%\DISKPART.TXT"
@ECHO CREATE PARTITION PRIMARY ALIGN=32>>"%TEMP%\DISKPART.TXT"
@ECHO ACTIVE>>"%TEMP%\DISKPART.TXT"
@ECHO ASSIGN LETTER=R>>"%TEMP%\DISKPART.TXT"
@ECHO FORMAT FS=NTFS UNIT=4096 LABEL=RAM-VW7>>"%TEMP%\DISKPART.TXT"
@ECHO EXIT>>"%TEMP%\DISKPART.TXT"
DISKPART.EXE /S "%TEMP%\DISKPART.TXT"
IMAGEX.EXE /APPLY "%~DP0INSTALL.WIM" "1" "R:"
@ECHO SELECT VDISK FILE="%~DP0RAM_WIN7.VHD">"%TEMP%\DISKPART.TXT"
@ECHO DETACH VDISK>>"%TEMP%\DISKPART.TXT"
@ECHO EXIT>>"%TEMP%\DISKPART.TXT"
DISKPART.EXE /S "%TEMP%\DISKPART.TXT"
@ECHO.
@ECHO.
@ECHO.
@ECHO                  ※※※※※※※※※※※※※※※※※※※※※※※
@ECHO                  ※                                          ※
@ECHO                  ※          操作完成,按任意键退出          ※
@ECHO                  ※                                          ※
@ECHO                  ※※※※※※※※※※※※※※※※※※※※※※※
@ECHO.
@DEL /F /A /Q "\\?\%TEMP%\DISKPART.TXT" >NUL
@PAUSE>NUL
@EXIT运行完成后就生成一个固定容量为1.5G的RAM_WIN7.VHD文件了

3.把RAM_WIN7.VHD加入启动菜单,可以加一个用正常用VHD的菜单和一个RAMOS的菜单:

如图:


G4D的菜单内容:
timeout 0
default 0
title          RAMOS WIN7VHD
find --set-root /My_VHD/RAM_WIN7.VHD
map --mem /My_VHD/RAM_WIN7.VHD (hd0)
map --hook
root (hd0,0)
chainloader /BOOTMGR

因为体积没有超过3.25G,所以不用加top参数,如果大于3.25G的,要加top参数

4.先进正常的VHD系统安装FiraDisk驱动,我用的是0.0.1.30版,不知道为什么要重新启动两次才能正常安装,不管了,反正看系统设备里面是正常安装的就行了,确定正常安装后就可以重启进入RAMOS了。

需要注意的事项:
1.建VHD文件的时候要用固定容量。
2.确定正常的VHD里面安装好FiraDisk驱动。
3.本例实机内存为2G,大于加载的VHD文件大小1.5G。

下面是跑内存盘的成绩:

[ 本帖最后由 0cat0 于 2011-4-10 22:27 编辑 ]

TCLSHX 发表于 2010-12-14 11:55:04

希望楼主能添加关于修改注册表的内容,以及为什么要修改,说说原因, 这点可能对于拿到别的机子上安装时很重要, 我是猜的,我也还不明白,呵呵........

0cat0 发表于 2010-12-14 13:07:47

回复 #15 TCLSHX 的帖子

3楼已经有说明及注册表文件了,修改注册表的原因多数是因为磁盘驱动问题,我自己试过只要导入原版注册表就没有问题。。。

TCLSHX 发表于 2010-12-14 13:28:35

原帖由 0cat0 于 2010-12-14 13:07 发表 http://bbs.wuyou.net/images/common/back.gif
3楼已经有说明及注册表文件了,修改注册表的原因多数是因为磁盘驱动问题,我自己试过只要导入原版注册表就没有问题。。。

好象讲到加载注山册表项为111,然后就接着卸载了,没有讲修改呢哪些内容,或导入其它REG文件呀

0cat0 发表于 2010-12-14 13:46:03

回复 #17 TCLSHX 的帖子

呵呵,那是4楼的内容,4楼是讲怎么样修改注册表,只要按4楼的方法导入3楼的注册表就行了,不过3楼的附件已经做好了,只要挂上VHD,运行3楼的附件只要输入盘符就可以了,手动的话只要解压出来导入注册表就行了,呵呵。。。

改天再上个图吧。。。

2010vhdftc 发表于 2010-12-22 15:34:29

之前已经做好了win7的差分系统,用的是正在使用的win7还原成的wim镜像。
想用楼主所说的方法修改注册表做成通用系统,在VPC里启动到登陆页面还没有问题,结果悲剧了,系统提示不是正版,进入的是临时帐户,什么都做不了。
想想可能是不能用现成系统使用了win7pojie工具的原因,改注册表将正版信息也删除了,差分系统就此挂了

q67512 发表于 2010-12-22 19:41:21

学习下,一直用别的软件做vhd系统,看看这个软件怎么样。

0cat0 发表于 2010-12-24 17:34:41

添加一页教程,说的是怎么样添加秒还原方法。。。

20108008 发表于 2010-12-25 10:10:35

学习学习,收藏!

0cat0 发表于 2010-12-27 11:10:40

添加个录像。。。。。

fxyq 发表于 2010-12-29 11:35:46

谢谢,讲的够详细的了……
虽然我还在用I845PE的主机,没条件测试使用,但也知道是怎么回事了!

0cat0 发表于 2010-12-30 14:22:15

提供一个PE3,下载:

http://u.115.com/file/f65a4cf979

0cat0 发表于 2010-12-30 18:16:55

更新一下顶贴,说明一些生成VHD的步骤及各VHD文件之间的关系。。。

zzcn2008 发表于 2011-2-9 15:08:56

115盘上的文件都到期了,能否提供其他下载地址?或者续期一下!

2010krman 发表于 2011-2-9 16:39:11

有点麻烦啊,最好做个傻瓜式的

0cat0 发表于 2011-2-10 18:10:55

回复 #27 zzcn2008 的帖子

多谢提醒,已经全部续期了。。。

cxmzlxb 发表于 2011-3-2 14:33:21

WIN7的懂了,不过XP的不怎么懂。能不能弄个教程或视频?
页: [1] 2 3 4
查看完整版本: 【VHD教程】自己动手做NT6.X的VHD系统