Windows XP 與Win7 VHD雙啟動(dòng)
一、目的:在裝有Windows XP的硬盤上部署Windows 7 VHD鏡像,修改啟動(dòng)信息,最終實(shí)現(xiàn) Windows XP與Windows 7雙系統(tǒng)啟動(dòng)。這樣做的好處顯而易見,無(wú)需安裝系統(tǒng),適合于快速批量部署Win7,用于對(duì)Win7的測(cè)試和試用
二、環(huán)境
1、可啟動(dòng)的VHD文件。建議使用vpc在實(shí)際要部署win7的物理機(jī)上制作,并安裝好驅(qū)動(dòng)(VHD成功啟動(dòng)后,在Win7 VHD下安裝驅(qū)動(dòng))。將制作好的vhd文件Win7.vhd放到物理機(jī)的D盤,C盤為Windows XP系統(tǒng)。
2、將win7安裝盤中的boot文件夾、sources下的boot.wim、bootmgr拷貝到文件服務(wù)器上,并共享
使用命令拷貝
xcopy k:\boot\*.* e:\share\boot /s /r
copy k:\bootmgr e:\ share\
Copy k:\sources\boot.wim e:\sources
K為Win7安裝光盤的盤符 E為文件共享服務(wù)器的盤符
3、將BCD備份文件放到文件服務(wù)器上,共享。(如何制作,后面會(huì)講到)這個(gè)BCD備份數(shù)據(jù)是在已經(jīng)配置好雙啟動(dòng)的機(jī)器上備份出來(lái)的,當(dāng)配置下一個(gè)機(jī)器時(shí)可以直接從備份恢復(fù)BCD數(shù)據(jù),并加以修改。
三、原理
1、XP和win7的引導(dǎo)方式有著根本性的不同。
在XP時(shí)代系統(tǒng)通過NTLODER讀取boot.ini的數(shù)據(jù)進(jìn)行引導(dǎo),win7則使用bootmgr即啟動(dòng)管理器,去讀取BCD中的數(shù)據(jù),從而引導(dǎo)系統(tǒng)。BCD:Boot Configure Data 引導(dǎo)配置數(shù)據(jù),它的作用就是用于存放當(dāng)前機(jī)器上的操作系統(tǒng)信息,安裝了多少操作系統(tǒng),每個(gè)操作系統(tǒng)所在分區(qū)等等。它相當(dāng)于XP的boot.ini
2、單純修改xp下的boot.ini并不能引導(dǎo)win7.需要使用Bootmgr.exe來(lái)引導(dǎo)
3、引導(dǎo)win7的幾個(gè)必要文件需要放到當(dāng)前系統(tǒng)分區(qū),即XP的所在的系統(tǒng)分區(qū)C盤。
4、對(duì)于修改啟動(dòng)配置信息,可以使用系統(tǒng)安裝過程中的修復(fù)計(jì)算機(jī)工具中的系統(tǒng)恢復(fù)工具,或者使用bootrec.exe工具修復(fù)系統(tǒng)引導(dǎo)文件,再或者直接用bcdedit工具導(dǎo)入BCD備份數(shù)據(jù),并加以修改。以上三種方式均可以實(shí)現(xiàn)正確引導(dǎo)雙系統(tǒng),第一種圖形界面的適用個(gè)人用戶,第三種可以實(shí)現(xiàn)腳本化的則適用于企業(yè)的批量部署。
四、過程
1、將物理機(jī)引導(dǎo)到winPE,可以用安裝盤、也可以用WDS,我用的是后者
2、在選擇語(yǔ)言處,按shift+F10,調(diào)出命令行,當(dāng)前命令行位置是X:\sources
3、連接文件服務(wù)器,拷貝所需文件(也可以在xp系統(tǒng)下拷貝):
net use z: \\server\share
輸入用戶名和密碼,將服務(wù)器上的文件映射到本地Z盤
share下有三個(gè)文件夾一個(gè)文件
bootmgr:?jiǎn)?dòng)管理器,相當(dāng)于XP/2003時(shí)期的Ntldr
文件夾boot:存放安裝光盤中的boot文件
文件夾sources:存放本地WinPE啟動(dòng)文件boot.wim
文件夾bcdback:存放BCD備份數(shù)據(jù)BCD.back
md c:\boot
md c:\sources
z:
copy z:\sources\boot.wim c:\sources (只是第一種方式需要boot.wim文件)
xcopy bootmgr c:\ /s /y /r
xcopy z:\boot\*.* c:\boot
copy z:\bcdback\BCD.back c:\boot
A、修復(fù)啟動(dòng)項(xiàng):第一種方式,圖形界面修復(fù)
C:
Cd boot
Bootsect.exe /nt60 sys (更新系統(tǒng)分區(qū)上的主啟動(dòng)代碼,由NTLDR切換到BOOTMGR)
重啟電腦,系統(tǒng)自動(dòng)從本地的boot.wim啟動(dòng),在選擇語(yǔ)言和鍵盤的地方停止,按shift+F10執(zhí)行以下命令
Diskpart
List disk
Select disk 0 (winXP所在硬盤)
Select vdisk file=d:\win7.vhd
Attach vdisk
List volume (查看被掛載的vhd的盤符,本例中為H)
回到圖形界面,選擇時(shí)區(qū)、鍵盤,點(diǎn)擊下一步
不選擇安裝系統(tǒng),選擇左下角的“修復(fù)計(jì)算機(jī)”,自動(dòng)進(jìn)入系統(tǒng)修復(fù)程序
系統(tǒng)會(huì)自動(dòng)查找磁盤中所安裝的系統(tǒng),并添加到啟動(dòng)項(xiàng)。
重啟電腦,第一種方式修復(fù)結(jié)束
(此外:通過另一個(gè)圖形界面工具,也可修復(fù),文件在
X:\sources\recovery\RecEnv.exe
使用這個(gè)工具就不需要拷貝boot.wim,不需要重啟系統(tǒng)進(jìn)入本地的WinPE了)
4、附加VHD盤
Diskpart
List disk
Select disk 0 (winXP所在硬盤)
Select vdisk file=d:\win7.vhd
Attach vdisk
List volume (查看被掛載的vhd盤符,本例中為H)
Exit (退出diskpart)
B、修復(fù)啟動(dòng)項(xiàng)——第二種方式,bootrec工具
Bootrec /rebuildbcd (掃描磁盤中所安裝的系統(tǒng),并將啟動(dòng)項(xiàng)添加到BCD中)
系統(tǒng)會(huì)掃描到H盤存在一個(gè)系統(tǒng),即VHD的Win7系統(tǒng),問是否保存到BCD,鍵盤上敲入Y,回車保存。
Bcdedit 查看是否存在添加啟動(dòng)項(xiàng)
最后備份BCD文件,這就是第三種方式中的備份文件來(lái)源
Bcdedit /export c:\boot\BCD.back (備份BCD數(shù)據(jù))
Copy c:\boot\BCD.back z:\bcdback (將備份放到文件服務(wù)器)
重啟電腦,第二種方式修復(fù)結(jié)束
C、修復(fù)啟動(dòng)項(xiàng)——第三種方式,導(dǎo)入BCD備份文件
Bootrec /fixmbr (可以刪除 MBR 中的非標(biāo)準(zhǔn)代碼)
Bootrec /fixboot (修改xp時(shí)代的NTLDR啟動(dòng)為Bootmgr啟動(dòng))
Bcdedit /import c:\boot\BCD.back(從備份文件恢復(fù)引導(dǎo)信息數(shù)據(jù)BCD)
導(dǎo)入BCD數(shù)據(jù)之后,device、osdevice信息顯示為未知,需要重新修改
Bcdedit /set {default} device vhd=[d:]\win7.vhd
Bcdedit /set {default} osdevice vhd=[d:]\win7.vhd
Bcdedit 查看啟動(dòng)信息是否正確,正確的顯示如下:
Windows Boot Manager
--------------------
identifier {bootmgr}
device unknown
path \bootmgr
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device unknown
path \Windows\system32\winload.exe
description Windows 7 Enterprise
locale zh-CN
osdevice unknown
systemroot \Windows
重啟電腦,第三種方式修復(fù)結(jié)束
5、恢復(fù)XP系統(tǒng)(在WinPE環(huán)境下,也可以在啟動(dòng)win7后,在win7環(huán)境下)
Bcdedit /create {ntldr} /d “windows XP”
Bcdedit /set {ntldr} device partition=c: (選擇xp系統(tǒng)所在盤)
bcdedit /set {ntldr} path \ntldr
Bcdedit /displayorder {ntldr} –addlast
Bcdedit /set {ntldr} description “Windows XP”
Bcdedit
至此,Windows XP和win7 VHD雙啟動(dòng)全部完成
五、其他說明
1、查看BCD中的備份信息
bcdedit /store z:\bcdback\BCD.back
2、清除windows XP下的 BCD啟動(dòng)信息
Bcdedit /export c:\boot\bcd_back01 (備份BCD數(shù)據(jù))
Attrib c:\boot\bcd –s –h –r (去掉隱藏只讀)
Ren c:\boot\bcd bcd.old (改名)
3、第二種修復(fù)方式中,理論上可以做到完全腳本化
將Bootrec /rebuildbcd改成
Echo Y|Bootrec /rebuildbcd 即可以在提示輸入YES|NO|ALL的時(shí)候,自動(dòng)輸入Y,不需要人工敲入Y
但是在這個(gè)命令下卻不能用,不知何故