http://bbs.mychat.to/reads.php?tid=28662
[無人值守安裝] [轉帖]製作集成SATA驅動程式的Windows XP安裝光碟
作者:余劉琅 轉貼自:遠望資訊·《玩電腦》 更新時間:2004-7-23
SATA 硬碟有不少優點,但安裝作業系統實在麻煩,不僅要抓住機會按 F6 鍵載入SATA 的驅動程式,還要製作帶驅動程式的軟碟。要命的是如果新機器沒有配置軟盤機,那可就大眼瞪小眼了……來製作一張含 SATA 驅動程式的 WinXP安裝光碟吧。你會發現:原來載入 SATA 硬碟驅動其實很簡單。
為了不再讓 WinXP 的安裝過程需要通過軟碟載入 SATA 驅動程式,很多人都夢想主板的 SATA 驅動程式集成到安裝光碟中,本文就來 DIY一張集成 SATA 驅動程式的 Windows XP 安裝光碟!
Windows XP 安裝目錄及檔準備
打 開資源管理器,在一個擁有足夠磁碟空間 (空閒空間至少為 700MB;如果將生成後的光碟鏡像也放在該分區,則應當保證有一張光碟的雙倍容量的空間,即 1.4GB左右) 的硬碟分區上創建一個檔夾,比如 D:\XPSATA,用於保存Windows XP 的全部安裝檔。
把一張完好的 Windows XP 安裝光碟放入光碟機,在資源管理器中將光碟中的檔全部選定,再複製到 D:\XPSATA目錄中。
準備驅動程式檔
一般隨主板附送的驅動程式安裝光碟中都有 SATA 的驅動程式。打開光碟目錄,尋找名稱中含有 SATA 或 RAID 字元的檔夾;也可在主板製造商的網站或其他驅動程式下載站點(如:驅動之家「
請點此開啟連結或下載檔案等尋找與自己的主板晶片組相匹配的 SATA 驅動程式。
在 D 盤中建立一個新的目錄 (如 STATDRV),然後將找到的 SATA 驅動程式檔全部拷貝到這個目錄中 (D:\SATADRV)。這裡我們以 Si3112 的 SATA 驅動程式為例進行介紹。其他類型的 SATA 驅動程式的集成步驟幾乎完全相同,所不同的僅僅是驅動程式檔案名的不同而已。
在這個 D:\STATDRV 的檔夾中,一定會有一個副檔名為 .inf或 .oem 的小文件,如 oemsetup.inf 或者 txtsetup.oem 等 (本例中為 txtsetup.oem),用記事本程式打開它,隨後要用!
編輯 txtsetup.sif 文件
打開 D:\XPSATA\I386 檔夾,找到一個名為 txtsetup.sif 的檔,這是 Windows XP 在安裝時載入驅動程式的資訊檔,用記事本程式打開它。
按 Ctrl+F 快捷鍵,打開查找對話方塊,以 [SourceDisksFiles] 為關鍵字進行查找(圖1)。找到這個欄位後,其下面已經存在一些內容(圖2)。翻頁到這個欄位的末尾(注意:不是整個檔內容的末尾),添加以下內 容:si3112.sys = 1,,,,,,3_,4,1。
(我用的是 KT600 的 SATA 驅動,裡面有一個 INF 檔,我把也加到了上面:
複製程式
viamraid.sys = 1,,,,,,3_,4,1
VIAMRAID.INF = 1,,,,,,3_,4,1
)
(圖1)
(圖2)
這 裡的 si3112.sys = 1,,,,,,3_,4,1 是描述驅動程式所在位置的代碼。代碼的格式為 filename_on_source=diskid,subdir,upgradecode,newinstallcode,spare,spare,newfilename, 在 txtsetup.sif 檔中的 [SourceDisksNames] 和[WinntDirectories] 等欄位中有詳細的描述。有興趣的朋友可以深入研究其他目錄的對應關係,這裡僅簡單介紹。
此主題相關圖片如下:
在實際操作時,絕對不可以照搬代碼!特別是副檔名為 SYS 的檔 si3112.sys,它是 SATA 驅動程式目錄 D:\STATDRV 中的驅動程式檔案名,如果讀者的 SATA 驅動程式與本文所述的不同,則只需換成目錄中相應的檔即可。
切換到前面打開的 txtsetup.oem 文件,以 [HardwareIds. 為關鍵字進行搜索,應該可以找到類似[HardwareIds.SICS.Si3112] 的欄位。
該欄位下的代碼如:id ="PCI\VEN_1095&DEV_3112 &SUBSYS_31121095, "Si3112"」。
切 換到剛才打開的 txtsetup.sif 檔視窗中,以 [HardwareIdsDatabase] 為關鍵字進行搜索。找到後,將 txtsetup.oem 文件中 [HardwareIds.SICS.Si3112_XP] 欄位下的代碼拷貝到 txtsetup.sif 文件的 [HardwareIdsDatabase] 欄位末尾。不過,我們需要更改一下代碼的格式,如將 id ="PCI\VEN_1095&DEV _3112&SUBSYS_31121095", "Si3112" 改為:PCI\VEN_1095&DEV_3112&SUBSYS_31121095 = "Si3112" (其他代碼修改方法相同),更改後的代碼如下:
複製程式
PCI\VEN_1095&DEV_3112&SUBSYS_31121095 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_34238086 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_311215D9 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_B0021458 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_01661028 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_82141033 = "Si3112"
PCI\VEN_1095&DEV_3512&SUBSYS_35121095 = "Si3112"
PCI\VEN_1095&DEV_3512&SUBSYS_01661028 = "Si3112"
(這是我的主板用的代碼,在我的驅動裡的TXTSETUP.OEM裡查到的
PCI\VEN_1106&DEV_3249 = "viamraid"
PCI\VEN_1106&DEV_3149 = "viamraid"
PCI\VEN_1106&DEV_3164 = "viamraid"
)
***提示:
不同 SATA 驅動程式的代碼內容各不相同,應該根據具體情況靈活處理。
檢查拷貝修改的內容是否與原有的內容重複,如果有,則把重複的一行刪除。接著在 txtsetup.sif 文件查找 [SCSI.load]和 [SCSI] 欄位,添加如下內容:
複製程式
[SCSI.load]
si3112 = si3112.sys,4
(我的是:viamraid = viamraid.sys,4)
複製程式
[SCSI]
si3112 = "Silicon Image SiI 3112 SATALink Controller"
(我的是:viamraid = VIA RAID Controller(Windows XP))
至此,我們就把自己的 SATA 驅動程式的相關資訊添加到了 Windows XP 安裝資訊檔 txtsetup.sif 中了!
上 述添加自定義 SATA 資訊內容的步驟看似很複雜,其實也就是同時打開 Windows XP 安裝檔目錄中的 txtsetup.sif檔和驅動程式目錄中的 .inf 或 .oem 資訊檔,然後將後者檔中相關欄位下面的內容一一對應地移植到 txtsetup.sif 文件中。知道了方法,做起來就要容易些了!
修改 winnt.sif 檔內容
現 在,我們已經完成了兩個最重要的步驟:一是獲取了 SATA 驅動程式檔,它們現在被保存在 D:\STATDRV 文件夾中;二是修改了 Windows XP 安裝時自動載入驅動程式的資訊檔 txtsetup.sif。但現在有一個新的問題:Windows XP 在安裝時如何知道它所需要的驅動程式檔在哪個目錄下呢?
這個問題則需要通過修改 winnt.sif 這個檔來解決。這個檔是 Windows XP 系統在安裝時的附加資訊檔,可以在其中指定非微軟提供的第三方驅動程式的安裝路徑。
對於本例,在 D:\XPSTAT\I386 檔夾中用記事本創建一個文字檔案,寫好內容後,再將檔案名改為 winnt.sif 即可。
***提示:
在用記事本保存檔時,一定要輸入完整的檔案名,並且一定要用半形的雙引號將檔案名引起來,如 "winnt.sif",否則實際上生成的實際上仍然是個文字檔案 (Winnt.sif.txt),這將導致安裝過程中出錯,SATA 驅動程式無法自動載入!
在 winnt.sif 檔中添加以下內容 (如果已經存在部分內容,則應進行修改或添加,且保證每行的內容不要重複):
複製程式
[Unattended]
OemPreinstall=Yes
OemPnPDriversPath="STATDRV"
上述代碼最後一句引號中的內容是指隨後生成光碟時,驅動程式相對於光碟根目錄所在的相對路徑。由於我們打算把保存驅動程式的 D:\STATDRV 檔夾放到新生成的安裝光碟的根目錄,因此不必包含任何子目錄路徑(圖3)。
(圖3)
將 SATA 驅動壓縮到安裝檔中
使用支援 CAB 檔格式的工具 (如 WinRAR等),將驅動程式目錄中副檔名為 SYS 的檔添加到 WinXP 安裝目錄的 CAB 檔中。
這裡我們可以使用 Windows XP 本身附帶的一個命令行工具 makecab.exe,它位於 C:\WINDOWS\System32\ 目錄下。由於 System32 是默認的搜索路徑,因此使用時不需要程式所在的路徑。
在開始功能表中打開「運行」對話方塊,輸入如下命令:
複製程式
MAKECAB D:\STATDRV\SI3112.SYS D:\XP-STAT\i386\SI3112.SY_
。
(這一步,我將前面提到的INF檔也拷到了i386目錄下,以防檔不夠)
(圖4)
具體的驅動程式檔案名和保存路徑請根據實際情況靈活更改。
經過上述步驟,現在已經是萬事俱備,只待刻盤了!
準備任意一款支援製作可引導型光碟的工具程式,如經典的軟體 WinISO、ISOCommander 及國產軟體 UltraISO等均可。生成可引導光碟的方法有很多種,為避免大家到處尋找那些生僻的工具軟體,這裡以 UltraISO 為例,分若干個步驟進行:
(1) 製作原始安裝光碟鏡像
這一步的目的是方便從製作出來的光碟鏡像中提取引導檔。其實也有專門的直接提取光碟引導區的工具,但操作稍麻煩,因此在這裡多花費一兩分鐘還是很值得的。
將 Windows XP 的原始安裝光碟放入光碟機中,啟動 UltraISO,按 F5 鍵,或者執行 「工具」 功能表中的 「製作光碟鏡像檔」 (圖5),根據提示指定一個鏡像檔的保存位置,隨後程式會自動開始讀取光碟並完成鏡像檔的製作。
(圖5)
(2) 提取光碟鏡像中的引導資訊
在 UltraISO 主介面中,執行 「啟動光碟」 功能表中的「保存引導檔」命令 (圖6),將引導資訊保存到硬碟上備用,比如保存為 D:\Boot.bin。(圖6)
(3) 新建光碟鏡像
在 UltraISO 的「檔」功能表中執行「新建」命令;從資源管理器中,將前面我們已經準備好的 D:\XPSTAT 檔夾中的所有檔拖入 UltraISO 右上側的檔視窗中。
將 D:\STATDRV 目錄直接拖放到 UltraISO 右上側的檔視窗中,完成後在光碟的根目錄中應當可以看到 STATDRV 的檔夾。
***提示:
拖放時一定不要包含 XPSATA 目錄本身!也就是說,檔添加成功後,在光碟的根目錄下應當可以看到 I386 檔夾。
(4) 載入引導資訊檔
執行「啟動光碟」功能表中的「載入引導檔」命令,找到上一步提取的光碟鏡像的引導檔,即「 D:\Boot.bin」。現在,新建的光碟鏡像就具備與原版 Windows XP 安裝光碟相同的引導功能了。
(5) 保存光碟鏡像
按 CTRL+S 或者執行「檔」→「保存」命令,指定一個保存光碟鏡像的路徑和檔案名 (如 F:\XPSTAT.ISO 等),確定後 UltraISO 就開始向指定路徑生成光碟鏡像檔了。
(6) 刻錄安裝光碟
使 用 Nero 或者其他任意一款支援光碟鏡像檔刻錄的工具軟體,將上述得到的光碟鏡像檔(這裡即 F:\XPSTAT.ISO)刻錄到光碟中。現在,用這張安裝盤在支援 SATA 的硬體環境下全新安裝 Windows XP,你就既不必按 F6,也不需使用什麼軟碟,非常方便。
製作集成 SATA 驅動程式的 Windows XP 安裝光碟是一件比較複雜的工作,任何一個小小的失誤都可能導致無法正確地載入驅動程式。此外,不同主板附帶的 SATA 驅動程式的檔案名稱、數量、資訊檔的內容各不相同,在集成時不能硬套,只有舉一反三才能成功
format edited by Kilian for clarity