嵌入式Linux中,有三个比较常用的服务,一个是tftp服务,一个是nfs服务,还有一个是ssh服务。
tftp服务主要是在上位机编译好程序后,用tftp命令下载到开发板上运行,因此用的频率非常高。
相信很多朋友也一样,网上找的资料一大推,而且手法不一样,实验下来也很多不成功,我和大多数朋友一样,昨天找了一个下午,一直到现在才弄好,Linux方面的资料是很多,但是很杂,很乱:
所以我呼吁,广大朋友们,每发表一个技术贴,一定要亲自测试可以通过,避免灌水现象的发生,而笔者每发表一个技术贴,一定也是经过测试可以通过,否则不会发,希望营造一个博而精的学习Linux的氛围!
-------------------------------------原文如下----------------------------------------------------------------------
ubuntu 下tftp服务器配置笔记(2012-08-03 8:52)转载标签: 杂谈 分类: Ubuntu
首先说明:在ubuntu10.4下,安装的是tftp-hpa和tftpd-hpa而不是tftp和tptpd(早期的版本是)。因为,通过网上搜索到的帖子,安装tftp和tptpd后,如果在本地测试的话是OK的。而换台电脑,真正的远程通过tftp来get文件或put文件。则总是显示Transfor time out。但是,通过 $ netstat -nlp命令查看,tftpd的确已经启动了呀。不知何解,故放弃tftp和tftpd。
1.安装tftp的服务端和客户端:
sudo apt-get install tftpd-hpa ;安装tftp服务端
sudo apt-get install tftp-hpa ;安装tftp客户端
2.安装xinetd
sudo apt-get install xinetd:支持对tcp、udp、RPC服务的东东
-----------------------------------
机器背景:
用户名:et
ip地址:192.168.10.101
-----------------------------------
3.在/home/et/下建立tftpboot目录,作为服务器的目录,这里不建议放在"/"下,因为要访问文件需要root权限,下载时候比较麻烦
mkdir /home/et/tftpboot
释放权限:
sudo chmod 777 /tftpboot
4.配置TFTP服务器:
sudo gedit /etc/default/tftpd-hpa
打开tftpd-hpa文件,进行编辑。
其内容为:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" ####tftp的名字
#TFTP_DIRECTORY="/var/lib/tftpboot" #######原来的共享路径
TFTP_DIRECTORY="/home/et/tftpboot" #######我自己更改的路径
TFTP_ADDRESS="0.0.0.0:69"
#TFTP_OPTIONS="--secure" ####可以查看mantftpd,看各种参数的意义。
#这个目录要改为你自己的TFTP根目录~~~
TFTP_DIRECTORY="/home/et/tftpboot"
#参数设置看个人需要,也可以改成这样,我就是的
TFTP_OPTIONS="-l -c -s"
5.重启xinetd服务
sudo /etc/init.d/xinetd restart
6.重启tftpd服务
sudo /etc/init.d/tftpd-hpa restart
7.这样就可以了,在/home/et/tftpboot中建立一个文件,这个文件是用来下载测试的
touch aaa
切换到另一个目录中(如/home/et/test),然后
tftp localhost(或者是自己的IP)
tftp>get haha
tftp>q
这样就能在当前目录下(/home/et/test)get到 aaa文件了(put是上传),表示tftp服务成功
如果 get的时候显示 time out,应该是服务没有启动
sudo /etc/init.d/xinetd restart
sudo /etc/init.d/tftpd-hpa restart
这样应该就可以了
遇到的问题:
#tftp 192.168.10.101
#get zImage
Error code 0: Permission denied
原因:zImage 权限太高
解决办法:
$cd /home/et/tftpd
$ls -l zImage
-rwx------ 1 et et 8 2012-08-03 9:06 zImage
$chmod 777 zImage
这样就可以访问该文件