在嵌入式linux开发过程中需要使用tftp方式从Linux主机下载文件到板子中,因此需要在主机linux系统中安装tftp服务器。
Ubuntu-9.10中安装tftp服务器的方法如下:
4.2.1 安装程序
通过软件管理安装 tftp tftpd,前者是客户端,后者是服务程序。系统根据依赖会选上openbsd-inetd。在Ubuntu的终端下输入命令如下:
sudo apt-get install tftp tftpd
sudo apt-get install xinetd
注:sudo命令意思是:使用管理权限。如果已经进入了管理员模式,那么上面命令就不用加sudo了。直接使用 apt-get install tftp tftpd即可
进入管理模式方法是:
1. 输入命令:sudo –i 随后输入密码即可(密码是不显示的,不要认为有问题哦O(∩_∩)O~)。
2. 输入命令:sudo su 随后输入密码即可。
上面两个命令的不同,在linux下试下就明白啦,或者使用百度哦。给个参考图:
使用sudo –i命令
使用sudo su命令
4.2.2 配置相关服务文件xinetd.conf
在输入命令前,需要说明一下键盘上Tab键的使用,这是一个小技巧。例如你要想修改下面的xinetd.conf文件,你只需要输入cd /e然后按一下Tab键,系统会帮您自动补全文件或者文件夹名字。当然这是建立在文件名是唯一的基础上的,这个方法在开发板的linux下同样适用,详细的使用,大家百度下吧。
配置相关服务文件。进入根目录下的etc文件夹(命令是cd /etc/),首先看目录中有没有一个xinetd.conf文件,如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则修改,内容如下:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to uselog_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
注:打开xinetd.conf文件(其他文件都是类似)的方法介绍两种。
1、使用vimxinetd.conf(或者vi xinetd.conf)。打开后处于不能编辑状态,这时按下键盘的字母’I’键,即可进入编辑模式。可以使用copy方式,不过最好使用鼠标右键copy的方式,不要使用Ctrl+ c的方式。编辑完成后,按下键盘的Esc键进入vim的命令模式,这时输入冒号’:’(注意是英文冒号),然后输入wq即可保存退出。对于vim的详细介绍请参考vim的命令大全,百度即可。
2、使用geditxinetd.conf。打开后跟windows的记事本操作类似,保存也是使用Ctrl+S,其他就不多说了。初学者推荐使用该方式。
注意如果出现xinetd.conf修改完成后无法保存的问题,提示无权限。那么使用sudo chmod 777 xinetd.conf命令修改一下操作权限即可。
4.2.3 配置tftp服务器
输入命令:sudo vim /etc/default/tftpd-hpa 或者sudo gedit /etc/default/tftpd-hpa打开tftpd-hpa文件,把内容修改成:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
/tftpboot是你tftp服务器的工作目录,自行修改,注意,在新建工作目录时,最好修改其权限为777,命令sudo chmod777 /tftpboot。建立方法稍后介绍。
4.2.4 修改tftp文件
使用命令:cd /etc/xinetd.d 进入xinetd.d文件夹。查看是否有tftp文件,如果没有就新建一个,如果有的话修改成下面的内容。
输入命令vim tftp(或者gedit tftp),然后查看修改:
service tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
#log_on_success += PID HOST DURATION
#log_on_failure += HOST
per_source = 11
cps =100 2
flags =IPv4
}
其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的。
4.2.5 建立tftpboot文件夹及修改其权限
输入命令:sudo mkdir /tftpboot
然后修改成最宽松的权限:sudo chmod 777 /tftpboot
4.2.6 重新启动服务
先输入命令:sudo /etc/init.d/xinetd reload重新加载一下进程。
然后输入命令:sudo /etc/init.d/xinetd restart重启服务。
注意,每次修改完配置文件后,都需要重新启动一下服务。
4.2.7 测试tftp服务器
检查tftp是否打开:chkconfig--list 如果没有打开,则用这个命令也可以打开:sudo chkconfig tftp on。
通过以上步骤就可以建立好tftp服务器了,可以在本地先进行一下测试。
一、先在tftpboot建立一个文件,随意建立,然后在文件里随意输入信息。命令是:
1.输入:cd /tftpboot进入tftpboot文件夹。
2.输入:touch realarm.txt建立一个realarm.txt文件。
3.输入:vim realarm.txt 然后输入”tftp test”编辑方法见4.2.2的“注”。或者使用gedit realarm.txt进行编辑。我使用的是gedit进行的编辑,如下图所示。
二、进入另一个文件夹进行测试(是非tftpboot文件夹,统一一下,我们选择在根目录的mnt文件夹下测试)
1.先进入mnt文件夹:cd /mnt
2.输入命令:sudo tftp 127.0.0.1(或者sudo tftp localhost也就是本机ip地址)
3.输入命令:get realarm.txt 如果received提示,就说明传输成功了
4.输入命令:q退出tftp模式
5.输入命令:ls查看mnt目录是否有realarm.txt文件。
先来看看mnt文件夹下有哪些文件
可以看到只有hgfs文件夹,其他没有任何文件。
tftp测试操作演示如下:
可以看到操作成功。那么打开来看看内容是否一样。输入gedit realarm.txt或者使用vim realarm.txt。看下图所示可知,tftp建立与测试已经成功了,呵呵。又向成功迈进一步啦!
上面测试的是接收文件,发送文件也是可以的,使用put命令。在mnt文件夹随意建立一个文件,随意输入信息。然后使用“put 文件名“即可。
若在使用put时出现如下错误
Access violation
原因在于:tftp服务器默认可以下载,但是上传就必须在tftpboot目录下有一个同名文件,并且要有可读写的权限!
解决方法如下:
首先tftpboot目录要有读写权限,为了确保可使用命令sudo chmod 777 /tftpboot进行修改。
在tftpboot目录下建立一个要上传的同名文件,并改变权限为777(或者666),就可以了正常put了。
busybox的tftp用法简要说明
tftp [OPTION]...HOST [PORT]
OPTION:
-l FILE 本地文件
-r FILE 远程文件
-g 下载
-p 上传
例子:
下载:tftp -r test.txt -g 192.168.1.100
上传:tftp -l test.txt -rtest.txt -p 192.168.1.100