1Instale el servicio tftp en Linux
- Instale xinetd, tftp y tftpd
sudo apt-get install xinetd
sudo apt-get install tftp tftpd
* 配置/etc/xinetd.d/tftp文件
新建一个文件:
vim /etc/xinetd.d/tftp
写入如下内容
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s / var / tftpboot /
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
* tftp文件中的var/tftpboot是服务器的目录(这一步好像作用不大)
新建tftp服务器目录,并修改权限为777
mkdir / var / tftpboot
chmod 777 / var / tftpboot
* 重启xinetd服务
sudo /etc/init.d/xinetd reiniciar
* 查看tftp是否已开启
netstat -a | grep tftp
应该显示类似如下信息:
udp 0 0 0.0.0.0:tftp 0.0.0.0:*
**2windows端安装tftp服务**
这里使用一个tftpd的小软件,免安装版,启动后,在其所在的文件夹可以作为一个tftp服务器。
如下图,打开tftp32.exe后,可以自动识别出windows系统电脑的局域网IP地址,如果不正确,可以在下拉窗口中选择正确的IP。
这个文件夹下的hello.txt作为一个测试文件,在linux系统中通过tftp服务来获取windows电脑上的这个文件。
![](https://s4.51cto.com/images/blog/202102/27/a3125bf6de646b0f4712ecd07ef7d27e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
**3使用方法**
**3.1 查看是否在同一网段**
在Linux端,比如在windows电脑上通过串口登录到一块Linux开发板,先使用ifconfig命令查看linux的IP与windows的IP是否在一个网段,比如我的:
debian @ npi: ~ $ ifconfig
eth1: flags = 4099 <UP, BROADCAST, MULTICAST> mtu 1500
ether 12: 27: 97: c7: 88: a6 txqueuelen 1000 (Ethernet)
Paquetes RX 0 bytes 0 (0.0 B)
Errores RX 0 caído 0 desbordamientos 0 trama 0
paquetes TX 0 bytes 0 (0.0 B)
Errores de TX 0 caído 0 desbordamientos 0 portadora 0 colisiones 0
eth2: flags = -28669 <UP, BROADCAST, MULTICAST, DYNAMIC> mtu 1500
ether 62: 7d: 37: ad: 06: 39 txqueuelen 1000 (Ethernet)
Paquetes RX 0 bytes 0 (0.0 B)
Errores RX 0 descartados 0 desbordamientos 0 trama 0
Paquetes de TX 0 bytes 0 (0.0 B)
Errores de TX 0 caídos 0 desbordamientos 0 portadora 0 colisiones 0
lo: flags = 73 <UP, LOOPBACK, RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: 1 prefixlen 128 scopeid 0x10 <host>
loop txqueuelen 1000 (Local Loopback)
Paquetes RX 80 bytes 6480 (6.3 KiB)
RX errores 0 descartados 0 desbordamientos 0 trama 0
paquetes TX 80 bytes 6480 (6,3 KiB)
errores de TX 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0
wlan0: flags = 4163 <UP, BROADCAST, RUNNING, MULTICAST> mtu 1500
inet 192.168.5.100 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80 :: c284: 7dff: fe6b: d4b3 prefixlen 64 scopeid 0x20 <link>
ether c0: 84 : 7d: 6b: d4: b3 txqueuelen 1000 (Ethernet)
Paquetes RX 48 bytes 4110 (4.0 KiB)
Errores RX 0 caídos 0 desbordamientos 0 trama 0
paquetes TX 42 bytes 4066 (3.9 KiB)
Errores TX 0 descartados 0 desbordamientos 0 colisiones de portadora 0 0
我用的是wifi联网,就是最后一个wlan0,IP地址192.168.5.100,与windows的192.168.5.102属于同一网段。
前两个eth1和eth2是开发板上的两个网口,目前没用网线。
lo是回环(loop)地址,其它情况可能会有br网桥(brige)地址。
所以,**如果接的网线就看eth开头的地址,如果接的无线就看wlan开头的地址。
**
** 如果linux的IP地址未分配**,也就是没有显示出正常的数字,可以使用如下命令配置其IP地址:
sudo ifconfig wlan0 192.168.5.101
这里修改的是我无线连接方式的IP为192.168.5.101,如果是网线连接,需要将wlan0替换为eth之类的
**3.2 tftp方式传输文件**
在Linux端使用tftp命令访问windows的tftp服务器,就是“tftp+windows的IP地址”,前提是windows电脑上的tftpd小软件要打开。
然后使用“get+文件名”来获取Windows电脑上的文件,也可以使用“put+文件名”来发送文件到Windows电脑。
操作示意如下:
![](https://s4.51cto.com/images/blog/202102/27/af2121279f6830f7e91ec70d74f4763f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)