![在配置 dnsmasq 进行 PXE 启动时,为什么需要将 undionly.kpxe 更改为 undionly.0?](https://linux22.com/image/713155/%E5%9C%A8%E9%85%8D%E7%BD%AE%20dnsmasq%20%E8%BF%9B%E8%A1%8C%20PXE%20%E5%90%AF%E5%8A%A8%E6%97%B6%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%B0%86%20undionly.kpxe%20%E6%9B%B4%E6%94%B9%E4%B8%BA%20undionly.0%EF%BC%9F.png)
我已将 dnsmasq 配置为通过将它们指向 HTTP 服务器来 PXE 启动 iPXE 客户端(火柴盒在这种情况下)。我还将其配置为处理较旧的 PXE 客户端,方法是将 iPXE 的副本放在我的 TFTP 服务器的根目录中,以允许这些较旧的客户端链式加载到 iPXE。为此,我在 dnsmasq.conf 中使用了以下行:
dhcp-boot=tag:!ipxe,undionly.kpxe
我已将undionly.kpxe
文件放在我的 TFTP 服务器的根目录下,但有几个地方说你需要符号链接或复制undionly.kpxe
到undionly.kpxe.0
或undionly.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