製作WinPE開機碟USB Drive, 包含簡易版與進階版修改WinPE內容

入門製作: WINPE開機的USB隨身碟

建立 Windows PE (WinPE) 可開機 USB 快閃磁碟機或外接式 USB 硬碟。MSDN原廠的說明: https://msdn.microsoft.com/zh-tw/library/hh825109.aspx

1. 先安裝 Windows ADK

透過從 Windows 評定及部署套件 (Windows ADK) 安裝下列功能:
– 部署工具:包含 [部署與映像工具環境]。
– Windows 預先安裝環境 :包含用來安裝 Windows PE 的檔案

2. 開始安裝 Windows PE

進去Start[開始] –> All apps[所有程式] –> Windows Driver Kits ->
以 [系統管理員] 身分開啟 [部署與映像工具環境]。(Deployment and Imaging Tools Environment as an administrator)

step1:建立 Windows PE 檔案的工作複本。可指定 x86、amd64 或 arm:

  • //64位元版本:可將64位元UEFI、64位元BIOS電腦開機
    • copype amd64 C:\WinPE_amd64
  • //32位元版本:可將 32 位元 UEFI、32位元和64位元BIOS電腦開機
    • copype x86 C:\WinPE_x86

step2:將 Windows PE 安裝到 USB 快閃磁碟機,指定磁碟機代號:(根據USB碟的字母代號調整)
MakeWinPEMedia /UFD C:\WinPE_amd64 E:

3. 將此WINPE隨身碟插入另一電腦, 開機到 Windows PE

將 USB 裝置連接到您要使用的電腦。
啟動電腦,然後按下開啟韌體開機功能表的按鍵。選取 USB 磁碟機。Windows PE 會自動啟動。
出現命令視窗後,會執行 wpeinit 命令,此命令會設定系統。這可能需要數分鐘。

4. 常見的疑難排解

如果沒有出現 Windows PE,請嘗試下列解決方法,並在每次嘗試之後重新啟動電腦:

  • 如果不能辨識 copype 命令,請確定您是從 [部署與映像工具環境] (它是 Windows ADK 的一部分) 執行命令。
  • 若要啟動支援 UEFI 模式的電腦,在韌體開機功能表中,試著手動選取開機檔案:\EFI\BOOT\BOOTX64.EFI。
  • 嘗試不同的 USB 連結埠。避免使用集線器或纜線。
  • 如果韌體不包含對 USB 3.0 的原生支援,請避免使用 USB 3.0 連接埠。
  • 清理 USB 快閃磁碟機,然後重新安裝 Windows PE。這有助於移除額外的開機磁碟分割或其他開機軟體。
    透過以下指令清理 USB 快閃磁碟機,然後重新安裝 Windows PE。
  • 嘗試改從 DVD 啟動 Windows PE。建立可以燒錄至 DVD 的 ISO 檔案:

    透過以下指令產生WINPE 的 ISO 檔案
    MakeWinPEMedia /ISO C:\winpe_amd64 c:\winpe_amd64\winpe.iso

    在檔案總管中,瀏覽至 C:\winpe_amd64,在 winpe.iso 上按一下滑鼠右鍵,然後選取 [燒錄至光碟]。
    遵循提示建立 DVD。

進階製作:手動調整的WinPE內容

以上如果都完成了, 就可以接著試試進階內容, 參考自MSDN說明:(WinPE 掛接和自訂)

1. 掛接 Windows PE 開機映像

Dism /Mount-Image /ImageFile:”C:\WinPE_amd64\media\sources\boot.wim” /index:1 /MountDir:”C:\WinPE_amd64\mount”

執行後就會把boot.wim的內容掛載(mount)到C:\WinPE_amd64\mount
如下:

2. 新增修改自訂內容

  1. 新增裝置驅動程式 (.inf 檔案) 。
    • 您可以自訂裝置驅動程式,像是支援網路介面卡或存放裝置的驅動程式。如需詳細資訊,請參閱 WinPE:新增驅動程式。
    • 1) 將裝置驅動程式新增至 Windows PE 映像。
      Dism /Add-Driver /Image:”C:\WinPE_amd64\mount” /Driver:”C:\SampleDriver\driver.inf”
      2) 確認驅動程式套件是映像的一部分:
      Dism /Get-Drivers /Image:”C:\WinPE_amd64\mount”
      檢查產生的驅動程式清單,確認清單包含您新增的驅動程式套件。

  2. 新增選用元件 (套件或 .cab 檔案) 。
    • 您可以新增功能到 Windows PE,例如,語言、Hotfix、以及對 PowerShell 和 HTML 應用程式語言 (HTA) 等功能的支援。在 Windows PE 中,功能套件又稱為選用元件。如需詳細資訊,請參閱 WinPE:新增套件 (選用元件參考)
    • #語言#:安裝每個選用元件時,您必須先安裝非語言相關選用元件,然後再安裝特定語言選用元件。必要語言資源的版本必須與非語言相關資源的版本相同。語言資源位於資料夾中,該資料夾與安裝在選用元件目錄中的語言名稱相同。

      #重要#:有些選用元件具有必須按順序安裝的先決條件。

      1) 將選用元件新增到 Windows PE。
      如果要新增選用元件,您需要同時新增選用元件及其相關的語言套件。(路徑需根據自己電腦作調整)
      Dism /Add-Package /Image:”C:\WinPE_amd64\mount” /PackagePath:”C:\Program Files\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-HTA.cab”

      Dism /Add-Package /Image:”C:\WinPE_amd64\mount” /PackagePath:”C:\Program Files\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-HTA_en-us.cab”

      2) 確認選用元件是映像的一部分:
      Dism /Get-Packages /Image:”C:\WinPE_amd64\mount”
      檢查產生的套件清單,確認清單包含選用元件及其關聯的語言套件。

  3. 新增語言 。
  4. 新增啟動指令碼 。
    • 範例包含設定網路連線,或者新增自訂應用程式,例如診斷軟體。
    • 修改 Startnet.cmd 指令碼以包含您的自訂命令。此檔案位於 C:\WinPE_amd64\mount\Windows\System32\Startnet.cmd。
      您也可以從此檔案呼叫其他批次檔或命令列指令碼。
      針對隨插即用或網路功能支援,請確定您在自訂 Startnet.cmd 指令碼中包含對 wpeinit 的呼叫
    • ### 補充引用文章: iInfo 資訊交流 – Winpe啟動過程 ###

      Windows PE 的啟動過程如下。
      1) 載入特定媒體上的開機磁區。將控制傳遞給 Bootmgr。
      – Bootmgr 從啟動配置資料 (BCD) 中提取基本的啟動資訊,並將控制權傳遞給 Boot.wim 中包含的 Winload.exe 文件。
      – 然後 Winload.exe 載入相應的硬體抽象層 (HAL),並載入系統登錄配置單元和必需的啟動驅動程式。
      – 完成載入後,將會準備執行內核 Ntoskrnl.exe 的環境。
      – 備註: 如果從唯讀媒體(例如 CD)啟動 Windows PE,則 Windows PE 將在記憶體中存儲註冊表配置單元,這樣應用程式就可以寫入註冊表。應用程式對註冊表所做的任何更改在不同的 Windows PE 會話間不會保持不變。

      2) 執行 Ntoskrnl.exe,完成環境設置。將控制權傳遞給會話管理器 (SMSS)。

      3) SMSS 載入註冊表的剩餘部分,配置運行 Win32 子系統 (Win32k.sys) 的環境及其各種進程。SMSS 載入用於創建使用者會話的 Winlogon 進程,然後啟動服務和剩餘的非必要設備驅動程式及安全子系統 (LSASS)。


      4) Winlogon.exe 根據註冊表值 HKLM\SYSTEM\Setup\CmdLine 來運行設置。
      – 如果存在 %SYSTEMDRIVE%\sources\setup.exe,則 Winpeshl.exe 將啟動它,否則 Winpeshl.exe 將查找在 %SYSTEMROOT%\system32\winpeshl.ini 中指定的應用程式。
      – 如果未指定任何應用程式,則 Winpeshl.exe 將執行 cmd /k %SYSTEMROOT%\system32\startnet.cmd。預設情況下,Windows PE 包含一個將啟動 Wpeinit.exe 的 Startnet.cmd 文件。Wpeinit.exe 載入網路資源,並與網路元件(如 DHCP)進行協調。

      5) Wpeinit.exe 完成後,將顯示命令提示視窗。此時,Windows PE 的啟動過程已完成。
      Winpeshl.ini 可控制是將自訂外殼程式載入到 Windows(R) PE,還是載入到默認的“命令提示符”視窗。若要載入自訂外殼程式,請創建一個名為 Winpeshl.ini 的文件,然後將它放在自訂 Windows PE 映射的 %SYSTEMROOT%\System32 中。

      #MSDN說明:Winpeshl.ini 參考#
      使用 Windows 預先安裝環境 (Windows PE) 中的 Winpeshl.ini 檔案,以殼層應用程式或其他應用程式取代預設命令提示字元。

      #該 Winpeshl.ini 檔必須包含以下部分:#

      – 將 AppPath 項設置為外殼應用程式的路徑。可以使用完全限定路徑,也可以使用環境變數(例如%SYSTEMROOT%\System32\Myshell.exe)。AppPath 項不支援命令列選項。
      – 使用 [LaunchApps] 部分運行帶命令列選項的應用程式。應用程式按照列出的順序運行。應用程式的名稱與其選項之間以逗號分隔。

      #重要事項#
      – 當退出“命令提示符”視窗或自訂外殼應用程式時,Windows PE 將重新開機。
      – 不要編輯 Setupreg.hiv 的 HKEY_LOCAL_MACHINE\SYSTEM\Setup 註冊表項中的 CmdLine 值來啟動外殼應用程式。CmdLine 的值可調用 Winpeshl.exe,Winpeshl.exe 會執行很多函數,包括調用 Windows PE 中的預設“命令提示符”視窗或您的自訂外殼應用程式。

  5. 新增應用程式 。
    • 請注意,Windows PE 只支援舊版應用程式。

      1) 在掛接的 Windows PE 映像內建立應用程式目錄。
      md “C:\WinPE_amd64\mount\windows\”
      2) 將必要的應用程式檔案複製到本機 Windows PE 目錄。
      Xcopy C:\ “C:\WinPE_amd64\mount\windows\”
      3) 啟動 Windows PE 並從 X: 目錄執行應用程式,之後測試應用程式。
      X:\Windows\System32> X:\Windows\

      如果應用程式需要暫時存放區,或 Windows PE 在執行應用程式時變得沒有回應,您可能需要增加配置給 Windows PE 的暫時存放區 (臨時空間) 的數量。

  6. 新增暫時存放區 (臨時空間) 。
    • 如果您的應用程式需要暫存檔存放區,可以在 RAM 中保留額外的記憶體空間。
    • 1) Windows PE 會在 X: 磁碟機上保留記憶體,用來解壓縮 Windows PE 檔案,加上額外的暫存檔存放區 (稱為臨時空間),可供您的應用程式使用。

      根據預設,超過 1 GB RAM 的電腦的臨時空間為 512 MB,其他則為 32 MB。有效值為 32、64、128、256 或 512:
      Dism /Set-ScratchSpace:128 /Image:”C:\WinPE_amd64\mount”

  7. 取代背景影像
    • 如果您有多個版本的 Windows PE,可以設定背景影像,以便立即辨別正在執行的 Windows PE 版本。

      變更 Windows PE 背景影像檔 (\windows\system32\winpe.jpg) 的安全性權限。這可讓您修改或刪除檔案。
      1) 在 Windows 檔案總管中,瀏覽到 C:\WinPE_amd64\mount\windows\system32。
      2) 在 C:\WinPE_amd64\mount\windows\system32\winpe.jpg 檔案按一下滑鼠右鍵,依序選取 [內容] > [安全性] 索引標籤 > [進階]。

      3) 在 [擁有者] 旁邊選取 [變更]。將擁有者變更為 [系統管理員]。
      套用變更,然後結束 [內容] 視窗以儲存變更。

      4) 在 C:\WinPE_amd64\mount\windows\system32\winpe.jpg 檔案按一下滑鼠右鍵,依序選取 [內容] > [安全性] 索引標籤 > [進階]。

      5) 修改 [系統管理員] 的權限,允許完整存取權。套用變更,然後結束 [內容] 視窗以儲存變更。

      使用您自己的影像檔取代 winpe.jpg 檔案。

  8. 新增回應檔案設定
    • 有些 Windows PE 設定可以使用回應檔案加以管理,如防火牆、網路及顯示設定。
      – 建立回應檔案,將它命名為 unattend.xml,然後新增到 Windows PE 媒體的根目錄,以便處理這些設定。
      – 第一次執行 Windows PE (WinPE) 時,使用 Wpeinit 和 Startnet.cmd 執行啟動指令碼。Wpeinit 會將記錄檔訊息輸出至 c:\Windows\system32\wpeinit.log。

      Wpeinit 命令列選項範例:
      Wpeinit –unattend:”C:\Unattend-PE.xml”

      如需詳細資訊,請參閱 Wpeinit 和 Startnet.cmd:使用 WinPE 啟動指令碼

3. 卸載 Windows PE 映像和建立媒體

3.1 卸載 Windows PE 映像。
Dism /Unmount-Image /MountDir:”C:\WinPE_amd64\mount” /commit

3.2 建立可開機媒體,例如 USB 快閃磁碟機。
MakeWinPEMedia /UFD C:\WinPE_amd64 F:

3.3 啟動媒體。
Windows PE 會自動啟動。Windows PE 視窗出現之後,會自動執行 wpeinit 命令。這可能需要數分鐘。驗證您的自訂。

列在後面:
Windows PE 如何運作

在〈製作WinPE開機碟USB Drive, 包含簡易版與進階版修改WinPE內容〉中有 4 則留言

  1. 易春木 文章作者回覆

    補充一下,
    新版的ADK不包含WINPE , 所以要裝Windows 評定及部署套件 (ADK) 部署工具和ADK WinPE 新增元件
    https://docs.microsoft.com/zh-tw/windows-hardware/manufacture/desktop/winpe-create-usb-bootable-drive

    另外, 如果要建立超過32Gb的winpe隨身碟
    官方建議是建立2GB的winpe槽(FAT32) + 大容量的image槽(NTFS)
    https://docs.microsoft.com/zh-tw/windows-hardware/manufacture/desktop/winpe–use-a-single-usb-key-for-winpe-and-a-wim-file—wim
    但我建立過程發生一些問題, 所以我自己索性用windows內建的disk manage的應用程式手動切割

    不然, 隨身碟太大超過FAT32支援的32GB
    format時會出現錯誤 DiskPart errorlevel -2147212243

發表迴響