1 回答

TA貢獻1830條經驗 獲得超9個贊
實際上,PXELINUX帶有基于系統MAC地址的識別機制,并且可以相應地定制配置。由于無論如何您都需要對裸機服務器進行統計(端口安全有人嗎?;)),因此無論如何您都應該知道裸機服務器上所有接口的 MAC 外觀。
您的目錄通常如下所示(路徑前綴可能不同)。
/srv/pxe/pxelinux.cfg/default
現在發生的情況是,您的系統啟動,發送 DHCP 請求并獲得包含 DHCP 選項“下一個服務器”和“文件名”的報價。當系統選擇所述報價時,它將連接到“下一個服務器”并請求“文件名”,通常為pxelinux.0
.?這是您的第一個潛在鉤子:編寫一個 tftp 服務器來處理請求并注冊您的系統。
現在pxelinux.0
執行,它會讀取上面的配置文件。但事情是這樣的:假設系統的 Mac 地址是23:67:33:5a:cc:e8
,文件
/srv/pxe/pxelinux.cfg/23-67-33-5a-cc-e8
存在,則將讀取此內容。這是您的第二個鉤子:請求將由 tftp 記錄。
無論是否default
使用特定于系統的配置文件,基本上我們談論的是 GRUB 配置文件。假設你使用 Kickstart 安裝系統,它會看起來像這樣
default?linux prompt?0 timeout?1 label?linux ????????kernel?/images/yourdistro/vmlinuz ????????ipappend?2 ????????append?initrd=/images/yourdistro/initrd.img?console=ttyS0,115200
現在,事情是這樣的:您有多種可能性在啟動時執行自定義程序:
將可執行文件的路徑附加到參數中
append
。按照慣例,內核會將所有它不知道的參數發送到 pid 1。雖然我沒有測試 systemd 是否遵守約定并簡單地依次執行一個它不知道的參數,但我假設也是如此。計劃任務?,F在大多數 cron 實現都支持
@boot
時間定義。init 系統,無論是 systemd 還是 openrc 或者好的 SYSV init。
最后但并非最不重要的一點是如何配置機器。我強烈建議不要重新發明輪子。我在(閉源)項目中有非常相似的要求。我們使用 kickstart 進行基本的系統安裝,并在重新啟動到Ansible Tower后簡單地執行一個 curl 命令,觸發更詳細的配置。由于我們有一個帶有 MAC 的 DHCP 服務器、為所述 MAC 保留的 IP 以及易于配置的主機名(dnsmasq、caugh、caugh),所以這不是什么大問題?;旧希覀兪謩右龅木褪亲?MAC 地址并分配 IP 和主機名,然后啟動機器。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報