本站域名:http://goxia.maytide.net or http://sufan.maytide.net
移动设备请访问:http://goxia.maytide.net/m
转载文章,请务必保留出处与作者信息,未经许可严禁用于商业用途!
[WS08R2]HOWTO:从移动存储上启动和运行完整版的 Windows Server 2008 R2
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。下面就将详细的操作步骤与大家分享!
[Hyper-V]从UFD启动和运行Hyper-V Server 2008 R2
以下内容节选自我刚撰写的一篇文章,当然其中主要的操作步骤参考了TechNet Librarys,所以分享出来并无大碍!这篇日志旨在希望能以更小化的改变当前服务器的环境,来评估或实施Hyper-V。所以我们可以选择免费的Hyper-V Server 2008 R2,并使其从 USB Flash Drive(俗称:U盘)启动运行。
要实现这一目标,制作好一个承载Hyper-V Server 2008 R2运行的U盘,我们需要事先准备一个支持USB2.0规范的U盘,建议16G容量,和一份Hyper-V Server 2008 R2的安装源文件(install.wim),并在当前工作环境下安装WAIK。注意当前工作环境强烈推荐Windows 7或Windows Server 2008 R2。而目标服务器必须满足CPU支持64位(x64) 、U盘引导(Boot from USB)、硬件虚拟化(Hardware-assisted Virtualization)以及硬件数据执行保护(Hardware-enforced Data Execution Prevention)。
第一步,创建一个VHD。利用diskpart命令创建一个用于存储Hyper-V Server 2008 R2的VHD文件,容量为12G,采用固定磁盘类型,并创建一个主分区,使用NTFS格式,并将其挂载到当前系统中分配盘符为R,卷标为HyperV。为此,在当前系统中的CMD环境下执行如下命令行:
mkdir c:\hvvhd
diskpart
create vdisk file=c:\hvvhd\hyperv.vhd maximum=12000 type=fixed
sel vdisk file=c:\hvvhd\hyperv.vhd
attach vdisk
create partition primary
assign letter=r
format quick fs=ntfs quick label=HyperV
exit
第二步,利用WAIK提供的imagex.ex命令将Hyper-V Server 2008 R2安装源(Install.wim)中的映像释放到分区R中,完成后将hyperv.vhd从当前系统中卸载。为此,执行如下命令:
imagex /apply <path-to-wim> 1 r:
diskpart
sel vdisk file=c:\hvvhd\hyperv.vhd
detach vdisk
exit
第三步,准备U盘(UFD),还是通过diskpart命令对U盘进行分区格式化,此外还要将该分区标注为活动分区。命令如下:
diskpart
sel disk <UFD-Disk-Number>
clean
create partition primary
active
format fs=ntfs quick
assign letter=z
exit
第四步,将之前制作好的hyperv.vhd拷贝到U盘上,如果当前工作环境不是Windows 7或Windows Server 2008 R2,则还需要使用WAIK中提供的bootsect命令为U盘标注为可引导。命令行如下:
copy c:\hvvhd\hyperv.vhd z:
bootsect /nt60 z: /force /mbr
第五步,使用bcdboot命令在U盘上为hyperv.vhd中的系统创建引导数据。为此,执行下面的命令行:
diskpart
sel vdisk file=z:\hyperv.vhd
attach vdisk
exit
bcdboot r:\windows /s z:
第六步,上面的5个步骤执行完毕后,这个U盘上的Hyper-V Server 2008 R2 还无法通过U盘引导启动运行,因为VHD Native Boot虽然能够实现从VHD中启动运行操作系统,但是该系统的磁盘缓存文件仍存储在实际磁盘上,而且因为U盘自身的原因,频繁地在U盘上读写数据势必会影响其整体的性能和稳定性,所以我们还需要通过修改注册表禁用这个系统上的磁盘缓存文件。为此,执行下面的命令行:
reg load HKLM/hyperVTemp r:\windows\system32\config\system
reg add “HKLM\HyperVTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
reg delete “HKLM\HyperVTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
reg unload HKLM\HyperVTemp
第七步,从当前卸载Z盘上的VHD文件,完成整个操作。
diskpart
sel vdisk file=z:\hyperv.vhd
detach vdisk
exit
最后,我们便可以将该U盘插到硬件满足Hyper-V 需求的服务器上,从U盘引导运行这个Hyper-V Server 2008 R2。
通过上面的例子,我们可以深入认识和理解微软在虚拟化方面所作出的努力。利用U盘运行的方式,我们只需要修改注册表中“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\PollBootPartitionTimeout”的键值为“30000”,便能够在更大的移动存储设备,如:移动硬盘上面引导运行Windows Server 2008 R2的完整版。目前据我所知有不少ITPro通过eSATA外接移动硬盘在自己的笔记本上运行Windows Server 2008 R2 Hyper-V 来实现相关产品和技术的学习或评估工作。