2011-12-31

如何在 Noname XPE 中加入新的 SATA 驅動程式

最近公司進了一批新的 DELL Optiplex 790 的電腦。
依照以往的習慣,會先拿一台來安裝母版環境並製作成 GHOST ,然後會利用 NoName XPE 來對其他台電腦進行 GHOST 還原的動作。

怎料,目前手上的 XPE 版本竟然抓不到這台電腦的硬碟!
然而,目前 NoName XPE 也不再出新版本了,所以看來只好自己動手來把新的驅動程式加入。
因為這次製作花了我很長的時間去找資料&研究,因此順便就在這裡做個筆記,以防往後(久久一次)要再製作時又要浪費時間。

原本在處理 XPE 時都會上 NoName XPE 論壇參考相關的步驟,無奈這次進到 NoName XPE 論壇後發現他已經成 Open Mail 的登入網頁!
也就是說 NoName XPE 論壇已經關門了嗎!?
所以,看來目前要參考資料只能到 yahoo! 部落格去參考 NoName XPE 的舊文章了。

底下就讓我們開始進入今天的重點吧~

首先,您的手上必須有一版 NoName XPE 的光碟或 ISO 檔(NoName 所提供的最後的版本是 2009/09/09 ),然後從它的根目錄下取得 RXPE.IM_ 檔。

▼ 將 RXPE.IM_ 檔抓出,放到您的「暫時工作目錄」裡。


XPE-01

▼ 利用 Winrar 或 7-ZIP 開啟 RXPE.IM_ 檔,並將 RXPE.IMG 解開。

XPE-02

再來就要利用到金田一大大所提供的中文化 MakeXPE 軟體。
檔案下載處:MakeXPE 0.99

▼ 將下載下來的 MakeXPE 解壓縮(這裡我以解壓縮到桌面上來說明),然後利用 UltraISO 或 7-Zip 這類的工具開啟之前解壓縮出來的 RXPE.IMG 檔,並將裡面的 RXPE 資料匣解壓縮到桌面上的「MakeXPE_0.99\BaseSys\NoNXPE(XP)\」資料匣裡(請將原資料夾整個覆蓋)。

XPE-03

再來,請到您的 PC/主機板的官網去取得相關的 SATA 的驅動程式。
▼ 下載回來並解壓縮後您大概會看到這樣的倒按內容。

XPE-04

 

我們可以從 TXTSETUP.OEM、iaAHCI.inf、iaStor.inf 這三個檔案中得知硬體裝置的相關資訊。
而 iaStor.sys 就是主要的驅動程式檔。

▼ 先利用 MakeCAB 把 iaStor.sys 壓縮成 iaStor.sy_ 。

XPE-05

▼ 然後複製到桌面上的「MakeXPE_0.99\BaseSys\NoNXPE(XP)\RXPE\system32\drivers」資料匣裡。

XPE-06

再來,開始編輯 txtsetup.sif 檔,請參考:xpe教學—如何新增主機板晶片驅動(銜接儲存裝置類) 一文。

從官網所提供的驅動程式資歷裡,我們先取得我們所要填入 txtsetup.sif 中的資料,如下:

[SourceDisksFiles]
iaStor.sys=1,,,,,,4_,4,1,,,1,4

[HardwareIdsDatabase]
PCI\VEN_8086&DEV_1C02&CC_0106="IASTOR"

[SCSI.Load]
iaStor=iaStor.sys,4

[SCSI]
iaStor="Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller"

但是,若是像我一樣以前就有放過舊版的 iaStor.sys ,但是又想要保留舊的驅動(因為新的驅動不一定會支援舊的設備),那麼就必須在檔名與設定上動個手腳了!

1. 先把 iaStor.sy_ 改成 iaStor03.sy_ (這裡檔名必須遵循 8+3 的格式喔!)。
2. 再來把上面的相關參數修改如下,數字的地方您可自行決定怎麼編都行。
[SourceDisksFiles]
iaStor03.sys=1,,,,,,4_,4,1,,,1,4

[HardwareIdsDatabase]
PCI\VEN_8086&DEV_1C02&CC_0106="IASTOR03";

[SCSI.Load]
iaStor03=iaStor03.sys,4

[SCSI]
iaStor03="Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller"

好了!大致上準備工作都已經完成了,再來就是準備要行打包的工作嘍!

開始打包之前,要請您先準備一份 Windows XP 光碟或是利用虛擬光碟之類的軟體掛載 XP ISO 檔成一個虛擬光碟,因為接下來我們會用到光碟中的 I386 資料匣。
而我的作法是乾脆將整個 I386 資料夾複製到 C:\ 下備用。

▼ 到桌面上的 MakeXPE_0.99 資料匣中執行 MakeXpe.exe ,設定好相關的位置資料、勾選相關選項後就按下「執行」開始進行轉檔動作吧。

XPE-07

▼ 開始進行轉檔動作。

XPE-08

XPE-09
▼ 轉檔完成,開始進行壓縮。

XPE-10

▼ 轉檔、壓縮完成,直接關閉這個視窗。

XPE-11

最後請將產出在 C:\ 下的 RXPE.IM_ 檔案丟到 NoName XPE 的 ISO 檔中覆蓋原始檔即可完成增加 SATA 驅動程式的工作。

將該 ISO 檔燒成光碟並於 DELL 790 上開機後即可正確抓到硬碟了。

P.S. : 2012/01/06 在 ASUS P8Z68-V-LX 上實作成功.

增加主機板晶片的銜接儲存裝置類驅動...都是在txtsetup.sif這個文件上做動作的...
這邊就舉個簡單的例子而已...其他廠牌的驅動就要你自行下功夫去查詢嚕...
加入比較簡單的晶片驅動...
只要針對txtsetup.sif內的4個區段內加入他適當的 "碼" "文字"...
不知道怎麼描述才是正確的...不過知道我說的意思就好了...
txtsetup.sif內的這4個區段分別為...
[SourceDisksFiles]
[HardwareIdsDatabase]
[SCSI.Load]
[SCSI]
這邊舉...一張VIA晶片PCI的...  AT200 硬碟雙用擴充卡為例子
只要在txtsetup.sif內的這4個區段內個別加入
[SourceDisksFiles]
viamraid.sys=1,,,,,,4_,4,1,,,1,4
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
[SCSI.Load]
viamraid=viamraid.sys,4
[SCSI]
viamraid="VIA RAID Controller"
再把你下載的驅動內的viamraid.SYS 放進XPE內的SYSTEM32資料夾內的DRIVER資料夾內
這樣就完成了...
當然...你可能會有疑問...這些資料是哪來的...
我只能很簡單的告訴你...
請去這晶片...
或是這張卡的官方網站下載她們的驅動程式裡面就會有這些資料了....
這邊放上舉例的驅動下載點...
http://www.upmost.com.tw/download_check.php?s_id=132
下載後...解壓縮...
at200_v550b\DRIVER\VRAIDDrv\XP\x86\VIAMRAID.INF裡面有這裝置包含的硬體識別碼(HardwareIdsDatabase)
[VIA]
%PCI\VEN_1106&DEV_3249.DeviceDesc% = viamraid , PCI\VEN_1106&DEV_3249&CC_0104
要把她們改成xpe用的格式
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
再把他放到HardwareIdsDatabase這個區段內...
at200_v550b\DRIVER\VRAIDDrv\XP\x86\viamraid.sys就是所要用到的驅動程式...
放進XPE內的SYSTEM32資料夾內的DRIVER資料夾內...
這樣就加入完成嚕...

*******************NoName Information Team*********************
再來是針對xpe內硬體識別碼的研究...
我一樣以AT200 硬碟雙用擴充卡為例子
這張卡的硬體識別碼為...PCI\VEN_1106&DEV_3249&SUBSYS_32491106
接下來以這張卡的4個硬體識別碼同時存在時來做研究...

(這4種硬體識別碼都是這張卡的硬體識別碼...只是表達的方式不一樣而已)
PCI\VEN_1106&DEV_3249
PCI\VEN_1106&DEV_3249&CC_0104
PCI\VEN_1106&DEV_3249&CC_010400
PCI\VEN_1106&DEV_3249&SUBSYS_32491106
研究一
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249="iastor"
PCI\VEN_1106&DEV_3249&CC_0104="iastor"
PCI\VEN_1106&DEV_3249&CC_010400="iastor"
PCI\VEN_1106&DEV_3249&SUBSYS_32491106="viamraid"
這時進到xpe後可以正確識別在掛這張卡上的硬碟...
改為...
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249="viamraid"
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
PCI\VEN_1106&DEV_3249&CC_010400="viamraid"
PCI\VEN_1106&DEV_3249&SUBSYS_32491106="iastor"
這時進到xpe後...就看不到硬碟了...
研究二
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249="iastor"
PCI\VEN_1106&DEV_3249&CC_0104="iastor"
PCI\VEN_1106&DEV_3249&CC_010400="viamraid"
這時進到xpe後可以正確識別在掛這張卡上的硬碟...
改為...
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249="viamraid"
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
PCI\VEN_1106&DEV_3249&CC_010400="iastor"
這時進到xpe後...就看不到硬碟了...
後面的研究我就把不打了...
跟你所想的是一樣的...
xpe在判斷硬體識別碼的時候...並不是由上往下的去掃描...
而是會匹配硬體識別碼中最完整的那一個...並掛上驅動...
由上往下的情形是在同等級的硬體識別碼同時存在時才會先掃描到的先掛載驅動...
例如說...
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
PCI\VEN_1106&DEV_3249&CC_0104="iastor"
這樣進xpe後就可以看到硬碟...
反之...
[HardwareIdsDatabase]
PCI\VEN_1106&DEV_3249&CC_0104="iastor"
PCI\VEN_1106&DEV_3249&CC_0104="viamraid"
這時進到xpe後...就看不到硬碟了...