How to boot native VHD for Windows Server 2012 R2 preview o

    好多年前,应景写过如何制造一个包含Windows 8或者Windows Server 2012的VHD,并且在Windows 7或者Windows 8环境中直接启动到VHD中的系统。

    换了一家公司后,一直忙于学习新的系统,但仍然关注Windows的进展。时间总是过得很快,感觉还是不久以前给全国的合作伙伴讲Windows Server 2012,香港虚拟主机,转眼间Windows 8.1 Preview / Windows Server 2012 R2 Preview 就已经出来了。Windows 8.1也就罢了,Windows Server 2012 R2 还是有不少新特性可以看看的,以后有机会可以另起一贴介绍。

    言归正传,介绍一下如何创造一个可以直接启动的Windows 8.1 / Windows Server 2012 R2的VHD。

    之前用的是WIM2VHD.wsf,这是一个把WIM文件转化为VHD文件的脚本,我在几年前介绍过如何完成这一工作,美国空间,香港虚拟主机,有兴趣可以搜索我之前的Blog。

    但是问题在于,这个脚本当年是为Windows 7 / Windows Server 2008写的,而正如我几年前写的,Windows 8 的 Boot Manager重写了,所以使用这个脚本做出来的VHD是无法启动的,必须手动传送一个启动环境给VHD上的系统。具体作法请搜我之前写的内容中bcdboot命令行。

    为了解决这一问题,我之前写了一个脚本程序,用于自动挂载VHD磁盘,自动完成传送工作。好消息是,现在这个脚本更新了,变成了一个PowerShell脚本,叫做Convert-WindowsImage.ps1,有关的信息可以在这里查到:

    具体作法我就不废话了,站点上都写得很明白。我想介绍的是在我的 UEFI 启动环境中,出现的问题和解决的办法。

    第一个问题,也许你会发现这个PowerShell 脚本无法运行。这需要修改PowerShell的运行策略,可以参考图中命令行。此外,由于这个脚本是从网站上下载过来的,NTFS会记录其文件属性,因此运行时会给出安全提示。

    第二个问题,你会发现运行脚本时,在修改bootmgr的时候,提示找不到BCD Store。(ERROR : Could not get the BootMgr object from the Virtual Disks BCDStore.)这个问题是由于UEFI启动环境的目录与传统BIOS方式的不一样,不是boot,而是efi\microsoft\boot,所以脚本会找不到bcd文件,即bcd store。原本想改写一下这位兄弟的PowerShell脚本,但一直真的忙死了,还是在他页面上留几句话算了。

    第三个问题,我使用了EasyBCD来添加启动项,但是发现选择启动项无法启动到VHD的操作系统。这是由于使用了UEFI系统,而默认添加的启动项所使用的加载路径是\Windows\System32\winload.exe,需要把它改成\Windows\System32\winload.efi。

    使用支持UEFI的Windows 8启动环境的好处是,看上去漂亮多了。

    你可以看到更多的启动选项,他们是由硬件 UEFI 提供的启动选项。在这里,我又遇到两个问题。

    第一个问题,我点击了EastBCD的Save。实际上,你不点击这个按键,添加的记录也会在。点击了以后,漂亮的UEFI的选项界面不见了,回到了Windows 7以前的字符界面。把美丽的UI还给我!尝试了很久,从重新传送启动文件,到替换bootmgr,都没有用。最后发现,你可以关掉displaybootmenu,终于,美丽的UI又出现在我眼前。要是有个办法可以让妹纸也重新出现在我眼前多好啊!

    第二个问题,新加的启动项一般在最后。以前的字符界面还好,内容不多。可是现在图形的启动选项有10几个,你确定每次都有耐心翻到最后?一个字,改!分析了一下,其实也很容易,重新填写displayorder参数就可以了。标记,粘贴到写字板,按照启动项对应的标识符,调整顺序,再贴回命令行,搞定。

Windows 启动加载器——————-标识符                  {40a7c004-f7af-11e2-b9f8-dd44c2d22392}device                  vhd=[D:]\e00e1972-d07b-4e8f-b17b-e7e716022811.vhdxpath                    \Windows\system32\winload.exedescription             Windows Server 2012 R2 Previewlocale                  en-USosdevice                vhd=[D:]\e00e1972-d07b-4e8f-b17b-e7e716022811.vhdxsystemroot              \Windowsdetecthal               Yes

C:\Windows\system32>bcdedit /set {40a7c004-f7af-11e2-b9f8-dd44c2d22392} path \Windows\system32\winload.efi操作成功完成。

C:\Windows\system32>bcdedit /set {bootmgr} displayorder {current} {40a7c003-f7af-11e2-b9f8-dd44c2d22392} {40a7c004-f7af-11e2-b9f8-dd44c2d22392} {9f012074-9b60-11e2-86c8-f078a4898bea} {9f012075-9b60-11e2-86c8-f078a4898bea} {9f012076-9b60-11e2-86c8-f078a4898bea} {9f012077-9b60-11e2-86c8-f078a4898bea} {9f012088-9b60-11e2-86c8-f078a4898bea} {9f012085-9b60-11e2-86c8-f078a4898bea} {9f012089-9b60-11e2-86c8-f078a4898bea} {9f012083-9b60-11e2-86c8-f078a4898bea} {9f01208c-9b60-11e2-86c8-f078a4898bea} {9f012086-9b60-11e2-86c8-f078a4898bea} {9f012087-9b60-11e2-86c8-f078a4898bea} {9f01208b-9b60-11e2-86c8-f078a4898bea} {9f012084-9b60-11e2-86c8-f078a4898bea} {9f01208a-9b60-11e2-86c8-f078a4898bea} {9f01207b-9b60-11e2-86c8-f078a4898bea} {9f01207c-9b60-11e2-86c8-f078a4898bea}

    最后,放一下我的BCD的最终版……

C:\Windows\system32>bcdedit 但一定要背上几本书,在花海里,草丛旁悠然品味,

How to boot native VHD for Windows Server 2012 R2 preview o

相关文章:

你感兴趣的文章:

标签云: