轉載來源 : 電腦王46期 玩軟體篇 ,PCADV實驗室

文:NoName、電腦王編輯部

========================================================================================================

編按:

所 謂WinPE,簡單的說是修改過的特製Windows作業系統,可以從光碟開機執行,而WinPE系統又可以粗略分成微軟官方提供的陽春版,以及各種網友 自製的特異功能版(以下簡稱XPE),其中NoName XPE就是正體中文語系下一套少見的強大工具,而軟體作者「NoName」也很熱心的提供給我們各種製作原理及心得,希望和電腦王讀者們分享、推廣XPE 系統。為什麼需要WinPE光碟?這是因為硬體的發展日新月異,傳統DOS環境下的系統維護軟體,已 經跟不上硬體更新的速度了,這讓網管們維修系統的時候很不方便。以Ghost備份還原為例,這是目前大家最常用的備份工具,用在Intel 965晶片組的主機板,搭配ICH8R南橋,傳統DOS工具片就會出問題了。你會發現光碟機、硬碟都不能用。

這是因為ICH8南橋以後都不再支援傳統IDE介面,所以各家主力廠商在主機板上會多加一個硬碟控制器的晶片,例如華碩和技嘉主機板會用JMicron橋 接晶片組擴充出2組SATA以及一組傳統IDE,讓使用者保留原來的IDE光碟機,因此讓DOS原本的IDE光碟驅動程式抓不到硬體,即使開機光碟可以啟 動系統,但無法將路徑切換至光碟底下。這是由於JMicron橋接晶片對ICH8來說是SATA的晶片,並非IDE介面,所以ICH8會把這些IDE裝置 當成SATA裝置,才找不到光碟機。雖然也有廠商推出第三方橋接晶片的DOS驅動,但是因為各家的橋接晶片用料不一,也很難做出簡化又方便的DOS工具片。

以內建JMicron橋接晶片的例子來說,它的驅動是「gcdrom.sys」,而傳統IDE介面的驅動則是「oakcdrom.sys」,這麼一來開機光碟就得設計以下的選單:

1) Boot from Hard Drive........選擇要由硬碟開機(預設值)

2) Boot from CD or FDD.........由光碟機或軟碟機開機選擇2會以DOS開機片接手,再進入第二層選單:

1)IDE CD-ROM .................(傳統支援IDE主機板上的IDE光碟機)

2)JMicron SATA CD-ROM........(透過JMicron SATA晶片擴充的IDE光碟機)DOS只支援到USB 1.1

DOS對USB大量儲存裝置的支援性不佳,而且DOS的USB傳輸速度只有USB 1.1,雖然有幾個DOS版的USB 2.0驅動,但是和主機板的相容性不高,並不是每台電腦都能用。

因為USB是目前最普及又方便的外接儲存硬體介面,要是救援系統直接支援USB 2.0的速度,更可以達成快速又方便的維修目的。

USB規格速度列表

USB 1.0/1.1 Low Speed 1.5Mbps 192KBytes/s

USB 1.0/1.1 Full Speed 12Mbps 1.5MBytes/s

USB 2.0 High Speed 480Mbps 60MBytes/s

USB 2.0還原速度的差異

而在WinPE的環境下,可以支援到USB 2.0的速度,筆者將映像檔放進外接硬碟,依序測試:

1. 可否正常開機進入系統

2. 可否正常抓到硬碟

3. 執行GHOST32的還原速度

可通過測試的主機板與測得速度如下:

no_02.jpg (52.19 KB, 下載次數: 531)

下載附件

2012-4-6 11:20 上傳

除了965晶片組,南橋晶片為ICH8跟ICH8R的主機板還原速度可達2100-2200 MB/Min外,其餘主機板都是在11XX-12XX MB/Min之間。而比照DOS外接硬碟還原到本機硬碟的速度是10MB/Min左右。

當 然WinPE環境執行Ghost不單單只有備份還原速度快這個特色,另外就是不容易發生「GHOSTERR」(因讀取錯誤中斷)的情況,用DOS版 Ghost光碟還原系統,讀取速度是每分鐘300MB左右,而且容易發生GHOSTERR的情況,這是因為光碟容易發生讀取不穩定的現象。如果是以 WinPE執行Ghost,除非遇到硬碟有壞軌的情況,不然不會發生GHOSTERR。

什麼是WinPE?

WinPE 其實就是Live CD的一種,而Live CD簡單說就是一張可以執行作業系統的光碟。WinPE是「Windows Preinstallation Environment」的縮寫,原本是微軟提供給OEM廠商進行重灌、救援系統的工作軟體。因為WinPE是一張開機光碟,可以拿到任何一部具有基本配 備上的電腦開機。因此,PE系統就像是Windows XP的最小核心版本。我們可以在上面執行應用程式,也能緊急、修復NTFS檔案系統、還能讀取網路分享內容。

下圖為微軟官方的Windows PE

圖一.jpg (106.52 KB, 下載次數: 516)

下載附件

2012-3-9 11:54 上傳

BartPE

PE Builder乃是一種用來製作Windows XP Live CD的工具軟體。而Bart則是一位荷蘭籍程式設計師Bart Lagerweij的名字。下載PE Builder完全免費,製作PE系統的原始檔可支援Windows XP與Windows 2003。BartPE就是使用PE Builder製作的WinPE,可以透過外掛功能把一些程式、元件整合到系統,PE Builder無法直接支援正體中文,只能用外掛的方式補足。

XPE

XPE 其實是一套PE Builder的外掛,可以把XP的開始功能表、桌面、檔案總管、IE、Windows Media player、DirectX等等都整合到PE系統。使用PE Builder + 繁體中文外掛 + XPE plugin大概有300MB左右,在台灣很少有人自製和討論,過去最有名的正體中文版本就是2004年香港網友semson所做出來的 「Semson’s WinPE 3.0 繁體中文版」,再來就是「Hiko’s Windows PE」,不過後來這兩位作者都沒有繼續更新,加上硬體的演變,導致支援度也降低,漸漸被遺忘了。

下圖為2004年左右網路上所流傳的Semson’s WinPE桌面圖片

圖二.JPG (158.17 KB, 下載次數: 502)

下載附件

2012-3-9 12:00 上傳

NoName XPE的誕生過程

當 初本人是因為工作的需求,當時工作內容一天平均大概有10台電腦要進行組裝,並且安裝OEM版本的Windows。而用正常方式安裝Windows少說也 要花個30-40分鐘,相當費時費力。(客戶以DIY組裝電腦為主,各式各樣的主機板都有,所以不可能也沒時間把每一款的電腦都事先做好Ghost備 份。)所以剛開始是在研究萬用Ghost XP映像檔,以簡化縮短工作的上所碰到的難題。

萬用Ghost XP就是一個可以Ghost還原到市面的任合一種主機板,然後可以正常運作的映像檔,大大縮短安裝Windows的時間,不過這邊就不再說明萬用Ghost XP映像檔,因為今天主要是要介紹XPE這個工具。

回到今天的主題,當時雖然說已經成功製作出萬用Ghost XP映像檔這個工具,但是又遇到一個難題,要如何把這映像檔快速,方便的還原到電腦上呢?這就是一開始所說的傳統DOS工具片的難題。

PE進化版

當我開始尋找有沒有更適合又方便的工具軟體。時間在2006年10月左右,無意中在大陸網站上面,找到了一種叫做XPE的工具讓我震驚不已,這個XPE跟我之前所碰到的Semson’s WinPE 3.0或是Hiko’s Windows PE 完全不一樣。

這類型的PE不僅僅是體積小,開機快速,也支援各類型主機板的SATA RAID晶片組。當然最重要的是,在XPE的環境下,可以讓各種外接裝置跑USB 2.0的速度,當時想得知更多關於XPE的資訊,儘管我用盡心力翻遍國內各大正體論壇的文章,不過很遺憾的是,我在網路上、各大論壇裡,一點都沒有關於正 體XPE的相關資訊,因為當時XPE對於從事資訊行業的我,是個相當好的一種 「工具」(至於是哪種工具,那要看你如何去應用他嚕。)所以內心充滿了無比的衝動和熱血,決定自行製作正體中文的版本。歷經7個月時間的挑戰,在網路上眾 多網友的協助和測試下,在2007年5月4號,第一個繁體中文版本的XPE就誕生了,命名為NoName XPE。而目前網路最新穩定版本為08/03/17的版本,這就是繁體中文NoName XPE的由來。

NoName XPE開機演示

NoName XPE從光碟開機後,會把系統核心檔案載入RAMDisk內。

圖三.JPG (29.63 KB, 下載次數: 509)

下載附件

2012-3-9 12:35 上傳

系統檔案載入RAMDisk後,在這個畫面可以選擇是否載入額外的第三方驅動。

圖四.JPG (48.89 KB, 下載次數: 508)

下載附件

2012-3-9 12:36 上傳

之後就會出現微軟的國旗。

圖五.JPG (55.91 KB, 下載次數: 471)

下載附件

2012-3-9 12:36 上傳

NoName XPE的logo,此階段會進行系統設定跟解壓縮XPE需要的檔案。

圖六.JPG (60.25 KB, 下載次數: 490)

下載附件

2012-3-9 12:36 上傳

登入系統進入桌面的畫面。

圖七.JPG (203.62 KB, 下載次數: 501)

下載附件

2012-3-9 12:36 上傳

PE光碟的開機奧祕

我想大家一定會對NoName XPE為什麼會比傳統的WinPE或是PE Builder做出來的PE體積小,而開機速度又快速的原因有興趣,我們就來介紹XPE的架構跟開機的原理,並且對照各類PE系統之間的差異。

WinPE的開機流程

2004-2005 年流傳在網路上的繁體中文PE,是利用PE Builder + XPE plugin + 正體中文plugin做出來的PE,開機初始化桌面的過程利用XPELOGON.EXE 和 XPEinit.EXE這2個小程式,以便載入EXPLORER.EXE作為Shell。但是也只能依照載入的plugin來定義PE能執行的工作或是軟 體,自由度也有一定的限制,再來是修改plugin也有一定難度就是了。如Semson’s WinPE 3.0、Hiko’s Windows PE等等都是這樣類型的PE。

關鍵字:Shell

簡單來說,我們可以把shell當做你看的到桌面、工具列、開始功能表、程式集等等的使用介面,底下我們會以「殼層」做為它的中文翻譯。

新版XPE的開機流程

NoName XPE也是PE Builder + XPE plugin + 繁體中文plugin,只是它的核心檔案有加以精簡,只留下開機必備的檔案,並做成光碟映像檔或是硬碟映像檔。NoName XPE啟動後會先把你的核心光碟映像檔或是硬碟映像檔載入記憶體內再啟動。開機初始化桌面的過程中是利用PECMD.EXE和PELOGON.EXE這2 個小程式,以達成加載EXPLORER.EXE作為shell。而利用PECMD.EXE和PELOGON.EXE初始化桌面的過程比利用 XPELOGON.EXE和XPEinit.EXE的速度更快。你也可以利用PECMD.EXE的指令,簡單又自由的定義出想做的任務。

為什麼會變快?

這 邊所謂核心的精簡,是說NoName XPE核心檔案只包含開機必備的檔案,把其他跟開機流程不相關的網路、音效、MMC等組件挪出系統核心,用不到的檔案則精簡刪除,以達到縮小核心體積的目 的。開機進桌面環境後,再看你的需求把其它組件解壓回系統內。核心組件經過精簡再配合RAMDisk方式啟動,就是NoName XPE能達到快速開機的原因。

而傳統WinPE或是PE Builder做出來的救援系統,包含接近完整XP的系統檔案,而且利用普通啟動的模式,速度也受限於光碟的傳輸速度而顯得緩慢,再來是因為進入PE的環境後,只要做任何動作都會讀取光碟機,讓程式執行速度降低。

由 於光碟的傳輸速率偏低,因此我們把PE的所有檔案製作成一個映像檔,然後將映像檔直接載入記憶體啟動,可想而知它的運行速度會有多快。一般來說是做成 ISO或IMG格式的映像檔,最後再執行CAB壓縮,映像檔的容量就可以控制得很好了。這也是NoName XPE為什麼這麼小的原因之一,因為它經過壓縮。但載入記憶體時會自動解壓縮,因此這種方式啟動對記憶體的容量的要求就會變大,要正常使用NoName XPE建議至少要有256MB的記憶體。

深入傳統WinPE開機流程

接下來我們會先介紹NoName XPE開機後直到PECMD接手前的開機流程,再講解PECMD接手開機工作後直到進入桌面後的過程。首先為了讓大家更深入了解PE系統的啟動,所以先以微軟官方PE跟NoName XPE的啟動差異來說明。

微軟的Windows PE的開機流程與一般的Windows很接近(摘要自微軟網站):

1. 電腦的BIOS載入特定媒體的開機磁區,並將控制權交給Setupldr(一般的 Windows是交給ntldr)。

2. Setupldr載入並執行Ntdetect.com,後者會擷取基本的系統設定資訊,並將這些資訊儲存在HKLM\HARDWARE\DESCRIPTION。若以唯讀媒體開機,Windows PE 會將登錄資料庫的hive檔存到記憶體,以便應用程式寫入。

3. 接著 Setupldr 會以 Winpeoem.sif 載入適當的硬體抽象層(HAL)、系統登錄檔以及必要的開機驅動程式。載入完成後即準備環境執行核心,也就是 Ntoskrnl.exe。

4. 執行 Ntoskrnl.exe 並完成環境安裝之後,再將控制權交給「工作階段管理員」(Session Manager Subsystem,SMSS)。

5. SMSS 會載入其餘的登錄資料庫,並設定Win32子系統(Win32k.sys)執行環境及其各個處理程序。SMSS再載入Winlogon處理程序以建立使用 者工作階段,然後啟動服務和其他不重要裝置的驅動程式及 LSASS(Local Security Authority Subsystem Service)。

6. 接著 Windows PE 會執行 Winpeshl.exe,這個程式會執行「命令提示字元」(Cmd.exe)和 Startnet.cmd(可以當成是Windows PE的Autoexec.bat)。預設會以factory -winpe作為Startnet.cmd的參數,而這會根據以下順序執行 Winbom.ini裡的區段:

[WinPE.Net]

[DiskConfig]

[OEMRunOnce]

[OEMRun]

[WinPE](除了 Restart 之外)

[UpdateSystem]

位於 [WinPE] 的 Restart

7. 執行完 Startnet.cmd 之後,系統會停在命令提示字元,Windows PE的開機程序完成。

Startnet.cmd的預設參數為「factory -winpe」,我們也可以新增其他參數來自訂Windows PE開機程序。如果要結束Windows PE,只要在命令提示字元執行 「exit」即可。

微 軟官方的Windows PE是以「命令提示字元」(CMD.exe)為使用介面的。而最原始不加上XPE外掛所做出來的BartPE也是以「命令提示字元」(CMD.exe)為 使用介面,要是加上XPE外掛後,在開機流程的第6步驟,就會以XPELOGON.EXE和XPEinit.EXE接手,並用EXPLORER.EXE作 為shell,得到像XP一樣的桌面環境,這裡就不詳細描述BartPE的開機流程了。

========================================================================================================

詳解NoName XPE開機流程

看 完傳統PE的一些基本概念,在此以燒成光碟為例,詳細解說NoName XPE的開機流程,你就會發現跟兩者的差異在哪了。當NoName XPE光碟啟動時,開機程式會自動尋找光碟底下「\RXPE」資料夾的 「SETUPLDR.BIN」檔案,載入並且將控制權轉交給它。「SETUPLDR.BIN」則會在根目錄底下讀取「RXPE.SIF」檔的內容,確定是 載入光碟映像檔還是硬碟映像檔。

NoName XPE的RXPE.SIF檔內容

[SetupData]

BootDevice="ramdisk(0)"

BootPath="\RXPE\SYSTEM32\"

OsLoadOptions="/minint /fastdetect /rdpath=RXPE.IM_"

核心映像檔的讀取解壓

RXPE.SIF 的設定值會告訴SETUPLDR.BIN透過RAMDisk的方式加載硬碟映像檔,啟動後的系統路徑為「\RXPE」,對應的SYSTEM32目錄為 「\RXPE\SYSTEM32」,也就是相當於平常的「WINDOWS\SYSTEM32」,啟動的硬碟映像檔在「RXPE.IM_」裡面。 「RXPE.IM_」其實是CAB格式的壓縮檔,裡面是RXPE.IMG硬碟映像檔,由於SETUPLDR.BIN支援讀取CAB格式的檔案,所以能夠將 找到的映像檔從RXPE.IM_中解壓出來載入記憶體。

SETUPLDR.BIN的版本限制

這 裡的SETUPLDR.BIN必須是Windows Server 2003 SP1中的版本才行,因為從微軟Windows PE 2005/1.6(基於Windows Server 2003 SP1)才開始支援RAMDisk及USB隨身碟開機。要注意的是,雖然Windows XP Professional SP2和Windows Server 2003 SP1都能製作出Windows PE 1.6,但只有Windows Server 2003 SP1才能做出支援RAMDisk及USB隨身碟開機的Windows PE。而且SETUPLDR.BIN有自我校驗,還必須經過破解後才能夠使用。破解方法很簡單,用UltraEdit打開來編輯,找到十六進制地址 2060h的地方,將2060h~2061h 的74 03,修改成EB 1A,再儲存就好。

用UltraEdit開啟SETUPLDR.BIN的編輯畫面,將圖中的內容修改成「EB 1A」。

SETUPLDR破解法.JPG (209.33 KB, 下載次數: 513)

下載附件

2012-3-9 12:38 上傳

NoName XPE的SETUPLDR.BIN改過很多地方,所以它的資料夾和檔名結構,和傳統PE不太一樣:

傳統WinPE NoName XPE

Winnt.sif RXPE.SIF

系統資料夾:i386 系統資料夾:\RXPE

NTDETECT.COM RXPE.COM

交給PECMD接手開機流程

當 系統映像檔被解壓縮出來,並載入記憶體之後,緊接者會執行「Ntoskrnl.exe」繼續完成環境安裝,再來是將控制權交給「工作階段管理 員」(Session Manager Subsystem,SMSS)。SMSS會載入其餘的登錄資料庫,並設定Win32子系統(Win32k.sys)執行環境及其各個程序。SMSS再載 入PECMD.EXE跟 PELOGON.EXE程序以建立使用者工作階段,然後啟動服務和其他裝置的驅動程式及LSASS(Local Security Authority Subsystem Service)。

最後啟用登錄檔 「HKEY_LOCAL_MACHINE\SYSTEM\Setup」中的「CmdLine」;在NoName XPE的CmdLine項目是「PELOGON.EXE PECMD.EXE LOAD %SystemRoot%\SYSTEM32\PECMD.INI」,這可以讓使用者透過自訂的配置(PECMD.INI)來控制整個開機流程。

PECMD

下載位置 :

PECMD 的前身叫XCMD,是由大陸網友Yonsm所撰寫的,源碼有公開。而PECMD是大陸網友lxl1638以XCMD 2.0原有的17條命令為基礎,繼續修改完善的程式。XCMD跟PECMD的出現,是因為微軟的PE是用Winlogon;而BartPE加XPE外掛的 系統則是以XPELOGON進行登入。

XPELOGON講求嚴謹、安全和相容性,可以在登入和關機步驟表現出來,使用者只能按照指定的步驟做、或修改其中很小的部分,也可以說中規中矩。所以BartPE加XPE外掛程式的WinPE系統比較慢,但成功率較大,最多是啟動後的使用界面要再調整而已。

而PECMD講求自由和速度,可以透過自訂的配置文件來控制登入過程,並且自由配置系統跟速度。

PECMD接手後的開機流程

執行上一段「CmdLine」登錄值之後,PECMD會繼續執行PECMD.INI裡面的內容,我們會概略說明,執行過程中每一個「_SUB」到「_END」的工作在做什麼。另外底下我們將提到幾個指令的用途及內容,由於篇幅的限制,PECMD的詳細指令用法請參考其中「

附件三PECMD指令說明.txt

(69.28 KB, 下載次數: 1469)

2012-3-9 13:12 上傳

點擊文件名下載附件

附件三

」的說明。

對照本文參考資料「

附表一pecmd.ini

(6.73 KB, 下載次數: 1422)

2012-3-9 13:12 上傳

點擊文件名下載附件

附件一

」的PECMD.INI內容,PECMD會由上往下逐行去找PECMD.INI定義的指令,不過會先跳過含有「_SUB」到「_END」區段的部份。

跳過之後第一個執行的指令就是「CALL Start_Logon」

它在PECMD.EXE裡的定義是:

找尋名稱為Start_Logon的_SUB段落,然後執行區段裡的內容

因此第一個執行的區段內容就是:

_SUB Start_Logon

TEAM LOGO %SystemRoot%\LOGO.JPG|WAIT 500|TEXT 正在設定系統……請稍待…… #0xFF0000,L18,T562,R500,B590

TEAM FILE %SystemRoot%\system32\drivers\*.SY_|%SystemRoot%\system32\NTOSKRNL.EX_|FILE %SystemRoot%\system32\SetupReg.HIV|FILE %SystemRoot%\system32\BOOTVID.DLL|FILE %SystemRoot%\system32\KDCOM.DLL

INIT

_END

而NoName XPE開機流程由PECMD接手後,依序會執行:

CALL Start_Logon ===> LOAD \OUTTOOL\OUTPECMD.INI ===> CALL FixSystem ===>

CALL Created_System_Menu ===>CALL Setting_Run ===>CALL Setting_SHELL

這裡我們先挑比較重要的指令解說。在Start_Logon裡最重要的就是INIT指令,它的功用是註冊Windows殼層,初始化使用者資料夾和環境變量,

並建立以下資料夾:

資料夾名稱 對應的目錄位置

Desktop(桌面資料夾) X:\RXPE\user\Default\桌面

Favorites(我的最愛資料夾) X:\RXPE\user\Default\我的最愛

Personal(我的文件資料夾) X:\RXPE\user\Default\My Documents

Programs(程式集資料夾) X:\RXPE\user\Default\「開始」功能表\程式集

QuickLaunch(快速啟動資料夾) X:\RXPE\user\Default\Application Data\Microsoft\Internet Explorer\Quick Launch

SendTo(發送到資料夾) X:\RXPE\user\Default\SendTo

StartMenu(開始功能表資料夾) X:\RXPE\user\Default\「開始」功能表

Startup(啟動選單資料夾) X:\RXPE\user\Default\「開始」功能表\程式集\Startup記住代表每個資料夾的環境變量,

就是在附表當中的資料夾名稱前後加上「%」號,例如「%Desktop%」。在INIT指令執行後,我們就可以使用這些環境變量搭配其它PECMD的指令,輕鬆做到各種功能。

載入外掛程式設定檔

在Start_Logon之後,緊接著執行的是「LOAD \OUTTOOL\OUTPECMD.INI」,LAOD指令的用法是:

LOAD <文件路徑>

前 面的PECMD.INI也是以LOAD指令載入的設定檔。它定義每個指令單獨一行,主流程的命令會按照順序執行。不正確的命令或空行則忽略不計。LOAD 支援ANSI和UNICODE格式的文字設定檔,建議使用UNICODE。設定檔可加入整行註解或行後的註解,建議用「`」做為註解符號。(鍵盤左上角 Esc鍵下面的符號)在設定檔中,可以使用環境變量「%CurDrv%」表示目前的磁碟機代號。如果檔案路徑第1個字元是「\」,就會搜尋所有分割區裡指 定目錄中的檔案。

所以在執行「LOAD \OUTTOOL\OUTPECMD.INI」之後,從某個磁碟機裡的OUTTOOL資料夾找到OUTPECMD.INI,該磁碟機代號就可以用環境變量 「%CurDrv%」來代替了。因為每部電腦的磁碟機代號都不同,不管光碟機是叫D還是E,都可以靠這個做法找到。

接下來就是執行OUTPECMD.INI了,檔案內容請對照參考資料的「

附表二OUTPECMD.INI

(3.41 KB, 下載次數: 1390)

2012-3-9 13:11 上傳

點擊文件名下載附件

附件二

」,它執行的流程是:

CALL Setting ===> CALL Setting_Run ===> CALL Created_Tools_Menu ===> CALL Set_HotKey ===>CALL NEW_MOD

用WIM檔安裝程式

這裡特別介紹NoName XPE所使用的一個新技術,就是以微軟的WIM映像檔格式,再搭配網友們的意見所設計的軟體模組化安裝方式。這可以讓玩家自行修改軟體WIM檔,自訂符合不同需求的維修工具。

在「OUTPECMD.INI」檔的「Setting」和「Setting_Run」區段裡有以下的指令:

Setting區段的內容

EXEC !=%CURDRV%\OUTTOOL\WIMMOD.CMD

透過PECMD內建的EXEC指令,執行「%CURDRV%\OUTTOOL」目錄下的WIMMOD.CMD。

WIMMOD.CMD的內容

FOR /F "delims=" %%i IN ('dir /b/s WIMMOD\*.wim') Do (

MD "%SYSTEMROOT%\WIMMOD\%%~ni"

WimTool /Mount "%%i" "1" "%SYSTEMROOT%\WIMMOD\%%~ni"

)1:判斷WIMMOD資料夾內有哪些WIM檔案。

2:在X:\RXPE\WIMMOD依照搜尋到的WIM檔名來建立對應的資料夾。

3:利用WimTool這個小程式來掛載WIMMOD裡的WIM檔,到XPE系統目錄下的WIMMOD資料夾。

Setting_Run區段的內容

_SUB Setting_run

TEXT 系統設定中……

EXEC !=OUTTOOL.CMD

LOAD %WINDIR%\OUTTOOL.INI

_END

OUTTOOL.CMD指令內容

FOR /F "delims=" %%i IN ('dir /b/s %windir%\WIMMOD\outtool.ini') Do echo LOAD %%i >> %windir%\outtool.ini找出「X:\RXPE\WIMMOD」資料夾內和子資料夾內的所有outtool.ini檔案,輸出到「X:\RXPE\outtool.ini」。

執行完以上的指令,最後用LOAD指令呼叫設定檔:

LOAD %WINDIR%\OUTTOOL.INI就可以做到軟體模組化了。有興趣製作軟體WIM檔的網友,依照XPE光碟設定的規則製作,可以很輕易的和其它人分享你自製的WIM檔。

掛載WIM檔好處多

自製WIM檔的方法有很多,透過WimTool.EXE是其中一種,這是大陸網友基於WIMGAPI SDK開發的Win32程式,有圖形化介面,也支援命令列的參數。WIM映像檔除了能把軟體包成一個WIM檔,還可以啟用壓縮,大幅縮減映像檔的大小。

而 在WIM檔的掛載步驟完成後,OUTPECMD.INI會判斷你的記憶體夠不夠,再按照需要設定虛擬分頁檔。

接下來Setting_Run區段會進行必要 的系統設定、檔案解壓;再到Created_Tools_Menu建立程式集的捷徑;

NEW_MOD區段則會判斷是否有模組化的檔案……。

OUTPECMD.INI 執行完畢,就返回PECMD.INI的流程,

「CALL FixSystem」會修正一些驅動的路徑;

「CALL Created_System_Menu」註冊桌面;

「CALL Setting_Run」則是破解PE系統24小時會重開機、和只能開啟5個程式的限制;

最後由「CALL Setting_SHELL」載入桌面。

Tips:這裡的PECMD.INI跟OUTPECMD.INI的開機、呼叫流程都可以自行制定、增減,未必要照著我們的方法做。

外接裝置的開機要領

除 了透過光碟開機,大家應該也會想嘗試把PE系統裝進隨身碟或外接硬碟裡。其中USB隨身碟的PE系統並沒有統一的作法,因為目前市面上的主機板對USB開 機缺乏統一的標準,不同的BIOS使用隨身碟開機時,對同一支隨身碟的柱面、磁頭和扇區數(簡稱CHS)等容量參數的識別法各不相同,在某個電腦上成功開 機的隨身碟,到了另一部機器就有可能開不了。想製作一個萬用的緊急開機隨身碟,幾乎是不可能的。

不過在筆者測試的經驗當中,USB外接硬碟在各種BIOS中的CHS倒是一致的,也就是說,製作可開機的外接硬碟,會比較容易成功。

另外隨身碟在DOS底下只能跑USB 1.0的速度,某些BIOS可以達到USB 1.1的傳輸速度,而以USB隨身碟安裝NoName XPE,從開機到載入RAMDisk映像檔前的速度都是以BIOS為準的。

目前已知AMI BIOS(華碩主機板使用)支援到USB 1.1的速度,而Award BIOS(技嘉主機板使用)則是USB 1.0。在某些電腦搭配特定的USB XPE,從開機到進入桌面的時間需要10分鐘左右,在不同的環境下,只要花40秒就可以進入桌面了。

因此有了在DOS下先載入USB 2.0驅動,再執行XPE的概念。這種模式可以讓某些BIOS只支援USB Low Speed的主機板,能夠快速載入RAMDisk進入XPE。不過很可惜目前並沒有DOS下的萬用USB 2.0驅動,而相容性最高的驅動是Panasonic的「usbaspi.sys」。

我們用一張BIOS只支援USB Low Speed的主機板測試,當usbaspi.sys驅動成功載入時,不到一秒就可以載入RAMDisk映像檔(原本需要10分鐘)。不過很奇特的 是,BIOS支援Full Speed的主機板,載入usbaspi.sys幾乎都會當機失敗。在NoName XPE已經做好加掛或不掛USB 2.0驅動的選項,實際上該選哪一個比較好,就得自己開機測試了。

其他關於USB開機說明和USB XPE簡易製作方法請參考下面連結文章的教學