注:本文整理自网络与翻译自这篇博文
关于VHD的好处,有如下说明:
对于运行在VHD上的系统来说,除了磁盘是虚拟的之外,完全的直接运行于物理设备上,磁盘上由于虚拟的原因会带来3%到5%的性能损失。此外同直接安装系统相比再无其他区别。需要注意的是,现在不支持保存在USB移动设备上的VHD。
另外一个更详细的说明是这样的:
微软在Windows 7中对VHD格式虚拟磁盘文件提供原生支持,还体现在操作系统能够将VHD虚拟磁盘文件当作物理磁盘一样进行读写与管理。基于此特性,用户能够实现将Windows 7或者Windows Server 2008 R2操作系统的WIM镜像部署到VHD虚拟磁盘文件中,并通过添加系统启动引导项的方式将计算机引导进入VHD虚拟磁盘文件中所部署的操作系统之中。
值得一提的是,与其它虚拟机软件环境下所运行的基于虚拟硬件设备的虚拟操作系统不同。基于VHD虚拟磁盘文件的系统直接访问物理硬件设备,除了由于虚拟磁盘相比物理硬盘缺少了硬盘缓存所带来的些许性能损失外,其它方面与安装在物理硬件上的操作系统几乎没有差异。用户一般所关心的开启系统Aero玻璃特效,显卡游戏性能等都几乎没有影响。而且在VHD虚拟磁盘系统下,同样能够访问物理硬盘上原有的分区内容。
下面看看如何创建VHD文件:
DISKPART> create vdisk file="G:/VirtualHD.vhd" maximum=20480 type=expandable 100 percent completed DiskPart successfully created the virtual disk file.
总之创建一个VHD是相当简单的,之后你就可以把VHD镜像挂载进Windows了。图形化的操作和创建没什么区别,而命令行则是这样:
DISKPART> select vdisk file="G:/VirtualHD.vhd" DiskPart successfully selected the virtual disk file. DISKPART> attach vdisk 100 percent completed DiskPart successfully attached the virtual disk file.
刚创建的VHD是不能用的,所以需要初始化一下,图形界面的话如上截图,在disk1那边点右键initialize disk即可。命令行就需要创建一下分区即可,在这里其实VHD已经等价于一个新的硬盘。所以该怎么做就怎么做吧。
弄好了以后就往里灌Windows的镜像吧。这里需要用imageX工具。这个东西在Windows 7的AIK工具里面有,不过那东西太大了,我直接传了一个,可以到ulysess.ys168.com里面那磁盘工具里下载。
好,准备开始
首先你要有一个系统的镜像或者光盘,我直接把我的Windows Server 2008R2评估版的镜像挂载在虚拟光驱了,之后用imagex工具查看wim文件的信息,我的是这样的:
C:/>imagex.exe /info H:/sources/in stall.wim ImageX Tool for Windows Copyright (C) Microsoft Corp. All rights reserved. Version: 6.1.7600.16385 WIM Information: ---------------- Path: H:/sources/install.wim GUID: {bd8f3a22-5987-478d-a780-2a56bd77993a} Image Count: 8 Compression: LZX Part Number: 1/1 Attributes: 0xc Integrity info Relative path junction Available Image Choices: ------------------------ <WIM> <TOTALBYTES>2642792123</TOTALBYTES> <IMAGE INDEX="1"> <DIRCOUNT>13389</DIRCOUNT> <FILECOUNT>59557</FILECOUNT> <TOTALBYTES>10124038438</TOTALBYTES> <CREATIONTIME> <HIGHPART>0x01CA0446</HIGHPART> <LOWPART>0x8E44DCAF</LOWPART> </CREATIONTIME> <LASTMODIFICATIONTIME> <HIGHPART>0x01CA045D</HIGHPART> <LOWPART>0xB28D4996</LOWPART> </LASTMODIFICATIONTIME> <WINDOWS> <ARCH>9</ARCH> <PRODUCTNAME>Microsoft Windows Operating System</PRODUCTNAME> <EDITIONID>ServerStandard</EDITIONID> <INSTALLATIONTYPE>Server</INSTALLATIONTYPE> <HAL>acpiapic</HAL> <PRODUCTTYPE>ServerNT</PRODUCTTYPE> <PRODUCTSUITE>Terminal Server</PRODUCTSUITE> <LANGUAGES> <LANGUAGE>en-US</LANGUAGE> <DEFAULT>en-US</DEFAULT> </LANGUAGES> <VERSION> <MAJOR>6</MAJOR> <MINOR>1</MINOR> <BUILD>7600</BUILD> <SPBUILD>16385</SPBUILD> <SPLEVEL>0</SPLEVEL> </VERSION> <SYSTEMROOT>WINDOWS</SYSTEMROOT> </WINDOWS> <NAME>Windows Server 2008 R2 SERVERSTANDARD</NAME> <DESCRIPTION>Windows Server 2008 R2 SERVERSTANDARD</DESCRIPTION> <FLAGS>ServerStandard</FLAGS> <HARDLINKBYTES>3549519997</HARDLINKBYTES> <DISPLAYNAME>Windows Server 2008 R2 Standard (Full Installation)</DISPLAYNAE> <DISPLAYDESCRIPTION>This option installs the complete installation of Windos Server. This installation includes the entire user interface, and it supports all of the server roles.</DISPLAYDESCRIPTION> </IMAGE> .... </WIM>
其实只需要注意里面的index和它的版本了,我这个是index 3是企业版。所以我就用3了:
imagex.exe /apply H:/sources/install.wim 3 I:/ ImageX Tool for Windows Copyright (C) Microsoft Corp. All rights reserved. Version: 6.1.7600.16385 [ 100% ] Applying progress Successfully applied image. Total elapsed time: 9 min 40 sec
注意:首先,要执行这个命令需要有管理员权限,此外,这里的3是指install.wim里面index为3的系统,而I:/为我把之前新建的vhd镜像挂载到了I:盘符
当然,看到这里你知道了吧,有兴趣的话你也可以直接用这个工具来把install.wim释放到你的硬盘以实现装系统了。很简单吧,找个pe启动进去即可。
好,灌完之后只需要用bcdedit工具设置一下启动即可。
c:/>bcdedit /copy {current} /d "Windows Server 2008 R2" The entry was successfully copied to {9997a1d8-6f32-11de-bb28-c70c97b2d429}. c:/>bcdedit /set {9997a1d8-6f32-11de-bb28-c70c97b2d429} device vhd=[e:]/vhdwindow.vhd The operation completed successfully. c:/>bcdedit /set {9997a1d8-6f32-11de-bb28-c70c97b2d429} osdevice vhd=[e:]/vhdwindow.vhd The operation completed successfully. c:/>bcdedit /set {9997a1d8-6f32-11de-bb28-c70c97b2d429} detecthal on The operation completed successfully. c:/>bcdedit Windows Boot Manager -------------------- identifier {bootmgr} device partition=C: description Windows Boot Manager locale en-US inherit {globalsettings} default {current} resumeobject {9997a1d4-6f32-11de-bb28-c70c97b2d429} displayorder {current} {9997a1d8-6f32-11de-bb28-c70c97b2d429} toolsdisplayorder {memdiag} timeout 30 Windows Boot Loader ------------------- identifier {current} device partition=C: path /Windows/system32/winload.exe description Windows 7 locale en-US inherit {bootloadersettings} recoverysequence {9997a1d6-6f32-11de-bb28-c70c97b2d429} recoveryenabled Yes osdevice partition=C: systemroot /Windows resumeobject {9997a1d4-6f32-11de-bb28-c70c97b2d429} nx OptIn Windows Boot Loader ------------------- identifier {9997a1d8-6f32-11de-bb28-c70c97b2d429} device vhd=[E:]/vhdwindow.vhd path /Windows/system32/winload.exe description Windows Server 2008 R2 locale en-US inherit {bootloadersettings} recoverysequence {9997a1d6-6f32-11de-bb28-c70c97b2d429} recoveryenabled Yes osdevice vhd=[E:]vhdwindow.vhd systemroot /Windows resumeobject {9997a1d4-6f32-11de-bb28-c70c97b2d429} nx OptIn detecthal Yes c:/>
注意这些设置里面的vhd=[e:]/vhdwindow.vhd没有错,盘符必须用[]框起来
ok,一切完工。重启一下就能看到效果了。