linux下做pxe引导winpe

linux下做pxe,需要安装tftpd-hpa或atftpd,但是都可能遇到一件郁闷的事情——服务无法启动。使用ps aux |grep tftp看不到atftpd或者tfypd-hpa,但是netstate -l |grep udp却可以看到tftp服务已经启动,并正在udp69端口上等待着。这个时候如果启动服务/etc/init.d/atftpd start或/etc/init.d/tftpd-hpa start,在/var/log/syslog里面会报告port can't bind 69/udp already in used,或者类似的意思。

原因是linux默认的tftpd服务使用/etc/inetd.conf,只要将里面的配置语句注销接可以了:

tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftp    boot

变成

#tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftp    boot

另外,如果使用atftd,注意/etc/init.d/atftpd中开头定义了"USE_INETD=true" 而后面又有if [USE_INETD=true] exit 0,这里明显不对,需要把这个true改成false。

之所以不用tftpd,因为它不支持tsize传输模式。