Windows PE - Arch Linux 中文维基

跳至內容

# Windows PE

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Windows PE，最近一次同步於 2021-08-20，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

這篇文章或章節的翻譯質量不佳。

原因：翻譯已經過期，請閱讀英文頁面中的內容。（在 Prepare a bootable Windows PE ISO 中有較大修改。）（在 Talk:Windows PE# 中討論）

Windows PE 是 Windows 的輕量級版本，旨在用於安裝 Windows Vista 或更高版本的 Windows，或是用於系統維護。它完全運行在內存中，並可以從網絡啟動。本頁面描述了如何創建定製化的 Windows PE 鏡像文件（也可選擇發布在網絡上的），我們只需用到 Arch Linux 設備上的自由軟體包和微軟 Windows 自動安裝工具包（Microsoft's Windows Automated Installation Kit，簡稱 WAIK）。WAIK 可以免費下載，並且我們只需解壓其中的 `boot.wim` 文件，該文件包含了 Windows PE 的最初備份, 還有一些啟動文件。

警告：下載 Windows Automated Installation Kit 時, 您可能會受到其許可的約束，這會阻止您將 Windows PE 用作通用作業系統。

## 使用場合

通常，只能使用 Windows 計算機上的 Windows 自動安裝工具包 (WAIK) 創建 Windows PE 的映像。但是，也可以使用 (Arch) Linux 機器創建和修改 Windows PE 的映像，並可選擇將它們發布到網絡上以進行 PXE 引導。不使用 Windows 機器是可能的。在以下情況出現時，您可能想要這樣做：

- 您需要使用 Arch Linux 的伺服器從網絡安裝 Windows ，或者從網絡啟動 Windows PE 來進行系統管理。這樣做可能是因為您沒有基於 Windows 的伺服器，或者因為絕佳的安全性和可配置特性就是喜歡用 Linux 伺服器，又或是您因為別的原因已經擁有了一台 Linux 伺服器。
- 您需要在 Windows 環境下運行 Win32 應用程式，但您並沒有可用的 Windows 設備，也不想用 Wine 或者您的程序在 Wine 下沒有正確執行。

## 創建可啟動的 Windows PE 鏡像

安裝 wimlib包.

### 配置 Windows PE 鏡像

要啟動到命令提示符，請創建一個啟動腳本，該腳本將包含在下一步的可啟動映像中：

    start.cmd

    cmd.exe
    pause

`mkwinpeimg` 腳本支持使用 `--overlay` 選項對 Windows PE 進行進一步修改。 有關 `mkwinpeimg` 的更多信息，請參閱它的手冊頁。您可能希望這樣做以添加要在 Windows PE 中運行的 Windows 應用程式或者額外的驅動程序。(可以用 Windows PE 中的命令 `drvload` 加載所需的驅動程序).

### 獲取 Windows ISO 或 WAIK 鏡像

`mkwinpeimg` 可以從各種來源創建可啟動的 Windows PE ISO。您首先需要獲得：

- 選項 A （適用於 Windows 7 及更高版本）: Windows 安裝鏡像ISO文件。它可以在微軟網站上免費下載： Windows 10 ISO. 這是最簡單的方法。
- 選項 B: Windows自動安裝工具包鏡像 (WAIK) 文件。 對於 Windows Vista/7, 它可以在此處下載：一個單獨的 WAIK 發行版. 從 Windows 8 開始, WAIK 被重命名為 WADK 並通過 `adksetup.exe` 分發。

警告：確保根據您的實際需要選擇正確的目標架構: x86 (32 位) 或 x64 (64 位)。在 x64 版 Windows PE 上運行 x86 程序並沒有那麼簡單。

不同版本的 Windows 安裝介質包含不同版本的 Windows PE。Windows 版本和 Windows PE 版本之間的關係，請參考維基百科.

提示：也許可以使用 httpfs 來避免下載整個鏡像文件。Windows PE 只占其中的 118MB。

### 準備可啟動的 Windows PE ISO

成功獲取 Windows 安裝鏡像或者 WAIK/WADK 鏡像後，你需要掛載它。假設它叫做 `winimg.iso`:

    # mkdir /media/winimg
    # mount winimg.iso /media/winimg

使用 wimlib包 提供的 `mkwinpeimg` 腳本創建可啟動的 Windows PE ISO 文件 `winpe.iso`, 啟動腳本在上一節中已經創建:

選項 A: 源鏡像是 Windows 安裝介質

    $ mkwinpeimg --iso --windows-dir=/media/winimg --start-script=start.cmd winpe.iso

選項 B: 源鏡像是 WAIK/WADK

    $ mkwinpeimg --iso --waik-dir=/media/winimg --start-script=start.cmd winpe.iso

有關更多信息，請參閱 mkwinpeimg(1), 包含 `--overlay` 選項以把文件複製到鏡像中。

卸載源 ISO:

    # umount /media/winimg

### 為 UEFI 系統準備 Windows PE 啟動U盤

不幸的是，從 1.13.1-1 版的 wimlib包 開始，`mkwinpeimg` 無法構建可引導的 UEFI 系統，但是我們依然可以構建包含必要的 UEFI 啟動文件的 Windows 10 安裝 ISO。

警告：確保為 Windows ISO 映像（x86 或 x64）選擇了合適的體系結構。本指南僅在 x64 上進行過測試，即它使用 `/efi/boot/bootx64.efi`。能否以這種方式啟動 Windows 的 x86 映像尚不得而知。如果您可以測試，請更新此頁面。

在啟動盤上, 創建一個 GPT 分區表，其中包含一個類型為「EFI System」的 FAT32 分區。這可以通過 `cfdisk` 或 fdisk 交互式地完成，比如使用 fdisk :

    # fdisk /dev/sdX
    (fdisk) g  # 建立新的 GPT 分区表
    (fdisk) n  # 使用默认设置创建新分区
    (fdisk) t  # 修改分区类型
    (fdisk) 1  # 类型 1 表示 "EFI System Partition"
    (fdisk) w  # 保存并退出

然後把此分區格式化為 FAT32:

    # mkfs.vfat /dev/sdX1

掛載由 `mkwinpeimg` 創建的 `winpe.iso` 文件，掛載你的啟動盤, 複製以下內容:

    # mkdir /media/{winpe,usb}
    # mount winpe.iso /media/winpe
    # mount /dev/sdX1 /media/usb
    # cp -r /media/winpe/* /media/usb/

最後，掛載原始 Windows ISO 文件並複製 `efi` 中的所有文件:

    # mount winimg.iso /media/winimg
    # cp -r /media/winimg/efi /media/usb/

現在，你可以卸載所有 ISO 和啟動盤，你的啟動盤已經準備就緒。

注意：不需要 syslinux 或 grub magic。UEFI 固件會找到 FAT 分區並加載 Windows 提供的 `/efi/boot/bootx64.efi` 引導文件。

## 引導啟動 Windows PE

按照上一節所述創建可啟動的 Windows PE ISO (`winpe.iso`) 之後，你也許想通過如下幾種方式引導啟動 Windows PE 。

### 在虛擬機中

在虛擬機中運行 `winpe.iso` 作為 CD-ROM。確保分配了足夠的內存，絕對要大於 ISO 文件的大小，因為 Windows PE 是從內存啟動的。

### 使用啟動盤

如果你已經如前文所述為 UEFI 系統準備好了啟動盤，你只需從啟動盤啟動即可。啟動過程可能需要耗費一些時間（10至20秒是正常的，具體取決於啟動盤的讀取速度），因為加載程序需要把數據複製到內存中。

### 使用光碟

只需把 `winpe.iso` 燒錄到光碟上，就可以從該光碟啟動 Windows PE。

### 從網絡啟動

在 BIOS 系統中，Windows PE 可以從網絡啟動，通過 PXELINUX 和它的 MEMDISK 模塊。對於 UEFI 系統,可以使用 wimboot 和 iPXE。

安裝 syslinux包 和 tftp-hpa包。

複製需要的 PXELINUX 文件到 TFTP server 的根目錄。

    # rsync -aq /usr/lib/syslinux/bios/ /var/tftpboot/

把 `winpe.iso` 文件放進 TFTP server 的根目錄。

    # mv winpe.iso /var/tftpboot

創建 PXELINUX 的配置文件，類似這個:

    /var/tftpboot/pxelinux.cfg/default

    UI         menu.c32
    MENU TITLE Network Boot
    TIMEOUT    50

    LABEL      winpe
    MENU LABEL Boot Windows PE from network
    KERNEL     /memdisk
    INITRD     winpe.iso
    APPEND     iso raw

    LABEL      localboot
    MENU LABEL Boot from local disk
    LOCALBOOT  0

啟動 TFTP server.

配置你的 DHCP server (例如 Dhcpd 和 Dnsmasq)，用 Linux 伺服器的 IP 地址指向作為引導文件的 `pxelinux.0`。注意：如果您的 DHCP 伺服器在路由器上，則可能無法在不安裝自定義固件的情況下執行此操作。

完成以上全部步驟後，你將能夠從網絡啟動 Windows PE 。

注意：根據上面給出的 PXELINUX 配置文件, Windows PE 將在 5 秒後默認啟動
提示：TFTP 並非為傳輸大文件而設計, `winpe.iso` 足足有 118MB 或更大，可能需要花費超過 30 秒的時間加載。使用 `gpxelinux.0` bootloader 而不是 `pxelinux.0`，使用 HTTP 而不是 TFTP 加載 `winpe.iso` 或許可以提高性能

## 從 Windows PE 安裝 Windows

啟動到 Windows PE 後，您可以從安裝介質安裝 Windows。

安裝介質可以是網絡共享 (Samba)。有關在區域網中的另一台機器上設置 Samba 伺服器的信息，請參閱 Samba。要分享掛載在 `/media/winimg` 的安裝鏡像，請加以下內容添加到 `/etc/samba/smb.conf`:

    /etc/samba/smb.conf

    [REMINST]
    browsable = true
    read only = no
    guest ok = yes
    path = /media/winimg

啟動到 Windows PE 命令提示符後，運行以下命令來初始化網絡接口，獲取 Samba 伺服器的 IP (假設 Windows PE 是從運行 DHCP、TFTP 和 Samba 伺服器的機器上通過 PXE 啟動的，伺服器 IP 通常也是網關 IP），掛載網絡共享，並運行圖形化安裝程序:

     > wpeinit
     > ipconfig
     > net use I: \\IP.ADDRESS.OF.SAMBA.SERVER\REMINST
     > I:\setup.exe

## 問題解決

### 出現系統錯誤 58，指定的伺服器無法執行請求的操作

如果你在執行 `net use` 命令時看到以下錯誤提示:

    System error 58 has occurred.

    The specified server cannot perform the requested operation.

1. 確保你沒有誤卸載 `/media/winimg` 文件夾.

2. 添加一個 `map to guest` 到 `/etc/samba/smb.conf` 文件中。即在文件開頭添加如下內容:

    /etc/samba/smb.conf

    [global]
    map to guest = Bad User
    ...

3. 重啟 `smbd.service`。

4. 使用命令在 net 中明指定任意一個用戶名和對應密碼:

    net use I: \\IP.ADDRESS.OF.SAMBA.SERVER\REMINST /user:user pass

發生這種情況，是因為 Windows 10 連接到匿名共享時，需要用一對用戶名和密碼檢查是否能夠登錄，如果可以，則允許匿名連接。顯然，只要有地方阻止用戶驗證是否可以登錄，就無法在 PE 系統中訪問 Samba 共享。

## 參閱

- 關於 Windows PE 的微軟文檔
- 另一篇有關在 Linux 上製作 Windows PE 鏡像的文章
- A guide with scripts for unattended installation of Windows 7 from Linux using Windows PE[失效連結 2022-09-23 ⓘ]
- Windows 10 PE Unable to map network drive anonymously

分類：​

- 系統管理
- 包含失效連結的頁面

隱藏分類：​

- 使用「模板:糟糕的翻譯」標記的頁面或章節

Windows PE
新增話題