HOWTO:从移动存储上启动和运行完整版的 Windows Server 2008 R2
还记得这篇日志吗 —《从UFD启动和运行Hyper-V Server 2008 R2》!?要从 UFD(USB Flash Disk 闪存盘)或移动硬盘上启动和运行 Hyper-V Server 2008 R2 是非常简单的,这是因为微软在 Hyper-V Server 2008 R2 中添加了对移动存储启动的支持。只需要参考日志中的操作流程,就可以看到成果了!在文中,gOxiA 提到只需要修改注册表中的相关项便能够在移动存储上运行完整版的 Windows Server 2008 R2,相信这才是大家更感兴趣的体验!
gOxiA 先后入手了一个PNY 8G 的 UFD和一个双接口的移动硬盘盒,目前打算在这个拥有320G存储容量的双接口(eSATA+USB)硬盘盒中独立运行一个 Windows Server 2008 R2,主要用于 Hyper-V 相关的虚拟机应用,其中虚拟机也将存储在这个移动存储中。这样一来,gOxiA 就能够节省出来笔记本本身的资源,降低本机硬盘的损耗。
实际的实施过程比较顺利,但是结果并不乐观。gOxiA 修改了 PollBootPartitionTimeout 为 30000(十进制,十六进制是0x00007530)后,在启动系统时还是出现了蓝屏 0x0000007b,看来只修改 PollBootPartitionTimeout 并不能完全解决问题。前面讲过 Hyper-V Server 2008 R2 能够直接从 UFD或大容量移动存储上启动和运行主要还是因为微软添加了对此的支持,通过对相关驱动文件内容的比较发现 Hyper-V Server 2008 R2 和 Windows Server 2008 R2 并无实质差异,不足以影响到启动失败,那么问题应该还是出在注册表设置上,查阅了一些资料发现了一个关键的注册表键 – BootDriverFlags,在 MSDN Library 中找到了合理的解释。 BootDriveFlags:On initial validation, Image Configuration Editor displays the following message in the Validation tab: Package "Bootable Windows USB Stack" would like Setting "BootDriverFlags" in Component "Kernel-PnP" set to the value "4".
找到了关键问题所在,一切都迎刃而解!非常顺利的,gOxiA 在自己的320G移动硬盘上启动并成功运行了 Windows Server 2008。下面就将详细的操作步骤与大家分享!
在开始前,请准备好自己的环境(PS:gOxiA 的实际环境是一台装有 Windows 7 Ultimate 的 Thinkpad x60,一块320G的移动硬盘分了两个区,引导分区40G(盘符 S:),NTFS格式、活动分区。一套 Windows Server 2008 R2 英文版。本机内已经预先安装了 WOPK,为了方便经常使用, imagex 工具单独拷贝到了 Windows 目录下。VHD 挂载到系统中分配的盘符是 V:):
提示:Reg.exe 命令行的使用很简单,这里就不再介绍,大家可以运行 reg /? 来获取相关的信息。下图中 reg 命令行中 /f 表示强行覆盖,不再提示。所以,使用时要尤为注意。
大功告成,现在就可以重新启动计算机从移动存储上引导和运行 Windows Server 2008 R2 了,由于后续过程中会多次重新启动,如果计算机 BIOS 未设置先由 USB 设备引导,就必须在每次重新启动后,人工方式来调用 BIOS 的设备引导选项,选择从 USB 设备引导。此外请注意,如果你同 gOxiA 一样要在 Windows Server 2008 R2 上运行 Hyper-V Roles,请务必使用 bcdedit 将 hypervisorlaunchtype 参数设置为 auto;如果还要运行在其他计算机上,还要将 detecthal 设置为 on。
之前,gOxiA 介绍过已经在移动存储上创建了两个系统,所以在本例中 gOxiA 还需要为现在这个 Windows Server 2008 R2 Enterprise 再创建一个引导信息。为此,执行了如下图所示的命令行,最终完成了整个操作过程。
下面是 gOxiA 的移动硬盘上的引导信息,供大家参考:
Windows 启动管理器
--------------------
标识符 {bootmgr}
device partition=S:
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
resumeobject {f42031ce-8f5f-11df-a522-0016cff894cf}
displayorder {default}
{f320cdfd-8faf-11df-a49a-0016cff894cf}
{3ff017e1-8fc7-11df-9ce0-0016cff894cf}
toolsdisplayorder {memdiag}
timeout 30
Windows 启动加载器
-------------------
标识符 {default}
device vhd=[S:]Hyper-V Server R2.vhd
path Windowssystem32winload.exe
description Microsoft Hyper-V Server 2008 R2
locale en-US
inherit {bootloadersettings}
osdevice vhd=[S:]Hyper-V Server R2.vhd
systemroot Windows
resumeobject {f42031ce-8f5f-11df-a522-0016cff894cf}
nx OptOut
hypervisorlaunchtype Auto
Windows 启动加载器
-------------------
标识符 {f320cdfd-8faf-11df-a49a-0016cff894cf}
device vhd=[S:]win08r2std.vhd
path Windowssystem32winload.exe
description Windows Server 2008 R2 Standard
locale en-US
inherit {bootloadersettings}
recoverysequence {406f48fd-903b-11df-80cb-0019d244ddeb}
recoveryenabled Yes
osdevice vhd=[S:]win08r2std.vhd
systemroot Windows
resumeobject {f42031ce-8f5f-11df-a522-0016cff894cf}
nx OptOut
hypervisorlaunchtype Auto
nocrashautoreboot Yes
sos Yes
Windows 启动加载器
-------------------
标识符 {3ff017e1-8fc7-11df-9ce0-0016cff894cf}
device vhd=[S:]win08r2ent.vhd
path Windowssystem32winload.exe
description Windows Server 2008 R2 Enterprise
locale en-US
inherit {bootloadersettings}
osdevice vhd=[S:]win08r2ent.vhd
systemroot Windows
resumeobject {f42031ce-8f5f-11df-a522-0016cff894cf}
nx OptOut
hypervisorlaunchtype Auto
detecthal Yes
注意观察,在 Windows Server 2008 R2 Standard 引导信息中,gOxiA 启用了 nocrashautoboot 和 sos 参数,前面的参数表示遇到蓝屏不重新启动,后面的参数表示引导过程中显示详细的启动信息。这样有助于我们进行排错!
本文至此告一段落,发表一下 gOxiA 的感慨!Windows 发展至今,给予我们太多的惊喜,而这些惊喜不仅仅只体现在客观层面上!Windows 十分强大,也将越来越强大!微软所做的努力将会证明,我们的选择是正确的!
最后,友情提示:运行在移动存储上的 Windows Server 2008 如果要运行在其他计算机上,建议不要安装驱动程序,而使用内置的驱动,因为一旦运行于其他计算机便会重新识别硬件。此外,在其他计算机上运行之后会修改当前系统的引导信息,所以请关注引导信息中 device 和 osdevice 参数设置。