我在 PXE 启动时遇到问题。我按照这些说明在 Ubuntu 帮助 wiki 上。但我在客户端机器上收到错误:
Could not find kernel image: vmlinuz-3.13.0-24-generic
现在,问题是。这张图片应该在pxelinux.cfg
文件夹中,对吗?
答案1
内核映像(和 initrd)必须位于相对于根文件夹的位置。如果您按照该操作方法操作,则您已配置以下参数:
- DHCP 服务器配置为使用
/tftpboot/
- 启动映像是
/pxelinux.0
(相对于 TFTP 根目录,因此实际路径是/tftpboot/pxelinux.0
) - PXELinux(syslinux 的一部分)在目录中查找其配置
/pxelinux.cfg/
。如果它找不到与客户端 MAC 地址或 GUID 匹配的文件,那么它将回退到名为default
(/tftpboot/pxelinux.cfg/default
) 的文件(就您而言)。 该文件应该包含如下内容:
LABEL linux KERNEL vmlinuz INITRD initrd APPEND root=...
然后查找相对于 TFTP 根目录的
vmlinuz
和文件,因此请确保文件和存在。您可以在 中找到这些文件。initrd
/tftpboot/vmlinuz
/tftpboot/initrd
/boot/
我还建议不要将其用作/tftpboot/
TFTP 文件的根目录,但是/srv/tftpboot/
。对于特定于站点的数据来说,这是一个更合适的位置。
为了进行调试,请务必查看您的系统日志。我使用了 dnsmasq DHCP 服务器,该服务器将其日志发送到系统日志 ( /var/log/syslog
)。ISC 的 DHCP 服务器应该做类似的事情。
答案2
我知道这个帖子已经过时了,但我想补充一点,我的问题与 SELinux / Apparmour 有关。请注意,TFTP PXE 启动不会显示“权限被拒绝”。相反,它会显示“无法找到”,这可能会令人困惑。确保权限正确,包括 SELinux 和 Apparmour。