arm linux 下移植busybox 的tftp
(1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项。
(2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证,不需要应该也可以)
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd
(3)部分tftp指令(部分验证)
Busybox下的tftp命令可以用来进行单文件传输。
使用的时候,是把电脑作为服务器Server,Busybox作为客户端Client,使用tftp命令可以实现从Server下载单个文件到Client,或者从Client上传单个文件到Server。
在开发板上跑tftp命令,提示使用方法,其中 [OPTIONS]如下解析
-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名
-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传Server后重命名后的文件名
-g 是get的缩写,下载文件时用
-p 是put的缩写,上传文件时用
tftp 默认占用的是69端口
[具体实例]
1. 在上传或下载时进行重命名
1)从服务器下载文件到客户端
tftp –g –l 目标文件名 –r 源文件名 服务器地址
如
root@sama5d3_xplained:~# tftp -g -l aa.txt -r ss.txt 192.168.1.25
root@sama5d3_xplained:~# ls
aa.txt
2)从客户端向服务器上传文件
tftp –p –r 目标文件名 -l 源文件名 服务器地址
如
这里我在服务器中没有开权限,如果想开的话,修改TFTP的配置文件/etc/xinetd.d/tftp,将server_args参数改成
server_args = -s /var/tftpboot/ -c #指定tftp服务器的目录,-c指定为可以创建文件
2. 在上传或下载时不进行重命名
1)从服务器下载文件到客户端(此时参数-l与-r等效,使用时只使用其中一个)
tftp –g –l/-r 源文件名 服务器地址 (已验证)
root@sama5d3_xplained:~# tftp -g -l ss.txt 192.168.1.25
root@sama5d3_xplained:~# ls
aa.txt ss.txt
2)从客户端向服务器上传文件(此时参数-l与-r等效,使用时只使用其中一个)(已验证)
tftp –p –l/-r 源文件名 服务器地址