Step by Step VHD with Native Boot
在 Windows 7 中包含了一项全新的并且是颠覆性的功能——Native Boot,它允许我们能够直接引导并运行存储在 VHD 文件中的操作系统。在 PDC 中国大会专门为此开了一个课程作了详细的介绍。当时测试者都普遍在使用着 Windows 7 M3 Build6801,虽然都够测试直接在 Windows 7 上创建并挂载 VHD,但是要想实现 VHD with Native Boot 确如水中捞月,gOxiA 发现当时 Build6801 中的 Diskpart 对 VHD 的操作支持还并不完善,此外 WAIK3Beta 也并未发布,所以阻碍了 gOxiA 当时的测试。现在 Windows 7 Beta1 的发布终于可以让 gOxiA 和大家过足瘾。
昨天 gOxiA 对 Native 作了详细的测试体验,虽然有一定的阻碍和困难,但都一一克服,不敢独享!特总结出经验心得与大家分享,希望大家也能体验一下 VHD with Native Boot。
首先,介绍一下测试中遇到的难点,我们知道简单顺利地完成测试,是我们大家所期望的。不过即使遇到困阻,只要你有耐心我想我们还是能通过这些困阻得到更多的收获!但是,gOxiA 还是希望大家能少走一些弯路。所以在测试 Native Boot 前我建议大家要做好准备工作。首先,要准备一份 Windows PE 3.0;其次,要准备好 Windows 7 Beta1 的安装盘,最好再将 Install.wim 文件拷贝到其他网络位置或启动移动存储上。进行测试的版本建议选择 Ultimate,否则就像 gOxiA 一样,为了省事在测试时使用了 HomeBasic 导致因授权而无法进入系统的问题,如下图所示。此外需要特别注意的一点,Windows PE 与 要部署的操作系统的架构需要相同,即要么都是 x86,否则就都是 x64。其他倒没什么需要注意的,gOxiA 本来以为直接通过 Windows 7 Beta1 的安装盘加上拷贝到其他位置的 Imagex.exe 就能够简单实现部署,不过从测试结果来看,通过 Windows 7 Beta1 安装盘引导后,按下 Shift+F10 调出的 CMD 环境是无法运行 Imagex.exe 的,之所以要将 Windows 7 Beta1 安装盘中的 Install.wim 拷贝到其他位置也是方便以后调用,不用反复的插入光盘或 Mount ISO。所以 Windows PE 和 Install.wim 都是必须的。
前面 gOxiA 已经总结了大致的注意细节,不知道大家是否已经能够理解,有了具体的测试思路。下面 gOxiA 将带着大家根据自己的测试环境 Step by Step VHD with Native Boot。首先介绍一下测试环境,一台 Hyper-V Roles 的 Windows Server 2008 x64,创建了一台用于测试 VHD with Native Boot 的虚拟机,分配了 80G 的磁盘以及 1G 的内存,并分配了 legacy network adapter(旧版网络适配器),这样分配的原因是在 Windows PE 环境中能够识别网卡并启用网络。准备好 Windows PE 3.0 的 ISO,并将 Windows 7 Beta1 的 Install.wim 拷贝到这台 Hyper-V Roles 的 Windows Server 2008 x64 下的一个共享目录中以供之后使用。所有准备工作就绪后,我们就可以开始测试 VHD with Native Boot!
为了保持过程的连续性,我还是先从 Windows PE 3.0 的制作开始,首先参考 Windows Automated Installation Kit for Windows 7 Beta 这篇文章,下载并安装 WAIK3Beta,之后进入 Deployment Tools Command Prompt 环境,执行下面的命令行制作 Windows PE 3.0 并生成 ISO。
1]
2]
3] 创建 wimscript.ini 保存到 winpe_x86iso 目录下,wimscript.ini 内容如下:
最后将生成的 Windows PE 3.0(以下简称 WinPE3) ISO 文件保存在 Hyper-V 服务器上,并挂载到 VHD with Native Boot 虚拟机中。
启动该虚拟机,通过 WinPE3 引导进入 WinPE3 环境,如果网内没有 DHCP 服务器则需要手工为其配置一个 IP,为此执行:
之后使用下面的命令行,将 Hyper-V 服务器的共享目录映射到本地使用盘符 Z。
接下来执行 Diskpart 为虚拟机准备分区卷,这里我们需要创建两个卷,S: 用于启动引导保存着引导所需的信息和文件,C: 用于存储 VHD 文件,之后再创建一个 VHD 文件并挂载到当前系统分配盘符 V:,以供存储 Windows 7 Beta1,为此我们需要执行下列命令行:
- diskpart
- sel disk 0
- create partition primary size=200
- format fs=ntfs quick
- assign letter=s
- active
- create partition primary
- format fs=ntfs quick
- assign letter=c
- create vdisk file=c:\vhd_win7.vhd maximum=20000
- sel vdisk file=c:\vhd_win7.vhd
- attach vdisk
- create partition primary
- format fs=ntfs quick
- assign letter=v
- exit
分区卷及 VHD 准备完后,我们就可以将 Windows 7 安装到这个 VHD 中,也就是将 Windows 7 的 Install.wim 中的 Ultimate 释放到 V:中。并使用 bcdboot 创建当前系统的引导信息。Ultimate 在 Install.wim 的索引号码为4,所以我们执行下面的命令行:
1]
2]
3]
完成释放之后,重新启动该虚拟机,会进入到另外一种与标准 Setup 不同的安装环境中,整个过程界面如下图所示,历时大概不到20分钟,真个过程不需要人工干预,所有与传统方式安装的配置步骤都会在首次进入系统时进行。gOxiA 认为这种方式来安装 Windows 7 或者 Windows Vista 不更方便,嘿嘿!
经过“漫长”的等待,进入首次启动,完成初始配置后,终于进入到了 Windows 7 Beta1 桌面!看看下面的截图,是不是很兴奋!虽然是从 VHD 中引导的系统,但是我们依旧可以在这套系统中对物理存储进行操作。大大的利用了资源!
至此,整个测试过程即宣告成功结束。我们也可以把这个系统通过执行通用类型的 Sysprep ,重新打包部署到其他现有的系统中,只需要使用 bcdedit 工具为现有的系统添加这个 VHD 引导信息即可,可以使用下面的命令行:
1]
2]
3]
4]
5]
6]
注意:第二步执行后会产生一个 GUID 值,请复制下来。之后的 {GUID} 即时之前复制下来的值。
最后我们来做一下总结,VHD with Native Boot 的整个过程还是比较繁琐的,不过网上好像有过一篇文章介绍如果直接使用传统安装方式直接把 Windows 7 Beta1 安装到 VHD 的办法。大家可以搜索一下测试。虽然繁琐但实际上并没有太令人费解的难点。由于 Windows 7 Beta1 核心对 VHD with Native Boot 的支持,所以并没有大家之前想象的配置会非常复杂,如果我们将命令行做成批处理方式,我想能省去不少打字的时间。这个测试 gOxiA 也证明了一些之前对 Native Boot 模糊的认识,从目前来说 VHD with Native Boot 只支持 Windows 7 和 Windows Server 2008 R2,所以如之前大家讨论希望通过 VHD 启动一个 XP 或 Vista 恐怕是不行了。生成的这个 VHD 文件必须是 Windows 7、Windows Server 2008 R2 或 Hyper-V 生成的 VHD。所以使用 Virtual PC 生成的 VHD 是不能使用的。虽然整体来看 VHD with Native Boot 的限制性不是太令人感到灵活,但是 gOxiA 认为起码从 Windows 7 时代开始,当我们要同时安装 Windows Server 2008 R2 进行测试的时候可是真的方便了许多。总之,如果你已经在使用 Windows 7 Beta1,那么 VHD with Native Boot 的部署过程要更加简单。具体的思路过程 gOxiA 会在以后与大家一同分享。请继续关注本 Blog:http://goxia.maytide.net