當(dāng)前位置:首頁 > 幫助中心 > U盤/移動硬盤上運行win7(VHD版)
U盤/移動硬盤上運行win7(VHD版)
為什么要用VHD而不是直接用真實硬盤呢?因為——方便,用VHD的話,只要硬盤空間足夠,就可以放進10個20個系統(tǒng)而不必考慮分區(qū)的問題,每個系統(tǒng)只不過是一個VHD文件罷了。卸載也非常方便,直接把相應(yīng)的VHD刪除,然后再刪掉相應(yīng)的bcd引導(dǎo)項就完事。制作另一個新的移動系統(tǒng)更是簡單,把VHD復(fù)制到另一個移動硬盤,然后重建引導(dǎo),就一切OK。
對于不喜歡用VHD的同學(xué),真實硬盤做法也是一樣的。bcd引導(dǎo)項直接修改成引導(dǎo)移動硬盤/U盤的win7就可以了。
如果安裝到U盤的話,首先U盤要夠大!其次完成后要安裝支持win7的fbwf(一定要裝!否則U盤很快就掛,論壇里有下載)
———————————————————————————————————————————————
首先要把WIN7安裝到VHD里,然后用這個VHD啟動計算機并且運行WIN7。這一步很容易,我就略過了,論壇里有相關(guān)帖子。
下面繼續(xù),把這個裝了WIN7的VHD移植到移動硬盤,然后用移動硬盤啟動計算機,并且運行VHD中的WIN7。
制作好的移動版WIN7兼容性很好!我用這個移動版WIN7啟動了兩臺筆記本,聯(lián)想Y450和Dell的D630,完全沒有任何問題;還啟動了我的老臺式機,01年的,P4 1.5G,512M內(nèi)存,USB1.1,bios無usb啟動選項。唯一的麻煩是第一次啟動新計算機時,要重新安裝驅(qū)動。移動版win7的性能比本地的要略低,一是USB2.0的速度限制,二是VHD的讀寫驅(qū)動會稍微拖慢硬盤讀寫速度,但是不會低太多,這個貼的最后,我會發(fā)本地win7和移動win7的性能對比圖。
工具準備
- 聯(lián)想Y450本本,已安裝Windows 7旗艦版,用來給移動WIN7做引導(dǎo)并且修改win7.vhd的內(nèi)容(不一定要win7,反正能給移動win7做引導(dǎo)和修改就行,比如WINPE3.0版)
- Win7.vhd,15G, 位于Y450 D:盤
- 移動硬盤,80G分為兩個分區(qū),分區(qū)一是其它系統(tǒng)的系統(tǒng)分區(qū),分區(qū)二是數(shù)據(jù)盤。
步驟
1. 啟動Y450進入Win7,打開win7磁盤管理工具,附加vhd文件,把D:/win7.vhd附加到系統(tǒng)。成功后可以在計算機里看到一個新分區(qū),我給它分配的盤符是V:,所以V:盤里就是已經(jīng)預(yù)先安裝好的完整的win7系統(tǒng)文件。
2. 因為USB驅(qū)動的關(guān)系,這個VHD上的win7從移動硬盤上啟動時會藍屏報錯:007B!所以下面要修改VHD win7的USB驅(qū)動。
2.1 進入 V:\windows\inf\ 文件夾,找到如下文件,依次雙擊打開,找到對應(yīng)的部分,修改內(nèi)容如下(紅色字符為增加的內(nèi)容,注意紅色的;號),然后保存覆蓋原文件:
usb.inf
;[SignatureAttributes]
;usbccgp.sys=SignatureAttributes.DRM
;usbhub.sys=SignatureAttributes.DRM
[StandardHub.AddService]
DisplayName = %StandardHub.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbhub.sys
;LoadOrderGroup = Base
LoadOrderGroup = System Bus Extender
[CommonClassParent.AddService]
DisplayName = %GenericParent.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbccgp.sys
;LoadOrderGroup = Base
LoadOrderGroup = Boot Bus Extender
——————————————————————————————————————
usbport.inf
[ControlFlags]
;BasicDriverOk = *
;ExcludeFromSelect = *
;[SignatureAttributes]
;usbehci.sys=SignatureAttributes.DRM
;usbhub.sys=SignatureAttributes.DRM
;usbohci.sys=SignatureAttributes.DRM
;usbport.sys=SignatureAttributes.DRM
;usbuhci.sys=SignatureAttributes.DRM
;[SignatureAttributes.DRM]
;DRMLevel=1300
[EHCI.AddReg.NT]
HKR,,EnumPropPages32,,"usbui.dll,USBControllerPropPageProvider"
HKR,,Controller,1,01
;HKLM,System\CurrentControlSet\Services\usbehci,BootFlags,0x00010003,4
[EHCI.AddService]
DisplayName = %EHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbehci.sys
;LoadOrderGroup = Base
LoadOrderGroup = Boot Bus Extender
[OHCI.AddReg.NT]
HKR,,EnumPropPages32,,"usbui.dll,USBControllerPropPageProvider"
HKR,,Controller,1,01
;HKLM,System\CurrentControlSet\Services\usbohci,BootFlags,0x00010003,4
[OHCI.AddService]
DisplayName = %OHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbohci.sys
;LoadOrderGroup = Base
LoadOrderGroup = Boot Bus Extender
[UHCI.AddReg.NT]
HKR,,EnumPropPages32,,"usbui.dll,USBControllerPropPageProvider"
HKR,,Controller,1,01
;HKLM,System\CurrentControlSet\Services\usbuhci,BootFlags,0x00010003,4
[UHCI.AddService]
DisplayName = %UHCIMP.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbuhci.sys
;LoadOrderGroup = Base
LoadOrderGroup = Boot Bus Extender
[ROOTHUB.AddReg.NT]
HKR,,EnumPropPages32,,"usbui.dll,USBHubPropPageProvider"
;HKLM,System\CurrentControlSet\Services\usbhub,BootFlags,0x00010003,4
[ROOTHUB.AddService]
DisplayName = %ROOTHUB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
;StartType = 3 ; SERVICE_DEMAND_START
StartType = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\usbhub.sys
;LoadOrderGroup = Base
LoadOrderGroup = System Bus Extender
————————————————————————————————————
usbstor.inf
[USBSTOR.AddService]
DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
;StartType = 3
StartType = 0
ErrorControl = 1
ServiceBinary = %\USBSTOR.SYS
LoadOrderGroup = System Bus Extender
2.2 進入 v:\Windows\System32\DriverStore\FileRepository\,
找到名為usb.inf_……的文件夾,然后把剛才改好的usb.inf文件復(fù)制到此處覆蓋原文件;
然后繼續(xù)找名為usbport.inf_……的文件夾,用改好的usbport.inf文件覆蓋此處的原文件;
繼續(xù)找名為usbstor.inf_……的文件夾,用改好的usbstor.inf覆蓋此處的原文件。
(注意:這個位置的文件夾和文件所有權(quán)屬于TrustedInstaller,直接改是不行的,首先要修改所有權(quán)為登錄用戶,并且賦予完全權(quán)限,才可以修改。修改步驟請自己網(wǎng)上搜。)
2.3 文件改好了,接下來要改注冊表 V:\windows 的注冊表。修改注冊表有很多方法,我下面用的是最簡單的一種
2.3.1 打開寫字板,把如下代碼復(fù)制到寫字板中,保存為usb1.reg(注意不是usb1.reg.txt!)
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\UsbBootWatcherService]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,\
32,5c,55,73,62,42,6f,6f,74,57,61,74,63,68,65,72,2e,65,78,65,00
"DisplayName"="Usb Boot Watcher Service"
"ObjectName"="LocalSystem"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\UsbBootWatcherService]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\UsbBootWatcherService]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pciide]
"Start"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\intelide]
"Start"=dword:00000000
2.3.2 打開寫字板,把如下代碼復(fù)制到寫字板中,保存為usb2.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbccgp]
"Group"="Boot Bus Extender"
"Start"=dword:00000000[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci]
"Group"="Boot Bus Extender"
"Start"=dword:00000000[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbhub]
"Group"="Boot Bus Extender"
"Start"=dword:00000000[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbohci]
"Group"="Boot Bus Extender"
"Start"=dword:00000000[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
"Start"=dword:00000000
"Group"="Boot Bus Extender"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbuhci]
"Group"="Boot Bus Extender"
"Start"=dword:00000000
2.4 關(guān)機重啟進入V:盤的Win7,即本地的VHD Win7。找到2.3中創(chuàng)建的usb1.reg和usb2.reg文件,分別雙擊運行,文件中的內(nèi)容即被寫入VHD Win7的注冊表。
2.5 重啟,進入本地Windows7。
3 在步驟2中,USB驅(qū)動已經(jīng)改好了,現(xiàn)在win7.vhd中的系統(tǒng)已經(jīng)可以在移動硬盤中運行了。插上移動硬盤,把D:\win7.vhd文件復(fù)制到G:\ (移動硬盤數(shù)據(jù)盤,事先準備好大于15G的空閑空間)
4 不要急著用移動硬盤去啟動計算機,因為——引導(dǎo)還沒有建立!下面我們來手動給G:\win7.vhd建立引導(dǎo)。
4.1 把本地Windows7的系統(tǒng)盤中boot文件夾和bootmgr文件完整復(fù)制到移動硬盤 F:\ (這相當(dāng)于移動硬盤的C盤)根目錄下
4.2 進入 c:\windows\system32 文件夾,把如下三個文件復(fù)制到 F:\boot\ 文件夾下:
bootsect.exe —— 用來給移動硬盤MBR寫引導(dǎo)信息
bcdedit.exe —— 用來建立、修改bcd引導(dǎo)項
bcdboot.exe —— 用來復(fù)制bcd引導(dǎo)項
4.3 運行cmd進入命令行,依次運行如下命令:
bcdboot c:\windows /s f: —— 把本地Windows7的引導(dǎo)項復(fù)制到F:盤(即移動硬盤)
bootsect /nt60 f: /mbr —— 這個命令將把nt60版的引導(dǎo)信息寫入移動硬盤的mbr!因此一定要小心別搞錯了盤符!
bcdedit /store f:\boot\bcd /copy {default} /d "Windows 7 VHD USB"
回車后返回這種格式的GUID, {********-****-****-****-************},后續(xù)命令中我用{GUID}代替
bcdedit /store f:\boot\bcd /set {GUID} device vhd=[g:]\win7.vhd
bcdedit /store f:\boot\bcd /set {GUID} osdevice vhd=[g:]\win7.vhd
bcdedit /store f:\boot\bcd /set {GUID} detecthal on —— 打開detecthal參數(shù),對移動win7的兼容性非常重要,作用是啟動時強制檢測hal(即俗稱的電源管理模式,做過系統(tǒng)封裝的都知道這東西的重要性)。xp就沒有這個功能……
bcdedit /store f:\boot\bcd /displayorder {GUID} /addlast
bcdedit /store f:\boot\bcd /timeout 5
這改那,終于都改好了。OK,現(xiàn)在一切就緒。
5 關(guān)機,用移動硬盤啟動Y450吧……
6 還可以用它來啟動Dell D630,嘿嘿……第一次啟動時Windows7會自動安裝驅(qū)動。
7 還可以用它來啟動01年的老爺機,P4 1.5G,512M內(nèi)存,USB1.1,bios無usb啟動選項,我插上移動硬盤后,從硬盤項可以看到移動硬盤,從它啟動后順利進入WIN7 USB VHD系統(tǒng)!當(dāng)然因為USB1.1的關(guān)系,啟動時間5分鐘……運行速度嘛,能感覺到明顯的停滯感……沒辦法,這老爺機出廠的時候USB2.0還不成氣候呢。還有網(wǎng)卡,聲卡,顯卡驅(qū)動全都不能識別……太老啦!
8 還可以用它來啟動明年的主流機,USB3.0 SSD固態(tài)硬盤,豈不是比本地硬盤還快?!流口水YY中……
注意:關(guān)于Windows 7版本的選擇,第一,一定要旗艦版,因為只有旗艦版才支持VHD!第二,要考慮激活Windows 7的問題,因為當(dāng)你在其它機器上啟動這個系統(tǒng),因為硬件改了,Windows會要求你重新激活……如果你的是特定的OEM版,很可能啟動不了另一臺計算機。
(責(zé)任編輯:m.mpfi566.cn)