PXE引导 – 在TFTP服务器上找不到内核

我按照以下链接进行PXE启动, http://www.howtoforge.com/setting-up-a-pxe-install-server-on-ubuntu-9.10-p3

我能够从服务器ping客户端,也是当我启动客户端它正在从服务器获取IP地址。

但后来,我得到这个错误

PXELinux 3.82 2009-06-09 . . . [other informations] !PXE Entry point found (we hope) at 9D3B:0109 via plan A UNDI code segment at 9D3B len 16C2 UNDI data segment at 933B len A000 Getting cached packet 01 02 03 . . . [other informations] TFTP prefix: Trying to load: pxelinux.cfg/ec5db4c0-74fe-d511-b9e7-3d9235afe5a1 Trying to load: pxelinux.cfg/01-00-17-31-b6-5e-a8 Trying to load: pxelinux.cfg/0A64491E Trying to load: pxelinux.cfg/0A64491 Trying to load: pxelinux.cfg/0A6449 Trying to load: pxelinux.cfg/0A644 Trying to load: pxelinux.cfg/0A64 Trying to load: pxelinux.cfg/0A6 Trying to load: pxelinux.cfg/0A Trying to load: pxelinux.cfg/0 Trying to load: pxelinux.cfg/default Unable to locate configuration file Boot failed: press a key to retry or wait for reset 

我已经把链接中提到的所有文件放在tftpboot中。 任何人都可以解释可能是什么问题。

您可以尝试在引导服务器上运行tcpdump(或wireshark)并查看客户端要求的内容。 就我个人而言,我喜欢看到networking上运行着什么,因为它是真实的,全部的真相和唯一的真理;)它可以帮助我确定发生了什么事情。

说到权限 – 还记得有关目录权限。 该进程必须具有对该目录的执行(x)权限才能进入该目录(认为:cd / path / x)并读取(r)权限来读取其内容(认为:ls / path / x)。 执行位是必须的,并且tftpd守护进程运行的用户的读取权限也不应该受到影响。

接下来,您可以将-vvvv添加到/etc/default/tftpd-hpa文件中的选项,然后重新启动服务器。 这会增加tftpd-hpa守护进程的日志logging级别,并且可能会给您提供有关问题根源的额外提示(查看/var/log/messages )。

另一个想法:尝试从tftp服务器获取客户需要的文件(通过监听线路上运行的内容,您将得到客户需要的内容)。 如果你可以下载这个文件,那么你确定你的tftp服务器工作正常,文件在那里,path是正确的,权限是正确的。 如果还有其他问题,他们在客户端(或客户端 – 服务器协议不匹配)。

最后一件事:我不喜欢HOWTObuild议使/ tftpboot目录世界可写。 在安装完成后,从目录中删除写入权限。 stream氓客户端可以很容易地填满您的/ tftpboot目录所在的文件系统 – 协议中没有内置authentication(因此“ftp”)。

希望文本的墙帮助;)

文件/var/log/messages可能会logging更多的信息。 你看过吗? 这听起来像一个权限问题。 确保tftpd-hpa正在运行的用户可以读取文件/tftpboot/pxelinux.cfg/default 。 另外,请确保该文件不能被其他用户写入。 你可以用ls检查权限; 输出的开始应该看起来像

 $ ls -l /tftpboot/pxelinux.cfg/default -rw-rw-r-- 

您需要将软链接指向/tftpboot/pxelinux.cfg中的pxeconfig文件。 软链接应该被命名为0A64491E。 软链接应该指向一个文件,在我们的数据中心的情况下,它指向../profiles(configuration文件的位置并不重要)

我们的centos6 pxeconfig的简单安装文件的一个例子是

 DEFAULT INSTALL LABEL INSTALL KERNEL centos6/x86_64/vmlinuz APPEND utf8 load_ramdisk=1 root=/dev/ram nofb ks=http://servername/mrepo/kickstarts/centos6.ks ksdevice=eth0 initrd=centos6 /x86_64/initrd.img console=ttyS1,115200 

这里有一些重要的部分是确保你输出到正确的控制台会话。 如果你没有得到这个权利,你只会得到一个闪烁的光标或只是一个。

另外,如果使用控制台通过pipe理networking连接到服务器,则设置波特率(在上述情况下为115200)有助于正确设置。

我遇到了同样的问题,并禁用SELinux解决它。 我正在运行CentOS 6.5,并使用DRBL / Clonezilla。

脚步:

  1. 打开/etc/selinux/config
  2. SELINUX=enforcing更改为SELINUX=disabled
  3. 重启