我正在使用 OpenDHCPServer 和 OpenTFTPServer 来尝试网络启动。我的问题是,在获取 IP 地址后,客户端开始下载启动文件并停止。
TFTP 日志文件中的消息为:
[20-Aug-15 14:35:32] Client 10.0.0.3:2070 c:\tftp\pxelinux.0, Client 10.0.0.3:2070, Error Code 0 at Client, TFTP Aborted
[20-Aug-15 14:35:32] Client 10.0.0.3:2071 c:\tftp\pxelinux.0, 19 Blocks Served
我发现 OpenTFTP 中的块默认为 512 字节。启动文件的大小应为 53 个块。我尝试传递一个 1 块的假文件,希望出现一些错误引用,但没有成功,客户端仍然停止(实际上不是,光标仍然闪烁)。
我的 DHCP 配置是:
[RANGE_SET]
DHCPRange=10.0.0.2-10.0.0.5
SubnetMask=255.255.255.0
BootFileName="pxelinux.0"
NextServer=10.0.0.1
TFTP 服务器除了以下情况外,其他均默认
[HOME]
C:\tftp\
在正常服务期间,IP 分配和文件传输均有效。
编辑
怎么回事,现在我把最大块大小降低到 512,它却传输了所有 53 个。显然服务器配置中的注释都是谎言。然而,此后客户端停止了。
噢,原来是 pxelinux.0 导致客户端停止运行。Grub4dos 加载没有问题。我的错,这里的教训是,不要抄袭教程。
答案1
如果您的客户端仅在您设置 blocksize=512 时才开始传输文件,那么这说明您的客户端不支持,TFTP blocksize option RFC 2348
如果是这种情况,则说明您的客户端的 PXE 固件已经过时并且肯定存在错误。请在尝试任何新的 PXE 启动之前尝试升级固件。