与 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以验证客户端是否获得正确的信息信息并依次请求正确的文件......对吗?

相关内容