Windows

適用於 Windows 或 OS X 的免費 PXE 引導伺服器

  • May 12, 2017

OS X(豹,而不是伺服器)似乎內置了 tftp 和某種 dhcp 伺服器,這似乎足以讓 PXE 啟動發生,但我真的不知道從哪裡開始。我也有可用的 Windows(XP 和 7)工作站。

與健壯的解決方案相比,我更喜歡快速而骯髒的解決方案,因為這只是一種臨時措施,直到我的 debian 伺服器再次執行。:-)

IIRC,為了在家中建構 PXE-boot 環境,我使用了:

似乎 Tftpd32 也包括 DHCP 伺服器,我不記得為什麼我使用 Small HTTP 伺服器。

我試圖通過我的 macOS 筆記型電腦在台式電腦上安裝 Arch linux。這有點複雜,但您可以使用 macOS 的 bootpd(結合 BOOTP 和 DHCP)和 tftp 伺服器來完成。

首先為您的發行版下載一個iPXE 網路啟動映像,在我的例子中是 ipxe.pxe in arch 版本

wget https://www.archlinux.org/static/netboot/ipxe.8da38b4a9310.pxe

現在將您的 macOS 系統連接到您希望進行 PXE 引導安裝的客戶端電腦。我使用了來自雷電埠的乙太網電纜,這使我的筆記型電腦的 WiFi 連接到了網際網路。

接下來在 macOS -> 客戶端界面上設置手動 IP 地址。在網路首選項中選擇您的介面並指定手動 IP 地址192.168.2.254,如果需要,請使用子網255.255.255.0

在這個階段,我在System Preferences中啟用了**Internet Sharing,它在 WiFi 和乙太網之間創建了一個橋接適配器。重要的是客戶端電腦已經連接,否則將無法正確創建配置文件。/etc/bootpd.plist

現在將您的網路引導映像複製到 tftp 伺服器根目錄。預設情況下,這是 root 擁有的目錄,在/private/tftpboot. 將您的網路引導映像複製到該目錄中:

sudo cp ipxe.8da38b4a9310.pxe /private/tftpboot

接下來,您必須修改 bootpd 伺服器配置文件以指向您的 netboot 映像和 tftp 伺服器。首先,您需要將您的網路啟動映像的文件名編碼為 base64,可以按如下方式完成:

printf %s00 `echo -n ipxe.8da38b4a9310.pxe | xxd -p` | xxd -r -p | openssl base64

現在打開您的 bootpd 伺服器配置文件

sudo nano /etc/bootpd.plist

並將您的靜態 IP 和 base64 編碼文件名添加到底部<subnet> <array> <dict>

<key>dhcp_option_66</key>
<string>192.168.2.254</string>
<key>dhcp_option_67</key>
<data>aXB4ZS44ZGEzOGI0YTkzMTAucHhlAA==</data>

bootpd.plist現在看起來像下面這樣:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Subnets</key>
   <array>
       <dict>
           <key>_creator</key>
           <string>com.apple.NetworkSharing</string>
           <key>allocate</key>
           <true/>
           <key>dhcp_domain_name_server</key>
           <array>
               <string>192.168.2.1</string>
           </array>
           <key>dhcp_router</key>
           <string>192.168.2.1</string>
           <key>interface</key>
           <string>bridge100</string>
           <key>lease_max</key>
           <integer>86400</integer>
           <key>lease_min</key>
           <integer>86400</integer>
           <key>name</key>
           <string>192.168.2/24</string>
           <key>net_address</key>
           <string>192.168.2.0</string>
           <key>net_mask</key>
           <string>255.255.255.0</string>
           <key>net_range</key>
           <array>
               <string>192.168.2.2</string>
               <string>192.168.2.254</string>
           </array>
           <key>dhcp_option_66</key>
           <string>192.168.2.254</string>
           <key>dhcp_option_67</key>
           <data>aXB4ZS44ZGEzOGI0YTkzMTAucHhlAA==</data>
       </dict>
   </array>
   <key>bootp_enabled</key>
   <false/>
   <key>detect_other_dhcp_server</key>
   <array>
       <string>bridge100</string>
   </array>
   <key>dhcp_enabled</key>
   <array>
       <string>bridge100</string>
   </array>
   <key>dhcp_ignore_client_identifier</key>
   <true/>
   <key>ignore_allow_deny</key>
   <array>
       <string>bridge100</string>
   </array>
   <key>use_server_config_for_dhcp_options</key>
   <false/>
</dict>
</plist>

現在通過執行以下命令重新啟動/啟用 macOS bootpd 和 tftp 伺服器:

sudo launchctl unload -w /System/Library/LaunchDaemons/{bootps,tftp}.plist
sudo launchctl load -w /System/Library/LaunchDaemons/{bootps,tftp}.plist

現在您應該通過本地連接並下載您的網路引導映像來測試您的 tftp 伺服器:

tftp localhost
tftp> get ipxe.8da38b4a9310.pxe
Received 343580 bytes in 0.1 seconds
tftp> quit

現在啟動啟用了 PXE 的客戶端系統,它應該會找到您的 macOS DHCP 伺服器(通過 bootpd),分配 IP 地址,找到 TFTP 伺服器,傳輸並執行網路啟動映像!成功!

完成後禁用 bootpd 和 tftp 伺服器:

launchctl unload -w /System/Library/LaunchDaemons/{bootps,tftp}.plist

引用自:https://serverfault.com/questions/159536