让Win7, Win8, WinX和谐共存,通过虚拟磁盘VHD引导物理机的操作系统
作者:Debuger 发布时间:October 24, 2017 分类:文章分享
原文地址:https://forum.51nb.com/forum.php?mod=viewthread&tid=1258933&extra=page%3D1&page=1
Q: 首先什么叫做“虚拟磁盘VHD引导笔记本操作系统”?
A: 首先这不是什么新东东,这个技术已经出来有年头了,官方的名字叫做“本机引导的虚拟硬盘”或者“Virtual Hard Disks with Native Boot”又或简称“VHD Boot”。
我用的那个土名字是我为了避免歧义自己瞎启的。首先你的那些个Win7, Win8, Win9, ..., Win2012都分别安装在不同的虚拟磁盘中(*.VHD),其次我们要引导的不是虚拟机,而是物理计算机,比如Thinkpad本子,而不是本子之上的某个虚拟机。这是有本质的不同的,前者启动后和传统方式安装的操作系统一模一样,能使用所有硬件资源,只是多出了一块虚拟磁盘;而后者启动后只能使用Hypervisor映射或者模拟出来的硬件资源。
Q: 其次为什么要脱裤子放屁通过虚拟磁盘引导物理机呢?
A:
多系统引导。可以让多个不同的Windows操作系统共存在一台电脑上(Windows 7和Windows Server 2008 R2以后的为佳),数量上没有限制,仅仅受限于磁盘容量。
更容易备份。如果你在电脑上有两个或者更多的系统,想要备份某个系统,就只要引导到另一个系统中,将想要备份的系统的VHD文件复制一份就可以了。还原的方法也类似,替换相应的VHD文件就完成了还原。速度快还容易操作。
用于开发、测试环境。对于快速部署可重复使用的开发和测试环境的场景最为合适。一方面可以同时拥有多套开发测试环境,另一方面可以使用计算机全部的硬件资源和性能。如果需要同时运行多套环境,我们依然可以在VHD引导的系统中部署虚拟机。就像上面说的,其实VHD引导同普通方式引导起来的系统几乎没有任何区别。
事实上现在我所有的电脑都只采用VHD Boot这一种方式装机了。
Q: 性能上会不会打折扣呢?
A: 几乎没有。仅仅是磁盘部分由于使用了虚拟磁盘,特别是为了节约磁盘空间,通常我们会使用动态虚拟磁盘,所以操作系统所在的磁盘写的性能方面会有损失。但如果使用固定大小磁盘而不是动态扩展的磁盘,这部分的性能损失仅仅几个百分点。不过这样的话就比较浪费空间,个人电脑上,特别是笔记本上空间可能更重要。而且操作系统所在的磁盘往往是磁盘性能需求比较低的逻辑分区。而且使用VHD BOOT的系统会自动将虚拟内存防治在物理磁盘上,如果你还有担心,我们也可以配置将所有的临时目录和临时文件放置在物理磁盘上。这样对于操作系统所在的磁盘写操作就非常少了。至于其他的硬件资源,比如CPU、内存、显卡那完全就是和普通安装的系统完全一样。
---------------------------华丽丽的分隔符----------------------------
说了这么多,那究竟如何使用VHD Boot呢?
方法很简单,首先确保你的系统中有一个300多MB(Win8)或者一个100多MB(Win7)的隐藏分区。如果没有就需要通过BCDBOOT命令创建(可以参考微软官方的文章 http://technet.microsoft.com/zh-cn/library/dd799299(v=ws.10).aspx)
然后第一步是创建一个空的VHD,详细步骤是以管理员身份打开一个命令窗孔,输入如下的命令:
diskpart
create vdisk file=d:\vhdboot\X220TWIN8CN.vhd maximum=40960 type=expandable
sel vdisk file=d:\vhdboot\X220TWIN8CN.vhd
attach vdisk
create partition primary
format fs=ntfs quick label=X220TWIN8CN
assign letter=z
exit
第二步是将你要安装的操作系统释放到上面的虚拟磁盘中(如果你没有imagex工具,可以从附件中下载一个),具体步骤是
载入安装光盘(用真的光盘或者现在Windows都支持直接加载ISO文件),假定光驱或者虚拟光驱的盘符是F:,在上面打开的命令行窗口中,进入imagex所在的目录,执行命令:
imagex /info f:\sources\install.wim
现在的光盘通常有多种不同版本的操作系统集成在一起,这条命令可以让你从输出的挑选想要的版本,假定专业版的编号(Index)是4,则继续输入
imagex /apply f:\sources\install.wim 4 z:
这样专业班的Windows8就被释放到了虚拟磁盘z:
第三步是编辑引导信息,还是在上面的命令窗口中输入下面的命令
bcdedit /copy {current} /d "VHD: Windows 8 CN"
此时会生成一串GUID,如{89739f53-cad1-11e1-8888-99c050f02378},复制下来替换掉下面我的那串GUID
bcdedit /set {89739f53-cad1-11e1-8888-99c050f02378} device vhd=[D:]\VHDBOOT\X220TWIN8CN.vhd
bcdedit /set {89739f53-cad1-11e1-8888-99c050f02378} osdevice vhd=[D:]\VHDBOOT\X220TWIN8CN.vhd
bcdedit /set {89739f53-cad1-11e1-8888-99c050f02378} detecthal on
bcdedit /set {89739f53-cad1-11e1-8888-99c050f02378} hypervisorlaunchtype auto
第四步是打开我的电脑的高级属性,将优先启动的选为刚刚创建的"VHD: Windows 8 CN",重新启动,跟着向导完成安装即可。
最后一步,不是必须的,如果你希望节省磁盘空间,可以启动后可以修改下面的注册表值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FsDepends\Parameters
VirtualDiskExpandOnMount=4
详细信息,参考 http://technet.microsoft.com/zh-cn/library/gg318055(v=WS.10).aspx
这样虽然我们创建了40GB的虚拟磁盘,但如果其中内容只有15GB,那么他启动后也只占15GB空间