过年期间无事,偶尔看到文章谈起,在计算机已经安装Windows 7操作系统,使用VHD文件双引导到Windows 2008 R2的文章。遂琢磨了一下,既然可以实现VHD文件引导操作系统,可不可实现在计算机上不安装操作系统,windows7 和windows 2008 R2全部都由VHD文件引导呢?
于是开始捅咕,经过一整天的折磨,实现了这个想法。目前我的笔记本和家里的台式机都使用此方法安装系统。
双系统启动的好处大家都很清楚,不在此多说。
全部系统都使用VHD引导的好处我觉得有以下几个:
1、 计算机磁盘可以只划分成一个分区,不用以后为了系统分区太小而调整分区空间,避免在调整分区空间过程中出现数据丢失的风险。
2、 不用为了实现多操作系统启动而费尽心机的考虑如何划分磁盘分区。
3、 系统备份变得异常简单,只需在安装配置完操作系统,安装所有软件之后,将VHD文件复制下来就可以了,如果系统需要重装,只要将保存的VHD文件复制到原来的位置就OK。
还有其他好处,想到的同学请补充。
有人要问,是用VHD方法引导计算机对性能会不会影响很大?答案是:微乎其微。
请参考下图,及网址。
http://blogs.technet.com/fyu/archive/2009/01/19/vhd.aspx
计算机不安装操作系统,使用VHD文件双引导Windows 7旗舰版及Window 2008 R2
有问题,可以发邮件或打电话给我。
必备工具:
1、 安装有windows7或Windows Server 2008 R2的计算机
2、 此计算机已经安装Windows Automated Installation Kit (AIK) for Windows® 7(下载地址
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34)
3、 此计算机已安装虚拟光驱软件(如DAEMON Tools)
4、 次计算机安装(强力推荐)Acronis Disk Director Suite 10磁盘分区管理软件
5、 Windows 7及windows 2008 R2的ISO文件
6、 一张刻录好的Windows7安装光盘
7、 WIM2VHD.vbs脚本
步骤:
一、使用WIM2VHD.vbs脚本创建 WIN7.VHD及WIN2K8R2.VHD文件。
1、 获得WIN2VHD.vbs脚本。并将脚本保存在d:\
下载地址:
http://code.msdn.microsoft.com/wim2vhd/Release/ProjectReleases.aspx?ReleaseId=2603
脚本使用说明:
http://code.msdn.microsoft.com/wim2vhd
2、 将Windows 7安装盘的ISO文件使用虚拟光驱软件加载到虚拟光驱,如:H盘
3、 点击开始菜单内的运行,输入cmd,点击确定。打开DOS窗口输入
CSCRIPT D:\WIM2VHD.WSF /WIM:H:\sources\install.wim /SKU:4 /VHD:D:\System\WIN7.VHD
H:为虚拟光驱盘符,D:\System为VHD文件保存位置
/SKU:4指定的是旗舰版,1、2、3分别为家庭普通版、家庭高级版、专业版。因为只有旗舰版和企业版支持VHD启动,所有我们指定为4。
同样方法创建WIN2K8R2.VHD文件,是企业版。
CSCRIPT D:\WIM2VHD.WSF /WIM:H:\sources\install.wim /SKU:3 /VHD:D:\System\WIN2K8R2.VHD
二、获得windows7(或Windows2008R2)启动分区的boot目录及bootmgr、grldr文件,并存入某磁盘根目录下,如 D:\
右键点击“我的电脑”,点击“管理”,打开“计算机管理”,“磁盘管理”,给System Recovery隐藏分区分配一个驱动器号,如I
打开I盘,让系统显示隐藏文件和系统文件,复制boot目录及bootmgr、grldr文件到D:\,复制过程中会报错“BCD文件正在使用”不能复制,跳过此文件。
复制完成后打开dos窗口,输入命令: bcdedit /export d:\boot\bcd
如果没有System Recovery隐藏分区,则打开C:盘执行复制和命令
三、使用磁盘分区软件,将计算机磁盘分区合并成一个主分区NTFS格式、并将此分区设置为活动分区。
此步骤使用Acronis Disk Director Suite 10实现分区的合并,涉及到一个问题,计算机已经安装操作系统,而这个磁盘管理软件是安装在这个系统下,如何删除这个分区呢?
可以办到,因为合并分区删除分区等操作需要系统重新引导,引导后由Acronis Disk Director Suite 接管引导计算机,并实现分区的删除和合并。这时不用引导到windows7中,所以可以删除操作系统所在分区。
四、使用Windows7安装光盘引导计算机,编辑BCD文件。
此时计算机硬盘已经被划分为一个活动主分区,没有操作系统。
使用刻录好的windows7安装光盘引导计算机到如下画面,按Shift+F10,出现Dos窗口
输入如下命令
Bcdedit 回车,返回结果“类似”如下,红色部分可能不是{current}而是类似{915d67b4-00d7-11df-bc48-e19d0d96ad84}这样的一串字符,或者{default},没关系,继续。
Windows 启动管理器
--------------------
标识符 {bootmgr}
device partition=D:
description Windows Boot Manager
locale zh-CN
inherit {globalsettings}
default {current}
resumeobject {915d67b4-00d7-11df-bc48-e19d0d96ad84}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows 启动加载器
-------------------
标识符 {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale zh-CN
inherit {bootloadersettings}
recoverysequence {4a3b0fe8-1ef8-11df-98cc-0024e891ab27}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {271b2423-1e54-11df-8690-806e6f6e6963}
nx OptIn
hypervisorlaunchtype Auto
(一)将WIN7.vhd文件添加到启动菜单
执行第一个命令:
bcdedit /copy {current} /d "Windows 7 旗舰版" 如果在上面返回的结果不是{current}而是一串字符,则在此命令中用字符替换 {current},含{}
执行完后会返回“类似”如下结果
已将该项成功复制到 {9041d6af-250c-11df-8bff-005056c00008}。
{}内字符是随机生成的,复制下这串字符,含{}。
第二个命令
bcdedit /set <guid> device vhd=[D:]\System\WIN7.VHD
使用第一个命令返回并复制的那串字符替换此命令中的<guid>
第三个命令
bcdedit /set <guid> osdevice vhd=[D:]\System\WIN7.VHD
同样替换<guid>
第四个命令
C:\>bcdedit /set <guid> detecthal on
同样替换<guid>
(二)将WIN2K8R2.vhd文件添加到启动菜单
执行第一个命令:
bcdedit /copy {current} /d "Windows 2008 R2 企业版" 如果在上面返回的结果不是{current}而是一串字符,则在此命令中用字符替换 {current},含{}
执行完后会返回“类似”如下结果
已将该项成功复制到 {9041d6af-250c-11df-8bff-005056c00008}。
{}内字符是随机生成的,复制下这串字符,含{}。
第二个命令
bcdedit /set <guid> device vhd=[D:]\System\WIN2K8R2.VHD
使用第一个命令返回并复制的那串字符替换此命令中的<guid>
第三个命令
bcdedit /set <guid> osdevice vhd=[D:]\System\WIN2K8R2.VHD
同样替换<guid>
第四个命令
C:\>bcdedit /set <guid> detecthal on
同样替换<guid>
(三)删除{current}启动项
执行命令
C:\>bcdedit /delete <guid> /cleanup
使用{current}或者同位置的{guid}号,替换命令中的<guid>
(四)将WIN7.VHD启动项设置为默认启动项
bcdedit /default {guid}
此处的guid号应该使用第(一)步骤第一个命令返回的guid号
如果觉得默认等待30秒进入默认系统,可以使用下面命令修改时间值为5秒
bcdedit /timeout 5