在配置 dnsmasq 进行 PXE 启动时,为什么需要将 undionly.kpxe 更改为 undionly.0?

在配置 dnsmasq 进行 PXE 启动时,为什么需要将 undionly.kpxe 更改为 undionly.0?

我已将 dnsmasq 配置为通过将它们指向 HTTP 服务器来 PXE 启动 iPXE 客户端(火柴盒在这种情况下)。我还将其配置为处理较旧的 PXE 客户端,方法是将 iPXE 的副本放在我的 TFTP 服务器的根目录中,以允许这些较旧的客户端链式加载到 iPXE。为此,我在 dnsmasq.conf 中使用了以下行:

dhcp-boot=tag:!ipxe,undionly.kpxe

我已将undionly.kpxe文件放在我的 TFTP 服务器的根目录下,但有几个地方说你需要符号链接或复制undionly.kpxeundionly.kpxe.0undionly.0核心操作系统FOG 维基)。

首先,为什么 dnsmasq 不查找您在配置中指定的确切文件名,其次,哪一个是正确的,undionly.0 还是 undionly.kpxe.0?

答案1

以 .0 结尾的文件名仅与 2.76 之前的 dnsmasq 版本相关。来自 2.76 的更新日志:

--pxe-service 中“basename”语义的细微变化。历史行为一直是从 TFTP 服务器下载的实际文件名是 . 其中是一个整数,对应于客户端提供的 layer 参数。目前尚不清楚 PXE 协议中“layer”的实际功能是什么,实际上 layer 始终为零,因此文件名为 .0 新行为与旧行为相同,但包含文件后缀时除外,在这种情况下不再添加 layer 后缀。这允许使用合理的后缀,而不是无意义的“.0”。只有在极少数情况下,即您的配置具有已经具有后缀的 basename 时,这才是不兼容的更改,因为下载的文件将从 name.suffix.0 更改为 name.suffix

如果您使用的是 2.76 之后的 dnsmasq 版本,则只需使用实际文件名。如果使用的是之前的版本,请使用“filename”.0

相关内容