轉自:http://www.verycd.com/groups/@g933353/188257.topic
前言:
原版的XP是不能直接安裝在移動硬碟上的,主要是安裝程式在安裝過程中把USB僅作為輸入裝置,而沒有當作存放裝置看待,因此在拷貝完檔案後就無法再次啟動了。本人將安裝程式的設定檔和USB驅動進行了一些小修改,這樣就可以順利的安裝在移動硬碟上了。安裝在移動硬碟上的系統無法產生分頁檔案,可以在我的電腦屬性裡把虛擬記憶體改成無分頁檔案,好在現在的機器記憶體都很大,基本不影響使用。注意二點:其一、如果你的機器不是USB2.0的介面,那就別自己和自己過不去了;其二、XP系統可是認機子的,所以在哪台機子上安裝只能在哪台機子上使用(除非使用Uboot http://www.usboot.org/)。
前提條件
● 為了繼續下面的大部分操作,需要有一台已經安裝好Windows操縱系統的台式機。
● 一個相容USB 2.0標準的移動存放裝置。這個裝置可以是移動硬碟,甚至可以是大容量快閃記憶體盤(市面上已經有不少容量在2GB以上的快閃記憶體盤)。如果要使用硬碟,那麼這個移動硬碟可以是買來的現成產品,也可以自己用移動硬碟盒DIY。建議自己DIY,因為這樣不僅便宜,而且可以使用台式機硬碟,效能可以得到保障(成品移動硬碟為了保持一定的體積,往往使用緩衝小、容量小,轉速低的筆記本硬碟)。另外,為了盡量避免資料轉送所需的時間,移動硬碟(盒)以及主板上的USB介面最好能夠工作在USB 2.0標準下。
● 一張Windows XP安裝光碟片。
● UltraISO或者其他可以直接編輯ISO檔案的軟體。
● Microsoft Cabinet SDK:http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/Cabsdk.exe。
● 可以直接燒錄ISO檔案的光碟片燒錄軟體。
處理方法
操作的主要思路如下:首先給原始版本的Windows XP安裝光碟片製作ISO鏡像,然後使用ISO編輯軟體向其中添加一些檔案,編輯好檔案之後將改變的版本儲存回ISO檔案。隨後將修改過的ISO檔案重新燒錄到光碟片上,利用這張光碟片就可以向USB存放裝置中安裝Windows XP了(下文為了統一,會以向移動硬碟中安裝為例進行說明)。
詳細操作步驟
是否支援從USB裝置引導
通常,如果你的主板BIOS引導順序選擇菜單中有類似的選項,那麼答案就是肯定的了。如果引導順序菜單中沒有這樣的選項,請嘗試更新你的BIOS。如果你也不能確定,那麼最好登陸主板廠商網站獲得準確回覆。
準備硬碟
因為主板以及移動硬碟採用的技術各不相同,因此有些移動硬碟直接就可以作為引導盤使用,但有些則需要一些特殊的處理。如果你不確定你的移動硬碟是否支援作為引導盤使用,可以首先將移動硬碟直接連接到電腦上,而不要通過任何USB集線器。然後關掉電腦,從機箱中斷開所有其他硬碟,並將你原始版本的Windows XP安裝光碟片放入光碟機中。啟動安裝程式,然後進行到需要你選擇目標硬碟分區的介面上。如果可以看到安裝程式列舉的硬碟和分區,那就證明你的硬碟是支援的,否則就不能直接支援。
通常這並不是個大問題,你需要做的就是“恰當地”格式化你的硬碟。重啟動到正常的Windows環境下,然後使用HP的這個工具:http://h18007.www1.hp.com/support/files/hpcpqdt/us/download/20306.html,徹底格式化你的移動硬碟。
給安裝光碟片建立鏡像
這一步相當簡單。將Windows XP安裝光碟片放入光碟機,運行UltraISO,然後在“工具”菜單下選擇“製作光碟片映像檔案”選項,並儲存你的ISO檔案即可。
提取需要處理的檔案
光碟片鏡像建立好之後,關閉並重新開啟UltraISO。然後在[檔案] 功能表下使用“開啟”命令開啟你之前剛剛建立的ISO檔案。
接下來進入i386檔案夾,並選中下列檔案(按下“Ctrl”鍵可以多選):
● TXTSETUP.SIF
● DOSNET.INF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_
在“操作”菜單下選擇“提取”命令,然後將提取的檔案釋放到其他檔案夾中。
提取IN_檔案
運行前文中下載的Cabsdk.exe,將其中的檔案釋放到硬碟上(假設放在c:/cabsdk下)。然後運行“CMD”開啟命令提示字元視窗,並進入到c:/cabsdk/bin,按照cabarc x USBSTOR.IN_這樣的格式對在上一步中提取出來的三個“.in_”檔案運行cabarc命令,最終你將會得到三個“.inf”檔案。
● usb.inf
● usbport.inf
● usbstor.inf
這時候.IN_檔案就可以全部刪掉了。
編輯檔案
這是本文要做的主要工作,同時我還會簡要解釋一下為什麼這樣做。編輯工作可以使用純文字編輯器,例如記事本完成。
TXTSETUP.SIF
這個檔案是由Windows XP安裝程式在最初的安裝階段載入的,在這個檔案中,我們會改變Windows安裝程式對USB裝置的處理方法。預設情況下,安裝過程中USB裝置會被看作是輸入裝置,經過我們的修改,USB裝置將會變成大量儲存裝置(這種裝置需要在使用之前被載入)。
首先,按照下面的樣本處理[InputDevicesSupport.Load]和[BootBusExtenders.Load]欄位(藍色文字是新添加的內容,帶有(*)的文字是刪除的內容):
[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys
[InputDevicesSupport.Load]
usbehci = usbehci.sys (*)
usbohci = usbohci.sys (*)
usbuhci = usbuhci.sys (*)
usbhub = usbhub.sys (*)
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys (*)
接著對[BootBusExtenders]和[InputDevicesSupport]欄位進行類似的處理(藍色文字是新添加的內容,帶有(*的)文字是刪除的內容):
[BootBusExtenders]
pci = "PCI-Bustreiber",files.pci,pci
acpi = "ACPI Plug & Play-Bustreiber",files.acpi,acpi
isapnp = "ISA Plug & Play-Bustreiber",files.isapnp,isapnp
acpiec = "Integrierter ACPI-Controllertreiber",files.none,acpiec
ohci1394 = "IEEE-1394-Bus-OHCI-konformer Anschlusstreiber",files.ohci1394,ohci1394
usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci = "Open Hostcontroller",files.usbohci,usbohci
usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub
usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor
[InputDevicesSupport]
usbehci="Erweiterter Hostcontroller",files.usbehci,usbehci (*)
usbohci="Open Hostcontroller",files.usbohci,usbohci (*)
usbuhci="Universeller Hostcontroller",files.usbuhci,usbuhci (*)
usbhub="Standard-USB-Hubtreiber",files.usbhub,usbhub (*)
hidusb="HID-Parser",files.hidusb,hidusb
serial="Serial Port Driver",files.none,serial
serenum="Serial Port Enumerator",files.none,serenum
usbstor="USB-Speicherklassentreiber",files.usbstor,usbstor (*)
usbccgp="USB Generic Parent Driver",files.usbccgp,usbccgp
隨後,我們還要在註冊表中寫入一些鍵。txtsetup.sif允許你提供一些檔案,這些檔案將在系統安裝過程中被合并到註冊表中。請在[HiveInfs.Fresh]欄位加入下列藍色字的內容:
[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = usbboot.inf,usbservices
同時在[SourceDisksFiles]欄位下加入下列藍色文字內容:
[SourceDisksFiles]
usbboot.inf = 1,,,,,,_x,3,,3
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
kdcom.dll = 1,,,,,,3_,2,0,0,,1,2
最後,儲存並關閉TXTSETUP.SIF,這一步工作就完成了。
DOSNET.INF
接下來開啟DOSNET.INF,把第二個[Files]欄位變成下面的樣子(藍色文字為新新增內容):
[Files]
d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx
usb.inf
編輯[StandardHub.AddService]和[CommonClassParent.AddService]欄位,在其中添加下面顯示的藍色文字內容:
[StandardHub.AddService]
DisplayName=%StandardHub.SvcDesc%
ServiceType=1; SERVICE_KERNEL_DRIVER
StartType=0; SERVICE_DEMAND_START
ErrorControl=1; SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbhub.sys
LoadOrderGroup=Boot Bus Extender
[CommonClassParent.AddService]
DisplayName=%GenericParent.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbccgp.sys
LoadOrderGroup=Boot Bus Extender
usbport.inf
編輯[EHCI.AddService]、[OHCI.AddService]、[UHCI.AddService]和[ROOTHUB.AddService]欄位,在其中添加下面顯示的藍色文字內容:
[EHCI.AddService]
DisplayName=%EHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbehci.sys
LoadOrderGroup=Boot Bus Extender
[OHCI.AddService]
DisplayName=%OHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbohci.sys
LoadOrderGroup=Boot Bus Extender
[UHCI.AddService]
DisplayName=%UHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbuhci.sys
LoadOrderGroup=Boot Bus Extender
[ROOTHUB.AddService]
DisplayName=%ROOTHUB.SvcDesc%
ServiceType =1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%/usbhub.sys
LoadOrderGroup=Boot Bus Extender
usbstor.inf
在[USBSTOR.AddService]欄位中增加/修改下列藍色文字內容:
[USBSTOR.AddService]
DisplayName=%USBSTOR.SvcDesc%
ServiceType=1
StartType=0
Tag=3
ErrorControl=1
ServiceBinary=%12%/USBSTOR.SYS
LoadOrderGroup=Boot Bus Extender
新檔案:USBBOOT.INF
在之前處理的檔案所在的檔案夾中建立一個名為USBBOOT.INF的檔案,然後輸入下列內容:
[usbservices]
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","DisplayName",0x00000000,"USB Mass Storage Driver"
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","ErrorControl",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","ImagePath",0x00020000,"system32/DRIVERS/USBSTOR.SYS"
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","Start",0x00010001,0
HKLM,"SYSTEM/CurrentControlSet/Services/USBSTOR","Type",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","ErrorControl",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","ImagePath",0x00020000,"system32/DRIVERS/usbehci.sys"
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","Start",0x00010001,0
HKLM,"SYSTEM/CurrentControlSet/Services/usbehci","Type",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","DisplayName",0x00000000,"USB2 Enabled Hub"
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","ErrorControl",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","ImagePath",0x00020000,"system32/DRIVERS/usbhub.sys"
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","Start",0x00010001,0
HKLM,"SYSTEM/CurrentControlSet/Services/usbhub","Type",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbuhci","DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"
HKLM,"SYSTEM/CurrentControlSet/Services/usbuhci","ErrorControl",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbuhci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM/CurrentControlSet/Services/usbuhci","ImagePath",0x00020000,"system32/DRIVERS/usbuhci.sys"
HKLM,"SYSTEM/CurrentControlSet/Services/usbuhci","Start",0x00010001,0
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","ErrorControl",0x00010001,1
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","ImagePath",0x00020000,"system32/DRIVERS/usbohci.sys"
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","Start",0x00010001,0
HKLM,"SYSTEM/CurrentControlSet/Services/usbohci","Type",0x00010001,1
將inf檔案重新打包
如果原始的.IN_檔案還沒有刪除,那麼現在必須刪掉,因為我們需要用新的檔案將其替換。
再次開啟一個命令提示行視窗,然後進入到儲存這些檔案的檔案夾,然後執行下列命令:
cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf
這樣你將能看到三個IN_檔案。恭喜,所有修改工作就都已經完成了。
重新裝入ISO檔案
用UltraISO開啟你的Windows XP安裝光碟片鏡像,進入到i386檔案夾,然後從ISO檔案中刪除下列檔案,並儲存修改:
● DOSNET.INF
● TXTSETUP.SIF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_
一定要確保所有更改都被儲存到ISO檔案中,在UltraISO中關閉並重新開啟這個更改過的ISO檔案,再次進入i386檔案夾,並在“操作”菜單下選擇“添加檔案”命令,把你編輯過的檔案添加進去:
● USBBOOT.INF
● DOSNET.INF
● TXTSETUP.SIF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_
儲存ISO檔案,主要工作完成了。
將ISO檔案燒錄回光碟片
你可以隨意選擇任何光碟片燒錄軟體,需要注意:我們要把ISO檔案作為“光碟片映像”燒錄,而不是作為“普通檔案”燒錄。否則燒錄出來的光碟片根目錄下將會有一個ISO檔案,無法引導電腦和安裝系統。
從光碟片安裝Windows XP
關閉你的電腦,將其它內建硬碟拔出(這樣在安裝過程中Windows就找不到它們了,省得弄壞主引導記錄)。在BIOS設定程式中將USB硬碟設定為第一序引導裝置,並將光碟機設定為第二序(詳細操作方法請參考電腦或者主板的說明書)。
同時,你需要將USB硬碟直接連接到電腦,而不能通過USB集線器串連。
這樣Windows就可以正常安裝和使用了,在安裝過程中你可能會遇到這些問題:
● 在安裝驅動程式的過程中,安裝程式可能會提醒你有驅動程式沒有通過微軟的認證,這是正常現象。我們對某些檔案的修改使得檔案的校正值變化了,因此驅動的數位簽章也就丟失了。只要點擊“依然安裝”數次即可。
● 在安裝完成之後,第一次啟動的時候系統會報告沒找到分頁檔案。你可以忽略這個錯誤,就算沒有分頁檔案,Windows也可以正常工作。
至此,所有操作就已經全部完成了,你可以放心在安裝到移動硬碟中的系統裡處理任何機密資料。完成之後只要將移動硬碟拔出,並儲存到安全的地方,重新將內建硬碟串連到電腦,就可以進入平時使用的系統。