適用於 Windows 或 OS X 的免費 PXE 引導伺服器
OS X(豹,而不是伺服器)似乎內置了 tftp 和某種 dhcp 伺服器,這似乎足以讓 PXE 啟動發生,但我真的不知道從哪裡開始。我也有可用的 Windows(XP 和 7)工作站。
與健壯的解決方案相比,我更喜歡快速而骯髒的解決方案,因為這只是一種臨時措施,直到我的 debian 伺服器再次執行。:-)
IIRC,為了在家中建構 PXE-boot 環境,我使用了:
- 小型 HTTP 伺服器作為 DHCP 伺服器
- 用於 TFTP 伺服器的Tftpd32
似乎 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