VHD Native Boot作为Windows 7和Windows Server 2008 R2新增重要功能之一,它支持系统直接从VHD启动。 

  1. 说明

  系统要求:Windows 7 Enterprise 或 Ultimate版,其它版本不支;Windows Server 2008 R2 除 Foundation Edition版本不支持外,其它版本都支持

  磁盘要求:系统必须有两个分区,System分区必须有Windows 7 Boot environment Files和BCD存储。如果VHD文件类型为动态扩展,必须确保磁盘有足够的磁盘空间。最多支持挂接 512 个VHD文件。

  另外,从VHD启动的系统,不支持系统休眠和Over SMB 共享;保存VHD文件的分区不支持Bit-locker加密,VHD文件的父分区不支持Volume Snaphot功能;VHD不能配置为动态磁盘,也不支持建立软件Raid。相比物理硬盘,VHD没有CACHE,所以在写数据时,VHD硬盘相比物理硬盘有些差异,但读性能基本上和物理硬盘相近。

  2. 必备工具

  (1) bcdboot - bcd 启动文件创建和修复工具。

  bcdboot.exe 命令行工具用于将关键启动文件复制到系统分区以及创建新的系统 BCD 存储。

  bcdboot <source> [/l <locale>] [/s <volume-letter>] [/v] [/m [{OS Loader ID}]]

  source——指定 windows 系统根目录的位置。

  /l    ——指定在初始化 BCD 存储时使用的可选区域设置参数。默认值为“简体中文”。

  /s   ——指定一个可选的卷号参数,该参数用于指定要将启动环境文件复制到的目标系统分区。默认值为固件标识的系统分区。

  /v   ——启用详细模式。

  /m   ——如果提供了操作系统加载器 GUID,则此选项可以将给定的加载器对象与系统模板合并起来,以产生可启动条目。否则,只合并全局对象。

  (2) Bcdedit

  Bcdedit.exe 命令行工具用于修改启动配置数据存储。启动配置数据存储包含启动配置参数并控制操作系统的启动方式。

  (3) diskpart

  磁盘分区管理工具。在本例中,它用来在命令行状态产生VHD文件,分区,格式化等

  (4) p_w_picpathx

  WIM映像管理工具,它包含在微软AIK工具包中。本例中,用它来释放安装映像Install.WIM文件到VHD文件。

  (5) Windows Deployment Services部署服务

  3. 部署

  用VHD启动计算机,有以下两种场景,一是将VHD部署在已有OS的计算机上,二是裸机的部署。两者的最大区别是对裸机,由于硬盘上没有OS,也就没有Windows 7的启动文件和MBR,所以必须首先产生一个系统分区,并使用Bcdboot将Windows 7启动文件写入这个分区;同时也必须产生一个主分区,用来存放VHD文件。对于在已有OS的计算机上部署,主要是要产生VHD文件,并将Windows 7或Windows 2008 R2映像释放到VHD硬盘,并使用BCDEDIT工具增加启动项目。

  由于VHD文件有动态,固定,差异这三种类型,为了保证性能,推荐使用固定尺寸大小的VHD文件。

  在已有OS的计算机上部署

  实验环境:使用Microsoft Virtual Server 2005 SP1产生一台虚拟机Windows 7并安装好WINDOWS 7 7600操作系统和AIK工具包,这台虚拟机有两块虚拟硬盘,一块c:,已安装好Windows 7;另一块e:,用来产生VHD文件;光驱为D:

  启动计算机,进行如下操作(注意以下操作均以管理员BILL.xu进行操作)

  (1) 以管理员身份进入命令提示符状态,运行DISKPART

  (2) 依次输入以下命令:

  Create vdisk file=e:\win2007.vhd maximum=10000 type=fixed(在e盘产生名为win2007.vhd,大小为10000MB,类型为固定尺寸的VHD硬盘),等待一段时间完成。

  Select vdisk file=e:\win2007.vhd(选择e:\win2007.vhd磁盘文件)

  Attach vdisk(连接到虚拟磁盘文件)

  Create Partition Primary(产生主分区)

  Assign Letter R(分配盘符为R)

  Format Quick Fs=ntfs(以NTFS文件系统快速格式磁盘),此时在我的电脑会多出一块盘符为R的硬盘。

  (3) 打开虚拟服务器管理网站,编辑虚拟机Windows 7设置,在光驱中加载windows 7安装光盘ISO文件。

  (4) 以管理员身份运行AIK工具包中的Deployment Tools Command Prompt,运行以下命令

  p_w_picpathx /info d:\sources\install.wim(显示安装映像文件的信息,主要是查找映像文件中各个版本的p_w_picpath index号)

  p_w_picpathx /apply d:\sources\install.wim 5 r:\(将安装映像中p_w_picpath index=5映像释放到r:盘,即释放到VHD文件上,p_w_picpath index=5这旗舰版),等待完成。

  (5) 回到第二步的窗口,输入以下命令

  detach vdisk(分离虚拟磁盘文件)

  exit(退出DISKPART命令)

  (6) 在命令提示符状态下,输入以下命令

  bcdedit /copy {current} /d "Starting From VHD"(编辑BCD数据库,将{current}复制为副本,注释为Starting From VHD。执行后会返回新项目的GUID)。在本操作中返回的GUID为 {91efbc47-7796-11de-8788-b469c8eae731}

  bcdedit /set {91efbc47-7796-11de-8788-b469c8eae731} device vhd=[e:]\win2007.vhd(编辑BCD数据库,修改guid为{91efbc47-7796-11de-8788-b469c8eae731}的device值修改为[e:]\win2007.vhd,注意[])

  bcdedit /set {91efbc47-7796-11de-8788-b469c8eae731} osdevice vhd=[e:]\win2007.vhd

  bcdedit /set {91efbc47-7796-11de-8788-b469c8eae731} detecthal on(允许启动时硬件抽像层检测)完成后,将e:\win2007.vhd备份到其它位置,备用。

  (7)重新启动计算机,选择“Starting From VHD”,出现安装界面,安装操作系统,完成。

  在裸机上的部署

  实验环境:使用Microsoft Virtual Server 2005 SP1产生一台虚拟机Win7VHD,一块硬盘c:,光驱为D:。

  (1) 打开虚拟服务器管理网站,编辑虚拟机Win7VHD设置,在光驱中加载WINPE的ISO文件。WINPE光盘的ISO文件可以在装好AIK的文件夹下找到。

  (2) 用WINPE光盘启动计算机,选择命令提示符

  (3) 依次输入以下命令

  create partition primary size=200

  format quick fs=ntfs

  assign letter=s

  active

  产生个尺寸大小为200M的文件,以NTFS格式化,并指定盘符为S,激活这个分区

  create partition primary

  format quick fs=ntfs

  assign letter=c

  exit

  将其它的空间产生一个主分区,以NTFS格式化这个分区,分配盘符为C。

  (4) 将我们上例中第6步产生的备份的文件复制到c盘

  (5) 在命令提示符状态使用Diskpart,连接虚拟磁盘文件win2007.vhd

  Diskpart

  select vdisk file=c:\win2007.vhd

  attach vdisk

  exit

  (6) cd f:\windows\system32  (F:为虚拟磁盘文件加载后产生的盘符)

  bcdboot f:\windows /s s: 将系统文件复制到系统盘(即前面产生200M的系统分区)

  (7) 以硬盘启动计算机,完成安装。