繁體 Windows PE 3.0 (Windows 7 PE) 草擬及維修技術探討
(This legacy article is Chinese-only. Translate it to English.)
微軟(Microsoft)近期發布了針對 Windows 7 RTM 版本的 Windows OPK (OEM Preinstallation Kit) 與 AIK (Automated Installation Kit)。這些部署工具套件,連同 Windows 7 安裝光碟,均包含了最新的 Windows PE 3.0 核心 (相較於 Vista 的 2.0 版與 XP/2003 的 1.0-1.6 版)。本文將探討基於此新版本核心所建置的客製化部署環境 (Customized Windows PE)。
專案背景與實務應用
在 IT 維護與系統整合的實務工作中,擁有一套高效能的預先安裝環境 (PE) 至關重要。其主要應用場景包括:
- 硬體檢測與診斷: 在客戶現場進行故障排除時,例如驗證主機板內建網路卡的功能性,利用整合了完整驅動程式與瀏覽器 (如 Firefox) 的 PE 系統,可於 30 秒內完成啟動並進行網路連線測試。這能迅速釐清問題屬於軟體層面或硬體故障,大幅節省重新安裝作業系統的測試時間。
-
系統救援與修復:
針對無法啟動的 Windows 系統或檔案系統錯誤,支援 NTFS 讀寫的 PE 環境是必要的工具。
- 故障分析: 透過 BlueScreenView 等工具分析 Minidump,判斷藍屏 (BSOD) 成因(如 UNKNOWN_HARD_ERROR)。
- 磁碟修復: 執行 Check Disk (chkdsk) 指令以修復檔案系統邏輯錯誤。
- 啟動修復: 利用 Vista/7 核心內建的「啟動修復」功能自動偵測並修正開機設定資料 (BCD) 錯誤;針對舊版 XP 系統則可使用登錄檔還原工具。
- 存取權限重設: 當管理員密碼遺失導致系統鎖定時,可透過合規的密碼重設工具 (如 NTPWEdit 或 WindowsGate) 重置存取權限,以便進行維護。
-
跨平台系統部署 (異機還原):
在企業環境部署 Windows XP 或 Vista 時,常利用 Sysprep 結合 Ghost 映像檔進行大量部署。然而,將映像檔還原至不同晶片組 (例如從 Intel 平台轉移至 AMD 平台) 的電腦時,常因 IDE/AHCI 控制器驅動不匹配而導致藍屏 (0x0000007B)。
透過 Windows PE 引導,我們可以採取以下技術手段解決:- 離線登錄檔編輯: 載入目標系統的 SYSTEM Hive,手動注入 MergeIDE.reg (參考 Microsoft KB314082) 或根據硬體識別碼 (Hardware ID) 修改 CriticalDeviceDatabase 機碼。
- 處理器電源管理修正: 針對 Intel 至 AMD 的轉移,修改 `intelppm` 服務的 Start 值為 4 (停用) 以避免衝突。
- 驅動程式預先注入: 利用 Sysprep Driver Scanner 或 OfflineSysprep 等工具,在系統首次啟動前將新主機板的驅動程式 (如 USB、晶片組) 整合至目標系統,確保滑鼠鍵盤等周邊裝置在進入桌面後能即時運作。
- 軟體資產管理與序號救援: 在進行主機板更換或系統升級 (Sysprep) 前,若遺漏了原始的產品授權金鑰 (Product Key),可利用 Windows PE 搭配 Keyfinder 類型的稽核工具 (如 NirSoft ProduKey),直接從外部讀取 Windows 安裝目錄下的授權資訊,確保軟體資產的合法性與延續性。
為何選擇 Windows PE 3.0 (基於 Windows 7)?
相較於基於 XP 的 PE 1.x 或基於 DOS 的方案,選用 PE 3.0 的原因如下:
- 工具支援度: 支援最新版的「系統修復工具」及 BCDEdit (Boot Configuration Data 編輯器),這對於維護 Vista/Win7/Server 2008 架構的啟動區至關重要。
- 硬體相容性: 相比 DOS,Windows PE 對於現代化硬體 (SATA 控制器、USB 2.0/3.0、Gigabit 網路卡) 提供更完善的原生驅動支援。
- 擴充性: 能夠執行大多數 Win32 應用程式,並支援從 USB 隨身碟快速啟動,符合現代 IT 維護的主流趨勢 (Ghost Solution Suite 2.5 與 Hiren's Boot CD 新版均已轉向 PE 架構)。
專案功能規格需求 (Roadmap)
本專案旨在建立一個符合專業需求的可攜式維護平台,規劃功能如下:
- 可攜性與模組化: 設計為 USB 隨身碟啟動,結合 PStart (可攜式選單系統)。應用程式與 PE 核心分離,便於隨時更新維護工具。
- 動態選單整合: 啟動時自動掃描隨身碟配置檔,即時更新「開始功能表」捷徑。
- 資源最佳化:
- 將驅動程式與應用程式置於核心 WIM 映像檔之外,以降低開機記憶體佔用。
- 最低記憶體需求目標為 256MB (建議 512MB+)。
- 支援虛擬記憶體 (Pagefile) 設定,以應對低記憶體環境。
- 驅動程式支援: 整合 DriverPacks,涵蓋主流 Mass Storage Controller (大量儲存控制器) 與網路卡驅動,並支援外部驅動程式動態載入 (a-z:\driver),以適應未來新硬體。
- 安全性: 整合 PreLogonConfig 進行登入密碼保護,確保工具在公共環境下的使用安全。
- 多重開機管理: 透過 Grub4Dos 整合 Ultimate Boot CD 等其他維護工具。
- 部署彈性: 提供外置 WIM (USB 用) 與 內置 WIM (PXE 網路啟動/WinRE 取代用) 兩種版本。
- 在地化支援: 完整支援繁體中文顯示及輸入法 (倉頡、速成等)。
- 使用者介面 (Shell): 採用 BSExplorer 替代標準 Explorer,以提升效能並節省約 100MB 記憶體,並進行介面中文化。
- 整合維護工具集:
- 網路功能: Firefox, Opera, 遠端桌面 (RDP), VNC, Putty.
- 系統部署: Ghost, ImageX, OfflineSysprep.
- 資料救援: GetDataBack, Partition Find and Mount, TestDisk.
- 硬體診斷: HDDScan, Everest, Memtest.
- 系統管理: Registry Editor, ServicPE, Password Renew (管理者密碼重設).
- 檔案管理: 7-Zip, Free Commander.
(* 部分功能仍在開發測試階段)
Windows PE 3.0 的技術優勢
- 指令集更新: 新增 BCDBoot, DISM (Deployment Image Servicing and Management), 以及支援 VHD (虛擬硬碟) 掛載的 Diskpart 指令。
- 映像檔管理優化: 不再需要執行
peimg /prep指令,保留了更好的服務維護性 (Serviceability)。 - 原生功能增強: 內建對 PPPoE 連線的支援。
開發環境與所需工具
- Windows 7 繁體中文版 (作為來源與語系基礎)。
- Windows AIK (WAIK) 或 OEM Preinstallation Kit (OPK) - 提供 ImageX, DISM, Oscdimg 等核心工具。
- WinBuilder 及其 Win7PE 腳本專案 (整合 BSExplorer 介面)。
- 虛擬化軟體 (如 VMware Workstation) - 用於 ISO 測試與驗證。
- PXE Server 工具 (如 TFTPD32) - 用於測試網路啟動環境。
Windows PE 架構簡介
Windows PE (Preinstallation Environment) 是微軟開發的輕量級作業系統,其核心設計初衷是用於 Windows 的自動化安裝與部署 (透過 DVD 或 Windows Deployment Services)。
雖然官方版本的 PE 僅提供命令提示字元 (CMD) 介面,但透過社群與開發者的客製化 (如 BartPE, WinBuilder),可加入圖形化介面 (GUI)、驅動程式與第三方工具,使其轉變為強大的「系統救援光碟」。
技術特性與限制:
- 執行環境: 主要於記憶體 (RAMDisk) 中運行,關機後變更不會儲存 (Non-persistent)。
- 軟體相容性: 支援「可攜式」(Portable/Green) 軟體,但不支援標準的 MSI 安裝程序 (除非經過特殊封裝)。
- 多媒體限制: 預設不支援音訊輸出與硬體 3D 加速。
- 授權限制: Windows PE 是為了部署與維護而生,並非作為一般用途作業系統。早期版本設有 24 小時重啟限制,新版本則依循微軟授權協議使用。
本文所載內容僅供技術交流與學術研究用途,旨在展示 IT 系統部署、自動化維護與故障排除之技術能力。
- 合法授權:文中提及之作業系統映像檔與軟體工具,讀者應自行確保擁有合法之使用授權 (License),並遵守 Microsoft 及相關軟體廠商之授權協議 (EULA)。
- 維護用途:文中所述之工具(如密碼重設、金鑰讀取等)僅限於使用者擁有合法管理權限之設備維護使用,嚴禁將本文資訊用於任何非法入侵、惡意破解或未經授權之存取行為。
- 責任排除:若因不當使用本文資訊或工具而導致任何法律責任、系統損壞或資料遺失,概與本文作者無關。
歡迎利用以下方式儲存或分享本文:
wanderSick's 大大 ..
ReplyDelete期待 你的 繁體PE 教學 .. 好久了 ..
在網路上還真的 沒看到 介面這樣漂亮的..
感覺又很好用的PE 工具 ..
不知大大 可否提供我們這些無知的鄉民 一些知識 ... 或是 Wim file ...
閣下言重了。其實那個 PE (我叫 C7PE) 當時都大致上做好了(雖然有點小蟲),不過後來因為事忙而有心無力。另外,PE 的版權和發佈等的問題都很多,我唯有在安裝程式要求用者提供 Windows 7 的安裝光碟,而為免侵權只提供免費軟體,並提供方法讓用者自行加入商業軟體。
ReplyDelete見到你的留言,我都會著緊一些。這計劃在我時間表內的。謝謝。
哈 那我就繼續慢慢期待大大的下波分享了..
ReplyDelete我自己也有嘗試 做 Winpe ...
但是 開始列的 圖和顏色 ..
卻不知道 要從BsExplorer 何處改起 ..
加上 大大 列出的工作清單 ..
和自動更新 程式集 清單的 idea ..
還蠻令人想研究看看成品的作法的 ..
加油 .....
噢,那個相信你再找找都會找到辦法,不過趁我還未忘掉讓我直接告訴你好了。
ReplyDelete用 Resource Hacker 開啟 BSExplorer\commonbs.dll 檔案,例如修改 Bitmap\1104\1049 的圖檔 (我用 Photoshop ),那就成為左下角的「開始」。
謝謝你的留言鼓勵。
我錯刪了這則留言,十分抱歉。待會回覆你!
ReplyDeletepo han 已針對您的文章「繁體 Windows PE 3.0 (Windows 7 PE) 草擬及維修技術探討」留下新意見:
WanderSick's大大,
小的想請問有關pe在載入driver的問題,一般是只要inf跟sys檔兩個嗎?還有分別要mount到那個地方去以及如果是網卡,怎知有沒有通!不知是否可以用案列說明下,謝謝。
po han: 感謝你的查詢。你用的是哪一款 PE?
ReplyDeleteDriver 最低限度要有 inf 和 sys 檔 (但有時都不止的,例如 inf 內可能指定複製 dll 檔)。總之將那裝置的 driver 資料夾下的所有檔案和子資料夾抄走就準沒錯了。
Driver 載入到 PE 有不少方法,有內嵌的,有隨啟動偵測自動裝的,或啟動後手動裝的。
如果是網卡的話,用後者也可以,即是以 drvload 命令指定一個外來的 inf 檔。
通常太新的網卡就要這樣裝。檔案可以放在 USB 隨身碟。例如在 PE 開啟後輸入:
diskpart // 進入磁碟管理工具
lis vol // 找出那隨身碟的磁區代號,例如 f:
exit // 離開 diskpart
drvload "f:\lan\a.inf" // 安裝隨身碟下的 lan\a.inf (假設)
wpeutil InitializeNetwork // 起始網絡
這樣就完成。接著可以用一般命令如 ipconfig, ping 等等指令做測試。如 router 不是 DHCP 便需自定 IP,那則要用到艱深的 netsh。如想簡單點可以找找 PENetCfg、PE Network,這些都是有圖像介面,適合 PE 用的網絡工具,將他們放到隨身碟執行便可。如果隨身碟內有 Firefox (綠色版)也可以用來試上網。
註:
1. 以上方式只適用於有線網卡
2. 只適用於 PE 2.0 或以後,即 Vista PE 或 Windows 7 PE
3. 只適用來安裝一些不需用者回答的 driver
希望對你有點幫助。如不明白歡迎續問。(最好告知所用的 PE 版本等資料)
Dear wandersick,
ReplyDelete謝謝你的指導,目前照你的方法我的網路可以正常運作,另外想再請教有關你說的自動偵測安裝driver的方法,是只要把inf mount到windows\inf的目錄下嗎?我看了pe的說明檔"
Dism /image: /Add-Driver /Driver:c:\winpe_x86\mount\Windows\driver.inf
"不是很了這裡path_to_image是pe上的還是本機的,所以再請大大指點,謝謝。
另外我的pe是win7版的應該是3.0
正常運作那真好啊!謝謝告知。
ReplyDelete對。就是利用 DISM 離線模式將驅動程式裝到 PE。
/image: 後面要指向一個掛載了 PE 的資料夾 (不是本機),所以在使用前要先掛載 PE 的 boot.wim 檔案。
1. 假設我要把 U:\boot.wim 掛載到 "U:\mount" 資料夾 (執行前請先建立它)
dism /mount-wim /wimfile:"U:\boot.wim" /index:1 /mountdir:"U:\mount"
2. 這樣做以後,在執行其它 DISM 離線模式指令時就可以使用 /image: 指向 PE 所掛載的地方,例如現在我要用 /add-driver 將驅動程式 "U:\driver\lan.inf" 加到 PE 內。
dism /image:"U:\mount" /add-driver /driver:"U:\driver\lan.inf"
3. 最後以 /unmount-wim 把掛載了的 wim 卸載。完成。
dism /unmount-wim /mountdir:"U:\mount" /commit
4. 補充:如有很多驅動程式想加,可將步驟二中
/driver:"U:\driver\lan.inf"
改為
/driver:"U:\driver" /recurse
那樣就可以將 "U:\driver" 資料夾下所有 driver 都裝進去 PE。
這幾天我或會發佈一篇有關這主題的文章,到時可以留意一下。
有問題歡迎續問。
请问那里有的下载
ReplyDelete暫未能提供下載方式,抱歉。
ReplyDelete這真的很棒~~請問你沒有提到可以安裝在hd,作雙系統的話,如何設定在partition
ReplyDelete@ballgi 你好。有兩種方式可達成安裝 Windows PE 到本機硬碟,以下為兩個英文官方教學。若有甚麼不明白,下班後再補充~
ReplyDelete1) Walkthrough: Create a Bootable Windows PE RAM Disk on Hard Disk
第一種不解開 .wim,將 .wim 直接抄到 HDD,運行 PE 時在 RAM 實時解開和載入 .wim 內檔案 (這是一般 PE 運作的方式)。
2) Walkthrough: Boot Windows PE from Hard Disk
第二種從一開始就解開 .wim 內檔案到 HDD,由 HDD 運行 PE (這是一般作業系統運作的方式)。
設定好後如果想加 Windows PE 的選項到開機選單,需要動用 bcdedit 工具,可參考 2) 教程底部的指令,或需略作修改。EasyBCD (bcdedit 圖像版)或會簡單點。
其實 Windows 7 內置了「啟動修復選項」的 PE (C:\Recovery\...\WinRE.wim),開機時按 F8 就可進入。若透過這方式啟動硬碟上的 Windows PE (e.g. 置換這個檔案成其他類似 WinRE 的 PE),這似乎是最簡單的方法了。未必一定可以,下班後我試一試。
@ballgi 上次答得較匆忙,一直都很想更正一些內容,抱歉到今天才補完。
ReplyDelete承接較早的回覆。若將 Windows PE 2.x/3.0 跟硬碟本身的 Windows 7 作雙系統的話,最簡單是置換 Win7 本身內建的 PE 檔案,即 "C:\Recovery\...\WinRE.wim" (全寫:Windows Recovery Environment,即 [啟動修復選項] 功能的 wim 映像檔)。無需設定,不過進入 PE 的方式稍麻煩 -- 要在進入 Windows 前按 [F8],選擇 [修復你的電腦]。
另一方法就是新增 Windows PE 的選項到 BCD (Vista/7 的開機設定檔),以使到開機時出現內含 Windows 7 和 PE 選項的雙系統選單。這方式與上面的 [修復你的電腦] (WinRE) 功能沒有衝突,可同時存在。
不過上次說錯了,設定這個選單的 bcdedit 指令其實應該參考這篇「開機設定資料編輯器常見問題集」的最底:「如何建立一個項目,以便從硬碟將 WIM 映像開機」內的指令才對。
讓我們一起看看需要做甚麼。
材料:
1. 一個 Windows PE 2.x/3.0 wim 檔案
2. boot.sdi,這是跟 Ramdisk 有關的檔案
前提:
1. 以下 bcdedit 開頭的為所需輸入的指令。
2. 若有開 UAC,輸入指令前要以系統管理員身份執行命令提示字元。先按左下角的 Windows logo,在 Vista/7 的開始搜尋列內輸入 cmd,然後在出現的 cmd 項目上右擊滑鼠,選「以系統管理員身份執行」。
3. 如欲修改的 BCD 不是現在載入了的那個,要在每句 bcdedit 後加上 -store "X:\任何路徑\BCD" 指向那個 BCD 以作設定。
4. 在修改前請先備份 BCD,以防萬一 (重要!)
bcdedit /export "C:\BCD_Backup"
5. 若修改的 BCD 是來自 PE 而不是 Windows 7,則無需製作 {ramdiskoptions} 項目,直接跳到步驟 2 便可。
步驟 (官方版稍加修改和註解):
1a. 在 BCD 內建立 {ramdiskoptions} 項目,讓 PE 透過 Ramdisk (將 RAM 模擬當做硬碟) 方式開機:
(最後 /d "Ramdisk options" 可略則略,稍後解釋)
bcdedit /create {ramdiskoptions} /d "Ramdisk options"
1b. 指定 Ramdisk 開機檔 boot.sdi 所在磁區和路徑:
(假設放在 C:\boot\boot.sdi)
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
2. 新增 "Windows PE" 項目至「多重開機選單」:
(這是最後顯示的名稱。可隨意更名)
bcdedit /create /d "Windows PE" /application OSLOADER
3a. 將傳回的 GUID 值複製。在 [命令提示字元] 範圍內按滑鼠右鍵 → 標記 → 按下滑鼠左鍵拖拉以選擇要複製的範圍 → 按下 [ENTER] 鍵以複製到剪貼簿備用 (貼上的方法則是在 [命令提示字元] 黑色範圍內按滑鼠右鍵 → 貼上):
假設我們得到的 GUID 值是 {fabb3c99-7ff9-11df-a45f-08002700e42d}
3b. 現在將裝置設為 wim 檔位置 (假設我們放在 C:\boot\winpe.wim),並使用先前建立的 {ramdiskoptions}:
(device 和 osdevice 各要設定一次)
bcdedit /set {fabb3c99-7ff9-11df-a45f-08002700e42d} device ramdisk=[c:]\boot\winpe.wim,{ramdiskoptions}
bcdedit /set {fabb3c99-7ff9-11df-a45f-08002700e42d} osdevice ramdisk=[c:]\boot\winpe.wim,{ramdiskoptions}
3c. 設定 Windows 資料夾路徑:
bcdedit /set {fabb3c99-7ff9-11df-a45f-08002700e42d} systemroot \windows
3d. 指定 Windows 的開機程式 winload.exe 的位置:
bcdedit /set {fabb3c99-7ff9-11df-a45f-08002700e42d} path \windows\system32\winload.exe
4e. 由於目標是 Windows PE,要讓開機程式知道是 Windows PE:
bcdedit /set {GUID} winpe yes
4b. 動態調整硬體抽象層 (HAL - Hardware Abstraction Layer) 類型;detecthal 指定在開機時自動偵測要用單 CPU 或單核心還是雙 CPU 或雙核心 hal.dll
bcdedit /set {GUID} detecthal yes
5. 新增設定好的項目到開機選單:
(/addlast 將項目加在最尾)
bcdedit /displayorder {GUID} /addlast
~ 完 ~
註:若在步驟 1a 輸入了 /d "Ramdisk options",或會導致步驟 2 設定的 /d "Windows PE" 名稱不能正確顯示。解決方法是刪去前者:
bcdedit /deletevalue {ramdisktoptions} description
以上經小弟測試。若有問題歡迎提出。
wanderSick's 大大 ..
ReplyDelete可否告知如何讓WinPE-Win7 可讓USB Camera 預覽?
預設WinPE.wim 沒支援Image Device驅動程式(Ex: usbvideo.inf).
a) 如何加入 image device driver (usbvideo.inf)? 我沒有預設Win7 image device driver.
b) 是否要裝DirectX or DirectShow?
Thanks,
請教如何製作pure的Windows7 PE呢?
ReplyDelete@Eden 如何定義 pure (純)呢? 最原始的 PE 是經 WAIK/WOPK 內 CopyPE.cmd 指令製作,那 PE 的 shell (殼)是命令提示字元。如要其他功能,例如 GUI (e.g. 工作列、桌面圖示等),可透過修改 Windows\system32 下的 startnet.cmd 啟動 BSExplorer 之類的 shell。
ReplyDelete早前看不見留言,所以遲覆了。很抱歉...
@RS0 你好。
ReplyDeletea) 載入驅動程式可用 dism /add-driver (離線) 或 drvload (在線),不過因為 PE 是 minimal 版 Windows,它原來目的不是這個用途,所以除驅動程式外還可能要補回很多登錄機碼和檔案。這個需要深入研究一下。(例如用 Process Monitor、RegShot 工具觀察一下 Windows 7 在安裝 WebCam 時動用到的機碼和檔案)
b) 估計是需要的,否則影像播放會卡,但若將 DirectX 加到 PE,wim 會變得很大,那就不是小弟研究 PE 的目的了。PE 的用途是快速修復、維修電腦為主。有時在只有 256MB 的舊電腦,大一點的 Win7PE 都起動不了。
因早前看不見留言,所以遲覆了。很抱歉 >_<
@RS0 其實,為何想這樣做呢? 另外,使用綠色版的完整 Windows (而非 PE) 便可解決所有 PE 限制了。
ReplyDelete完整版 XP 可以從 USB 起動的,透過 USBoot。USBoot 的特式是「綠色」(萬用),支援多種起機方法,能從大部份電腦起動;支援建立 EWF (Enhanced Write Filter),將變更寫在記憶體而非硬碟,從而改善從 USB 隨身碟執行時的隨機寫入效能問題,關機前可選擇性地儲存變更。
完整 Windows 7 可透過 USB 硬碟起動 (Win7 應不支援 EWF,不能將變更儲存在 RAM,所以不建議用在寫入效能差的 USB 隨身碟上),但若要令它變做綠色版則好像未有像 USBoot 般的全自動工具,需要下一點功夫。(參考 1、2)
修正 2010年7月10日下午11:28,內容為「將 Windows PE 2.x/3.0 跟硬碟本身的 Windows 7 作雙系統」的回覆:
ReplyDelete錯誤一:回覆有些地方用了 {GUID},有些地方用了 {fabb3c99-7ff9-11df-a45f-08002700e42d},其實所指的是同樣的東西 -- 執行 bcdedit /create 後電腦回傳的 GUID 值。
錯誤二:回覆底部的命令 bcdedit /deletevalue {ramdisktoptions} description 中有項目拼錯了,{ramdisktoptions} 應為 {ramdiskoptions}。(ramdisk 和 options 之間沒有 t)
希望沒令你混淆 ^^
非常感謝,只是好困難ㄛ,請問可以提供載點嗎?
ReplyDelete