在安裝作業系統時最常見的方式就是透過 CD/DVD 開機並透過它為安裝媒體的來源,而這邊所說的 PXE (Preboot eXecution Environment) 則是透過網路卡開機的方式進行開機與安裝作業系統.
在網卡上有一塊 ROM (firmware) 裡面存放了一些基本的網路協定,透過這些協定使得 PXE 可以進行網路的存取,進一步取得網路上的資源.
- Internet Protocol (IP)
- User Datagram Protocol (UDP)
- Dynamic Host Configuration Protocol (DHCP)
- Trivial File Transfer Protocol (TFTP)
PXE 最主要透過 DHCP (使用 UDP) 和 TFTP, 兩個 Protocol 來進行網路資源的存取.
- 透過 DHCP 讓 PXE 獲得 IP 以及得知開機前導程式.
- 而 TFTP (由 WDS 提供) 則是讓 PXE 可以下載該前導程式.
只要具有 DHCP 和 tftp 服務的 OS 皆可以擔任此項工作.Linux PXE 請參考 https://benjr.tw/83
在 Windows 下可以透過 WDS (Windows Deployment Services) 來做,透過 WDS 的 PXE Boot 步驟如下:
測試環境為 Windows server 2016 x64 (虛擬機).
- BIOS / EFI 由 PXE boot ROM 開機.
- PXE boot ROM 的第一步就是透過 DHCP 取得 IP.
- DHCP Client 會從 TFTP 下載 PXEboot.n12 開始網路開機,並從 TFTP 下載 bootmgr.exe (UEFI 的檔案名稱則是 Bootmgfw.efi) 與 Boot\BCD (詳細關於 WDS 的 BCD 設定請參考 – https://benjr.tw/101425 )檔案.
- Bootmgr.exe 會依據 BCD 設定位置來下載 Windows PE 映像檔 Boot\boot.wim.也會依據 BCD 設定位置執行 \windows\system32\winload.exe 來啟動 Windows PE.
- 載入 Windows PE 後會執行 wpeinit.exe 來進行初始化.
- 如果 PXE ROM 無法完成上序的步驟,BIOS / EFI 就會依序啟動其他可以開機的裝置.
WDS 需搭配 DHCP 一起使用,設定 DHCP 需要先將網卡設定好固定 (Static) IP ,在 Control Panel\Network and Internet\Network and Sharing Center 可以設定 Static IPv4 與 v6,我的 IP 設定如下.
- IPv4 – 192.6.1.1/24
- IPv6 – 3ffe:501:ffff:100::1/64
詳細設定 DHCP 請參考 https://benjr.tw/94541,並確認 DHCP / Server options / Advanced – 060 PXEClient 有點選.
安裝 WDS
透過 Server Manager / Add roles and features / Role-based or feature-based installation 新增 Windows Depoloyment services
總共需要安裝 Deployment server 與 Transport Server
設定 WDS
Server Manager / Servers / Server Name 右鍵 選擇 Windows Depoloyment Services Management Console
進入 Windows Depoloyment Services 在所屬的 Servers 右鍵 Configure Server.
我沒有建立 AD (Active Directory) 所以選擇 Standalone Server 即可.
預設 Boot 與 Install Images 將會存放在這所指定的位置 c:\RemoteInstall
如果有警告訊息(不建議使用 C: 槽),選擇確認即可或是選擇其他硬碟槽.
Proxy DHCP Server – 我的 DHCP 與 WDS 皆在同一台 Server 上,所以勾選 Do not listen on DHCP or DHCPv6ports 與 Configure DHCP options or for proxy DHCP.
PXE Server Initial Settings – 我主要用途是在測試 PXE 功能所以勾選 Responed to all client computer(Knownn and unknown) .
設定好之後回到 Windows Depolyment services / Server 右鍵 All Task / Start 啟動服務.
設定 WDS
接下來就是匯入 Install Image 與 Boot Image, 透過右鍵來 Add Install Image (安裝檔案)與 Add Boot Image (開機檔案),這些檔案皆可以在皆 ISO 檔內的 Sources 資料夾可以找到,名稱分別為 Boot.wim 與 Install.wim .
WDS 細項設定
還有一些細項可以做設定,在 Server 右鍵選擇 Proprites .
Boot / PXE Boot Policy
WDS 的 PXE Boot 預設從 PXE 開機後還需要按 F12 確認後才會出現開機選單,可以在這邊選擇 Known clients / Unknown Clients – Always continue the PXE Boot 就不需要按 F12 了.
從 Default boot images(optional) 看起來 WDS 只有支援 x86 , ia64 , x64 , arm , x86(UEFI) , x64(UEFI) ,至於 ARM64 似乎要看 Windows 2019 有沒有支援了.
WDS Client PXE Boot
遇過的問題
在 Windows 2019 WDS+DHCP IPv6 PXE 時遇到以下的錯誤訊息,最後是在 Linux 環境下建立另外一個與 IPv6 位址分配相關服務 RADVD (Router Advertisement Daemon) ,詳情請參考 https://benjr.tw/94906 ,才沒出現錯誤訊息.
Wdsclient: There was a problem initializing WDS Mode