與 grub2 的符號連結(如 pxelinux)

與 grub2 的符號連結(如 pxelinux)

我確實想像 pxelinux 那樣做符號鏈接,只需使用 grub2。但我不知道該怎麼辦。目標是擁有可以動態傳遞給 IP 的不同設定檔。

到目前為止,Grub2 確實可以工作,但我無法為 IP 提供另一個配置文件,它總是需要 grub.cfg。我還嘗試了 grub.cfg-IP -> 另一個設定檔 -> 是我實際想要使用的設定檔的符號連結。

也許有人已經弄清楚了這一點。 Grub2 手冊沒有太大幫助。

答案1

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-mkimage -c <grub.cfg containing the configfile command> -O i386-pc-pxe <other parameters...>(或您正在使用的任何體系結構)將此一行設定嵌入到 GRUB PXE 啟動映像中。


您可能已經發現,當 PXE 啟動工作遇到問題時,使用類似tcpdump或之類的方法轉儲 PXE 用戶端和 DHCP/TFTP 伺服器之間的網路流量非常有用,wireshark以驗證客戶端是否獲得正確的資訊資訊並依序請求正確的文件......對嗎?

相關內容