帶有 grub2 的符號連結,例如 pxelinux
我確實想做像 pxelinux 這樣的符號連結,只需要 grub2。但我不知道怎麼做。目標是擁有可以動態傳遞給 IP 的不同配置文件。
到目前為止,Grub2 確實可以工作,但我不能給 IP 另一個配置文件,它總是需要 grub.cfg。我也嘗試過 grub.cfg-IP -> 另一個配置文件 -> 是我實際想要使用的配置文件的符號連結。
也許有人已經弄清楚了。Grub2 手冊沒有多大幫助。
PXELINUX 不是“做符號連結”:它只是下載一個配置文件,其名稱包括客戶端的 IP 或 MAC 地址或其中的一部分。匹配文件恰好是符號連結這一事實完全在您和將文件提供給 PXELINUX 的 TFTP 伺服器之間。
請注意,與 PXELINUX 不同,GRUB 僅查找單個配置文件,這是
grub.cfg
預設設置。所以這就是你需要提供它的東西。如果您希望 GRUB 使用名稱以某種方式依賴於客戶端 IP 地址的配置文件,則需要將其告知 GRUB。然後,該配置文件可以告訴 GRUB 載入另一個配置文件……您可以在指定其名稱時使用 GRUB 環境變數。
因此,如果您希望 GRUB 使用名為 的配置文件
grub.cfg-<IP address>
,那麼您應該首先grub.cfg
在 GRUB 預期的位置創建一個非常小的文件,並讓它(僅)這樣說:configfile grub.cfg-${net_default_ip}
這應該告訴 GRUB 下載一個新的配置文件,文件名後綴為客戶端 IP 地址。
您甚至可以使用絕對路徑指定新配置文件,例如
configfile (tftp,${net_default_server})/some/path/grub.cfg-${net_default_ip}
如果您不喜歡僅包含一行定義新配置文件的單獨文件,則可以使用(或您使用的任何架構)
grub.cfg
將此單行配置嵌入到 GRUB PXE 引導映像中。grub-mkimage -c <grub.cfg containing the configfile command> -O i386-pc-pxe <other parameters...>
您可能已經發現,當您無法讓 PXE 引導正常工作時,轉儲 PXE 客戶端和 DHCP/TFTP 伺服器之間的網路流量
tcpdump
或wireshark
驗證客戶端是否正確是很有用的資訊並依次請求正確的文件…對嗎?