我現有的網路環境提供以下內容:
- 將 PXE 用戶端傳送至特定 TFTP 伺服器的 DHCP 伺服器
- 帶有 SYSLINUX“pxelinux.0”檔案用於啟動的 TFTP 伺服器
SYSLINUX 安裝預設逾時為“從本機磁碟啟動”,這允許現有客戶端正確重新啟動,但也提供啟動到救援或配置環境的選項。
我正在測試一個新的設定環境,該環境駐留在與 DHCP 伺服器指向的伺服器不同的 TFTP 伺服器上。現有客戶端取決於目前環境,但我想將測試客戶端推薦給新的 TFTP 伺服器進行設定。
理想情況下,我希望能夠使用 SYSLINUX 提示字元中的特定選單選項,這將導致客戶端從另一個(硬編碼的,而不是 DHCP 伺服器提供的)TFTP 伺服器啟動。
我嘗試在 SYSLINUX 上安裝自訂 gPXE 映像檔作為選單選項。自訂映像(重新)獲取了 DHCP 位址並轉到硬編碼的 TFTP 伺服器,但它缺少一個我認為 gPXE 無法實現的部分。
新的設定係統是基於 Cobbler,它依賴通常的 PXE 序列,在該序列中,用戶端會先尋找以其 MAC 位址命名的文件,然後再選擇不太具體且最終通用的文件。據我所知,gPXE 似乎無法執行此基於 mac 位址的引導序列。
誰能告訴我另一種方法來做到這一點?我已經為這個問題絞盡腦汁好幾天了。先致謝!
答案1
同一伺服器內的 PXE/TFTP 鏈接
將另一個 PXE 引導程式作為核心。
這是我用來從 Linux PXE 鏈載入器鏈載入 BSD PXE 開機載入器的範例。
LABEL openbsd
MENU LABEL ^OpenBSD 3.9
KERNEL openbsd_3.9/pxeboot.0
PXE/TFTP 連結到另一台伺服器
pxechain.com
用於連結載入其他 PXE 伺服器。
pxechain.com
syslinux-common
在 Debian/Ubuntu 的軟體包中可用,或者syslinux 項目存檔在不同的檔名下pxechn.c32
。
例子:
LABEL pxeserver2
menu label Switch to 2nd PXE server...
kernel pxechain.com
append 192.168.10.254::pxelinux.0
範例2:(謝謝鯊魚)如果您的 pxelinux 的配置檔案名稱和/或路徑在兩台 pxe 伺服器上不同,您應該使用選項 -p 和 -c 明確定義它們,否則,它將無法工作(它將嘗試使用由用於目前啟動的dhcp)。
在 DC-ISO2 伺服器設定上:
LABEL DC-ISO1
MENU LABEL DC-ISO1 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.1::pxelinux.0 -c default -p /
TEXT HELP
Boot the legacy dc-iso1 menu in bios mode.
ENDTEXT
在舊的 DC-ISO1 伺服器設定上:
LABEL DC-ISO2
MENU LABEL DC-ISO2 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.2::/configs/pxelinux.0 -p /configs/ -c bios.cfg
TEXT HELP
Boot the new dc-iso2 menu in bios mode.
ENDTEXT
從技術上講,您現在甚至可以停用 DC-ISO1 的 dhcp 伺服器(但不能停用 tftp),並且您將始終先啟動到 DC-ISO2,同時能夠在兩個伺服器的選單之間切換。
答案2
從 Ubuntu 10.4 LTS 取得 pxelinux.0。這將經歷“正常”迭代:MAC - IP in HEX - ...預設。
告訴您的 DHCP 伺服器不要回答某些請求並在同一網路(非權威)中設定另一個 DHCP 來回答您的測試伺服器請求(並且不回答任何其他請求)會更簡單。