起因
工厂需要生产国产Linux OS PC
背景
之前已经生产过龙芯平台的PC 并没有发现问题,原以为是BIOS问题,经过反复调试发现是dnsmasq问题
现象
PXE 引导黑屏,查看服务器后台日志发现:
dnsmasq-tftp[4861]: error 8 User aborted the transfer received from 192.168.1.63
dnsmasq-tftp[4861]: failed sending /pxe_file/tftp/debian-installer/amd64/bootnetx64.efi to 192.168.1.63
参考google的方法:https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2015q4/010051.html
在dnsmasq.conf中添加tftp-no-blocksize选项解决了问题
总结分析原因
# This option stops dnsmasq from negotiating a larger blocksize for TFTP
# transfers. It will slow things down, but may rescue some broken TFTP
# clients.
#tftp-no-blocksize
根据tftp-no-blocksize选项的解析应当是客户端当前协商的传输块大小超过服务器的默认设置导致,是客户端参数问题还是bootnetx64.efi文件太大(其实不到10M,这里指比较龙芯平台不到3M)导致目前没有定论,打开该选项传输速度的确会降低,但对PXE 引导的几个小文件影响微乎其微(0.2s变成0.5-1s)不做深入探讨