筆記如何建立一個PXE 和 HTTP Boot 的Server

先參考Ted哥的分享:

https://adersaytech.com/windowsos-tutorial/windows-deployment-service.html?fbclid=IwZXh0bgNhZW0CMTEAAR0HHHIrJSB3MphOVnR2BOyAbA9wwoiylNGpwo3FTJOf4igA1CjgD3JjUg8_aem_ZmFrZWR1bW15MTZieXRlcw

 

重點整理一下:

Windows Server 相對熟悉windows 介面的人,較簡單建立一個 PXE 或者 HTTP Boot的伺服器。

目前我做的測試 PXE IPv4/6 跟 HTTP IPv4/6 (有在BIOS給定URL) 都可以成功Boot。

而HTTP Boot有個設定是你可以決定你是否要再BIOS填寫Bootfile-Name (URL) ,現在我沒填寫URL的情況下只剩下IPv6沒成功Boot

但大概原因下面會分享。

 

而要架設伺服器流程很簡單

1. 安裝Windows Server (我目前使用的是2022版)

2. 安裝好後設定靜態IP。德叔文章有IPV4示範我就只示範IPV6 (我使用的是IPv4 192.168.1.1、 IPv6 2001:db8::1)

PXE HTTP Boot Server on Window

3. 安裝好DHCP跟WDS 跟設定好兩個feature,依照德叔的步驟應該很簡單。

4.記得關閉防火牆。 

 

我的測試手法是,Win Server的機器直接Lan port 與 Client 端對接。

這樣可以省去要架設DNS跟Router設定上的麻煩。

基本上,只要設定好DHCP 跟 WDS 就差不多了,不過我在做測試的時候還是不太順利。

後來加入某接設定後,就可以很穩定的作PXE 跟 HTTP Boot了。

 

** 就是在DHCP Manager點開後

PXE HTTP Boot Server on Window

對你的IPv4 DHCP欄位下方找 Scope Option 點右鍵,選擇Configure Option.

有三個Option 需要加入設定。

1.Option 60  "PXEClient"

[PXEClient | HTTPClient] (這個欄位取決你要用PXE還是HTTP Boot 後面會簡單說明)

有可能沒有這個選項,你可以右鍵選IPv4 找 Set Predefinition 自己增加option.

 

2.Option 66  "Boot Server Host Name ”

填寫你的靜態IP就好 (192.168.1.1)  字面上的意思,也可以指定成DNS的位置, 但是我的手法是DHCP跟WDS同位置所以我這樣填寫。

 

3.Option 67  "Bootfile-Name"

PXE 的話就填寫 bootd\wdsnbp.efi,HTTP 則需要填寫你HTTP的網址 比如 http://192.168.1.1:[port]/[File path]

用的是第三方程式 HFS.exe 開啟後給定你的Boot image path。 EX: C:/EFI/Boot/Bootx64.efi

HFS :https://www.azofreeware.com/2006/03/hfs-20.html

 

 

首先來看一下DHCP封包結構 (維基百科)

PXE HTTP Boot Server on WindowPXE HTTP Boot Server on Window

 

先看一下PXE Boot 與 DHCP 是怎麼完成PXE BOOT的任務

1. client 端發送PXE or HTTP request給DHCP

2. DHCP 收到PXE或HTTP Client 的訊號

3. 回傳給client,告訴它Boot image在什麼位置

4. Client 端收到boot image位置後,就會去該位置要求Boot image

 

這時候就知道option的關鍵性了,它清楚標記這個封包是要幹嘛的

所以在前面才提到為什麼HTTP 跟 PXE 的時候 Option 60、67要改的原因。

 

至於前面提到為什麼DHCPv6 沒辦法做到不填寫URL HTTP BOOT會失敗的原因

問題在於 Windows Server 在IPv6 的 Option選項中沒有 Option 16、59

Ipv6 Option 16 等同 Ipv4 Option 60 用來設定PXE or HTTP Clietn用的

Ipv6 Option 59 等同 Ipv4 Option 67 Bootfile-Name 可以幫你引導到預設的Boot path

 

不知道為什麼,Win Server 的Set Predefinition也無法自己新增 Option 16、59

OP 16 錯誤訊息顯示為已經被預訂,所以不能被定義

OP 59 應該是微軟的bug,可以被定義,但是定義後無法顯示 也無法使用

基於這個原因我沒辦法達成HTTP BOOT 完整功能。

這個問題可以用Ubuntu 的DHCP去解決,但是很可惜為了單一一項功能要另外設置一個伺服器,很不划算。

 

這只是自己的小筆記

對於網路協定等有太多知識不熟悉

如果有任何錯誤 請各位大大不吝指教 謝謝

 

 

 

創作者介紹
創作者 YangSean的部落格 的頭像
thegreatlcx

YangSean的部落格

thegreatlcx 發表在 痞客邦 留言(0) 人氣( 65 )