幫助中心

當前位置:首頁 > 幫助中心 > U盤/移動硬盤上運行win7(VHD版)

U盤/移動硬盤上運行win7(VHD版)

日期:2011-05-01 | 時間:12:52
 

為什么要用VHD而不是直接用真實硬盤呢?因為——方便,用VHD的話,只要硬盤空間足夠,就可以放進10個20個系統(tǒng)而不必考慮分區(qū)的問題,每個系統(tǒng)只不過是一個VHD文件罷了。卸載也非常方便,直接把相應的VHD刪除,然后再刪掉相應的bcd引導項就完事。制作另一個新的移動系統(tǒng)更是簡單,把VHD復制到另一個移動硬盤,然后重建引導,就一切OK。

 

對于不喜歡用VHD的同學,真實硬盤做法也是一樣的。bcd引導項直接修改成引導移動硬盤/U盤的win7就可以了。

 

如果安裝到U盤的話,首先U盤要夠大!其次完成后要安裝支持win7的fbwf(一定要裝!否則U盤很快就掛,論壇里有下載)

———————————————————————————————————————————————

首先要把WIN7安裝到VHD里,然后用這個VHD啟動計算機并且運行WIN7。這一步很容易,我就略過了,論壇里有相關帖子。

 

下面繼續(xù),把這個裝了WIN7的VHD移植到移動硬盤,然后用移動硬盤啟動計算機,并且運行VHD中的WIN7。

 

制作好的移動版WIN7兼容性很好!我用這個移動版WIN7啟動了兩臺筆記本,聯(lián)想Y450和Dell的D630,完全沒有任何問題;還啟動了我的老臺式機,01年的,P4 1.5G,512M內(nèi)存,USB1.1,bios無usb啟動選項。唯一的麻煩是第一次啟動新計算機時,要重新安裝驅動。移動版win7的性能比本地的要略低,一是USB2.0的速度限制,二是VHD的讀寫驅動會稍微拖慢硬盤讀寫速度,但是不會低太多,這個貼的最后,我會發(fā)本地win7和移動win7的性能對比圖。

 

工具準備

- 聯(lián)想Y450本本,已安裝Windows 7旗艦版,用來給移動WIN7做引導并且修改win7.vhd的內(nèi)容(不一定要win7,反正能給移動win7做引導和修改就行,比如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)預先安裝好的完整的win7系統(tǒng)文件。

 

2. 因為USB驅動的關系,這個VHD上的win7從移動硬盤上啟動時會藍屏報錯:007B!所以下面要修改VHD win7的USB驅動。


2.1 進入 V:\windows\inf\ 文件夾,找到如下文件,依次雙擊打開,找到對應的部分,修改內(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文件復制到此處覆蓋原文件;

然后繼續(xù)找名為usbport.inf_……的文件夾,用改好的usbport.inf文件覆蓋此處的原文件;

繼續(xù)找名為usbstor.inf_……的文件夾,用改好的usbstor.inf覆蓋此處的原文件。
(注意:這個位置的文件夾和文件所有權屬于TrustedInstaller,直接改是不行的,首先要修改所有權為登錄用戶,并且賦予完全權限,才可以修改。修改步驟請自己網(wǎng)上搜。)

 


2.3 文件改好了,接下來要改注冊表 V:\windows 的注冊表。修改注冊表有很多方法,我下面用的是最簡單的一種

 

2.3.1 打開寫字板,把如下代碼復制到寫字板中,保存為usb1.reg(注意不是usb1.reg.txt?。?/P>

 

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 打開寫字板,把如下代碼復制到寫字板中,保存為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 關機重啟進入V:盤的Win7,即本地的VHD Win7。找到2.3中創(chuàng)建的usb1.reg和usb2.reg文件,分別雙擊運行,文件中的內(nèi)容即被寫入VHD Win7的注冊表。

 

2.5 重啟,進入本地Windows7。

 

3 在步驟2中,USB驅動已經(jīng)改好了,現(xiàn)在win7.vhd中的系統(tǒng)已經(jīng)可以在移動硬盤中運行了。插上移動硬盤,把D:\win7.vhd文件復制到G:\ (移動硬盤數(shù)據(jù)盤,事先準備好大于15G的空閑空間)

 

4 不要急著用移動硬盤去啟動計算機,因為——引導還沒有建立!下面我們來手動給G:\win7.vhd建立引導。


4.1 把本地Windows7的系統(tǒng)盤中boot文件夾和bootmgr文件完整復制到移動硬盤 F:\ (這相當于移動硬盤的C盤)根目錄下


4.2 進入 c:\windows\system32 文件夾,把如下三個文件復制到 F:\boot\ 文件夾下:
bootsect.exe —— 用來給移動硬盤MBR寫引導信息
bcdedit.exe —— 用來建立、修改bcd引導項
bcdboot.exe —— 用來復制bcd引導項


4.3 運行cmd進入命令行,依次運行如下命令:

 


bcdboot c:\windows /s f: —— 把本地Windows7的引導項復制到F:盤(即移動硬盤)
bootsect /nt60 f: /mbr —— 這個命令將把nt60版的引導信息寫入移動硬盤的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 關機,用移動硬盤啟動Y450吧……

 

6 還可以用它來啟動Dell D630,嘿嘿……第一次啟動時Windows7會自動安裝驅動。

 

7 還可以用它來啟動01年的老爺機,P4 1.5G,512M內(nèi)存,USB1.1,bios無usb啟動選項,我插上移動硬盤后,從硬盤項可以看到移動硬盤,從它啟動后順利進入WIN7 USB VHD系統(tǒng)!當然因為USB1.1的關系,啟動時間5分鐘……運行速度嘛,能感覺到明顯的停滯感……沒辦法,這老爺機出廠的時候USB2.0還不成氣候呢。還有網(wǎng)卡,聲卡,顯卡驅動全都不能識別……太老啦!

 

8 還可以用它來啟動明年的主流機,USB3.0 SSD固態(tài)硬盤,豈不是比本地硬盤還快?!流口水YY中……

 

注意:關于Windows 7版本的選擇,第一,一定要旗艦版,因為只有旗艦版才支持VHD!第二,要考慮激活Windows 7的問題,因為當你在其它機器上啟動這個系統(tǒng),因為硬件改了,Windows會要求你重新激活……如果你的是特定的OEM版,很可能啟動不了另一臺計算機。

(責任編輯:eraitsolution.com)

大白菜超級U盤啟動盤制作工具