引言: 隨著企業(yè)服務(wù)器的維護(hù)工作量日益增多,盡管使用最新內(nèi)核的各種WinPE系統(tǒng)能將大多數(shù)服務(wù)器的磁盤陣列卡驅(qū)動(dòng)都包含其中,也不排除有極個(gè)別的服務(wù)器,由于WinPE系統(tǒng)中缺少服務(wù)器特殊的陣列卡所需的驅(qū)動(dòng)程序而無(wú)法使用。我們可以按照本文介紹的方法,將維護(hù)服務(wù)器所需的各類驅(qū)動(dòng)程序添加進(jìn)WinPE中。
大多數(shù)系統(tǒng)維護(hù)員對(duì)于WinPE系統(tǒng)應(yīng)該都不會(huì)陌生的,WinPE系統(tǒng)即是Windows預(yù)安裝環(huán)境(Windows Preinstallation Environment,簡(jiǎn)稱 WinPE)在Windows內(nèi)核上構(gòu)建的具有有限服務(wù)的最小Win32子系統(tǒng),它用于向準(zhǔn)備安裝Windows操作系統(tǒng)的計(jì)算機(jī)提供安裝環(huán)境,啟動(dòng)Windows安裝程序,復(fù)制文件或者制作磁盤映像,是計(jì)算機(jī)技術(shù)保障人員日常工作中的有效工具。
目前,隨著單位服務(wù)器的維護(hù)工作量日益增多,盡管使用最新內(nèi)核的各種WinPE系統(tǒng)能將大多數(shù)服務(wù)器的磁盤陣列卡驅(qū)動(dòng)都包含其中,也不排除有個(gè)別的服務(wù)器,由于WinPE系統(tǒng)中缺少服務(wù)器特殊陣列卡所需的驅(qū)動(dòng)程序,從而無(wú)法使用。實(shí)際上,我們按照下面的方法,可以將維護(hù)服務(wù)器所需的各類驅(qū)動(dòng)程序添加進(jìn)WinPE中,制作出針對(duì)某種型號(hào)服務(wù)器的WinPE系統(tǒng)來(lái)幫助我們做好維護(hù)工作。下面,筆者以添加服務(wù)器的磁盤陣列卡驅(qū)動(dòng)為例和大家一同探討。
在制作專用WinPE系統(tǒng)之前,首先要對(duì)WinPE調(diào)用磁盤陣列卡驅(qū)動(dòng)程序的過(guò)程有一些簡(jiǎn)單的了解。計(jì)算機(jī)啟動(dòng)之后,WinPE系統(tǒng)首先會(huì)讀取磁盤陣列卡里面的硬件標(biāo)識(shí),完成對(duì)磁盤陣列卡的識(shí)別工作。接下來(lái),WinPE系統(tǒng)會(huì)根據(jù)系統(tǒng)安裝信息文件的信息,通過(guò)磁盤陣列卡的標(biāo)識(shí)找到對(duì)應(yīng)驅(qū)動(dòng)程序的名稱,然后WinPE系統(tǒng)進(jìn)入驅(qū)動(dòng)程序所在的子目錄,將驅(qū)動(dòng)程序拷貝到指定的安裝目錄下面。完成驅(qū)動(dòng)程序的拷貝操作之后,WinPE系統(tǒng)會(huì)在運(yùn)行中調(diào)用驅(qū)動(dòng)程序?qū)Υ疟P陣列卡進(jìn)行驅(qū)動(dòng)。
對(duì)WinPE調(diào)用磁盤陣列卡驅(qū)動(dòng)程序流程有一定的了解后,我們就可以逆向把磁盤陣列卡驅(qū)動(dòng)程序添加到WinPE中了。首先,用專用軟件將WinPE系統(tǒng)的核心文件從壓縮的鏡像文件中提取出來(lái),然后把磁盤陣列卡驅(qū)動(dòng)程序添加到這個(gè)提取出來(lái)的文件中,再修改系統(tǒng)安裝信息文件,確保WinPE系統(tǒng)能夠正確調(diào)用新添加的驅(qū)動(dòng)程序。最后,將修改后的文件封裝壓縮,替換原先的文件,完成WinPE系統(tǒng)的制作。具體步驟如下。
首先使用ULTRAISO或其他光盤映像文件制作編輯軟件,將WinPE系統(tǒng)鏡像文件中擴(kuò)展名為“IS_”的文件提取出來(lái),將這個(gè)擴(kuò)展名改為“cab”,然后用WinRAR或其他解壓縮軟件將其解壓縮,得到相應(yīng)的ISO鏡像文件。
在獲得ISO鏡像之后,接下來(lái)的工作是將磁盤陣列卡驅(qū)動(dòng)程序添加到ISO鏡像的相應(yīng)位置。首先查出磁盤陣列卡的型號(hào)以及WinPE系統(tǒng)的內(nèi)核版本,然后找出與磁盤陣列卡以及WinPE系統(tǒng)相匹配的驅(qū)動(dòng)程序。在文件夾中,服務(wù)器陣列卡的驅(qū)動(dòng)程序擴(kuò)展名為“SYS”,用WinCAB軟件將其打包,生成對(duì)應(yīng)的CAB文件,然后,將該文件的擴(kuò)展名改為“SY_”。最后,將該文件通過(guò)ULTRAISO添加到ISO鏡像文件中存放驅(qū)動(dòng)程序的位置中,通常位于文件夾“SYSTEM32DRIVERS”中,不同的WinPE系統(tǒng)可能會(huì)有差異。
將服務(wù)器磁盤陣列卡驅(qū)動(dòng)程序添加到ISO鏡像文件之后,還需要修改系統(tǒng)相應(yīng)的安裝信息文件,使得WinPE系統(tǒng)能夠正確讀取并安裝該驅(qū)動(dòng)程序。因此,我們需要對(duì)系統(tǒng)的“txtsetup.sif”文件進(jìn)行配置,“txtsetup.sif”是 WinPE系統(tǒng)在安裝時(shí)加載驅(qū)動(dòng)程序的信息文件,且該文件不在系統(tǒng)保護(hù)文件的范疇內(nèi),這意味著我們可以對(duì)這個(gè)文件任意修改而不用擔(dān)心遭到操作系統(tǒng)的阻止。
(1)獲取“txtsetup.sif”文件。在ISO鏡像文件里面可以直接找到“txtsetup.sif”文件或者“txtsetup.SY_”文件。對(duì)于“txtsetup.SY_”文件,將其提取出來(lái),后綴名修改為“CAB”,然后解壓縮生成“txtsetup.sif”文件,可以通過(guò)ULTRAEDIT或者記事本程序進(jìn)行編輯。
(2)設(shè)置系統(tǒng)的預(yù)安裝顯示參數(shù)。為了便于敘述,假設(shè)磁盤陣列卡驅(qū)動(dòng)程序的文件名為“XXXX.SYS”,在“txtsetup.sif”文件中的“[SCSI]”段增加:XXXX="YYYY"。這項(xiàng)的作用是告訴WinPE系統(tǒng),有一個(gè)名為XXXX的硬盤控制器是被操作系統(tǒng)所支持的,“YYYY”是對(duì)控制器進(jìn)行注釋的內(nèi)容。
(3)設(shè)置硬件標(biāo)識(shí)。在“txtsetup.sif”文件中的“[HardwareIdsDatabase]”段增加:硬件標(biāo)識(shí)="XXXX"。硬件標(biāo)識(shí)是用來(lái)描述被硬盤控制器的硬件標(biāo)識(shí),是硬件出廠時(shí)被寫入的,不會(huì)改變。硬件標(biāo)識(shí)可以通過(guò)以下兩個(gè)方法獲取:一是在驅(qū)動(dòng)程序文件夾中的擴(kuò)展名為“INF”的文件中查找;二是進(jìn)入操作系統(tǒng)的設(shè)備管理器,查看存儲(chǔ)控制器的驅(qū)動(dòng)器詳細(xì)信息,可以查到硬件標(biāo)識(shí)的信息。
(4)設(shè)置系統(tǒng)掛載驅(qū)動(dòng)參 數(shù)。 在“txtsetup.sif”文件中的“[SCSI.Load]”段增加 :XXXX=XXXX.SYS,4。這行代碼表示W(wǎng)inPE系統(tǒng)將使用程序“XXXX.SYS”對(duì)服務(wù)器陣列卡進(jìn)行驅(qū)動(dòng),最后的數(shù)字4定義了驅(qū)動(dòng)程序存放的目錄,可以在“winntDirectories”段中查看。
(5)設(shè)置驅(qū)動(dòng)程序拷貝的具體細(xì)節(jié)。在“txtsetup.sif”文件中的“[SourceDisksFiles]”段增加: XXXX.SYS=1,,,,,,4_,4,1,,,1,4,設(shè)定了驅(qū)動(dòng)程序拷貝的具體細(xì)節(jié)。第一個(gè)數(shù)字“1”代表的是驅(qū)動(dòng)程序拷貝的目標(biāo)文件夾。
完成前面的幾項(xiàng)工作后,就可以把TXTSETUP.SIF用ULTRAISO添加到ISO文件里面用以取代之前的文件?;蛘哂肳inCAB壓縮成CAB格式,改成SI_擴(kuò)展名,然后用ULTRAISO添加到ISO文件里面取代以前的那個(gè)SI_文件。再用WinCAB軟件將修改后的WINPEO3.ISO文件進(jìn)行壓縮,然后將其改名為 WINPEWH.IS_,并通過(guò)ULTRAISO覆蓋原先光盤ISO鏡像中的對(duì)應(yīng)文件。
寫到這里,對(duì)于普通映像的WinPE系統(tǒng)加載SCSI驅(qū)動(dòng)程序就可以實(shí)現(xiàn),如果是WIM映像格式的WinPE系統(tǒng)的話,可以按照以下步驟進(jìn)行驅(qū)動(dòng)的加載。
隨著Windows操作系統(tǒng)的發(fā)展,微軟開(kāi)始使用WIM映像格式來(lái)進(jìn)行操作系統(tǒng)的安裝,與之相適應(yīng)的WinPE系統(tǒng)也對(duì)此做了針對(duì)性的改動(dòng)。早期,主要使用ImageX工具來(lái)處理WIM映像文件,我們需要安裝Windows AIK來(lái)獲取ImageX,也可以從網(wǎng)絡(luò)上下載到ImageX。到了Windows 8時(shí)代,最新版的DISM工具經(jīng)過(guò)改進(jìn)已經(jīng)具備了ImageX原有的功能,并且已經(jīng)包含在了Windows 8/8.1以 及Windows 8/8.1 PE中。為了把驅(qū)動(dòng)添加進(jìn)WinPE系統(tǒng),我們可以使用驅(qū)動(dòng)程序服務(wù)命令DISM來(lái)完成這一任務(wù)。它可以在脫機(jī)映像中用于添加和刪除基于INF文件的驅(qū)動(dòng)程序,而且可以在處于運(yùn)行狀態(tài)的應(yīng)用程序(聯(lián)機(jī))上枚舉驅(qū)動(dòng)程序,其操作流程如下。
通過(guò)使用DISM工具將基本映像裝載到本地的Windows PE目錄,假設(shè)默認(rèn)路徑在D盤。其命令如下:
通過(guò)Add-driver將驅(qū)動(dòng)添加進(jìn)WinPE包。在這里要注意兩點(diǎn),一是對(duì)于包含很多目錄的Drivers,可以附加/recurse來(lái)做遞歸添加;二是對(duì)于Windows或者早期的驅(qū)動(dòng),都是沒(méi)有簽名機(jī)制的,F(xiàn)orceUnsigned是必不可少的參數(shù)。驅(qū)動(dòng)程序所在路徑為:
添加完驅(qū)動(dòng)程序后,需要將變更提交,并卸載此映像。命令如下:
這里要注意的是,使用DISM工具有兩個(gè)限制:一是驅(qū)動(dòng)程序服務(wù)命令僅支持 *.inf文 件,Windows Installer或其他驅(qū)動(dòng)程序包類型(如*.exe文件)不受支持;二是如果要添加多個(gè)驅(qū)動(dòng)程序,它們將按照在命令行中列出的順序進(jìn)行安裝。
通過(guò)反向的方法將服務(wù)器的陣列卡驅(qū)動(dòng)程序集成在WinPE系統(tǒng)中,同樣我們也可以將服務(wù)器網(wǎng)卡、主板等驅(qū)動(dòng)程序添加到WinPE系統(tǒng),雖然步驟稍稍有點(diǎn)麻煩,但對(duì)于后期的維護(hù)還是值得的。