方案一: 1.1 搭建tftp服务器 TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。 在嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。 一般的发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd,然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已,下面以ubuntu为例进行说明。 安装xinetd: ky@ubuntu:~$ sudo apt-get install xinetd 安装tftp和tftpd: ky@ubuntu:~$ sudo apt-get install tftp tftpd 或者安装tftp的增强版本tftp-hpa: ky@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa 建立配置文件。建立/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 } 其中server_args设置的/var/tftpboot目录是tftp服务器的目录,设置其访问权限为777: ky@ubuntu:~$ sudo mkdir -pv /var/tftpboot/ ky@ubuntu:~$ sudo chmod 777 /var/tftpboot/ [-R] 启动或者重启xinetd服务: ky@ubuntu:~$ sudo /etc/init.d/xinetd start或者restart 测试sudo netstat -a | grep tftp --查看是否启动成功,可以看到udp 0 0 *:tftp *:* 本机测试。在/tftpboot目录下创建一个ky文件,启动另外一个终端,输入: ky@ubuntu:~$ tftp 127.0.0.1 tftp> get ky #获取ky文件 tftp> q #退出tftp 在终端输入ls命令,可以看到当前目录下看到ftp获取到的ky文件。 用开发板来验证tftp服务器是否可用。启动开发板,进入U-Boot命令行,用tftp命令加载tftp服务器中的文件,如: U-Boot$ tftp 80008000 zImage ENET:auto-negotiation complete ENET:Link status up ENET:FULL DUPLEX ENET:100MBase MAC: 00:61:62:69:6e:67 TFTP from server 192.168.1.3; our IP address is 192.168.1.5 Filename 'zImage'. Load address: 0x80008000 Loading: ################################# done Bytes transferred = 479927 (752b7 hex) 说明: (1)使用开发板与虚拟机安装的客户系统进行TFTP通讯,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。 (2)如果以上设置都确认无误,但tftp还是不成功,请检查主机的防火墙是否已经关闭。 方案二:
1. 安装
$ apt-get install tftp-hpa tftpd-hpa
2. 建立目录
$ mkdir /tftpboot # 这是建立tftp传输目录。
$ sudo chmod 0777 /tftpboot
$ sudo touch test.txt # test.txt文件最好输入内容以便区分
3. 配置
$ sudo vi /etc/default/tftpd-hpa3.
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" # 这里是你的tftpd-hpa的服务目录,这个想建立在哪里都行
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定
4. 重启服务
$ sudo service tftpd-hpa restart # 启动服务,这里要注意,采用的独立服务形式。
5. 测试
$ tftp 127.0.0.1
tftp>get test.txt
tftp>put test1.txt
tftp>q
|
|