ubuntu 12.04搭建tftp服务器

PS:按照这个配置了好几遍,都没有成功。当时主机上还存在vsftpd,可能有关系。把系统中所有和ftp相关的软件(vsftpd,tftpd)卸载,重新创建的/etc/xinetd/tftp后,成功了。现在可以与开发板或其他主机传输文件。


第1步:

安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,

在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。

然后还需要安装xinetd,在终端下输入 sudo apt-getinstall xinetd,安装好xinetd

 第2步:         

配置相关服务文件。进入根目录下的etc文件夹(cd /etc/),首先看目录中有没有一个xinetd.conf文件,

如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则修改,内容如下:

  1. # Simple configuration file for xinetd  
  2. #  
  3. # Some defaults, and include /etc/xinetd.d/  
  4.   
  5. defaults  
  6. {  
  7.   
  8. # Please note that you need a log_type line to be able to use log_on_success  
  9. # and log_on_failure. The default is the following :  
  10. # log_type = SYSLOG daemon info  
  11.   
  12. }  
  13.   
  14. includedir /etc/xinetd.d  
第3步:

然后进入xinetd.d文件夹(cd xinetd.d),查看是否有一个tftp文件,如果没有就新建一个,如果有的话

就查看内容是否与下面的一致,不一致则修改,内容如下:

  1.   service tftp  
  2. {  
  3.     disable         = no  
  4.     socket_type     = dgram  
  5.     protocol        = udp  
  6.     wait            = yes  
  7.     user            = root  
  8.     server          = /usr/sbin/in.tftpd  
  9.     server_args     = -s //home/pillar/WORK/kernel/linux-3.5.4/arch/arm/boot -c  
  10.     source          = 11  
  11.     cps             = 100 2  
  12. gs =IPv4  
  13. }  

其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的

第4步:

更改配置文件/etc/default/tftpd-hpa

sudo gedit /etc/default/tftpd-hpa

  1. # /etc/default/tftpd-hpa  
  2.   
  3. TFTP_USERNAME="tftp"  
  4. TFTP_DIRECTORY="/home/pillar/WORK/kernel/linux-3.5.4/arch/arm/boot"  
  5. TFTP_ADDRESS="0.0.0.0:69"  
  6. TFTP_OPTIONS="-s -c"  

第5步:

修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文件夹,

以我的配置文件为例,我直接设置/home/pillar/WORK/kernel/linux-3.5.4/arch/arm/boot为服务器文件夹,然后把它可以设置成访问权(sudo chmod –R 777 /home/pillar/WORK/kernel/linux-3.5.4/arch/arm/boot),一定要设定,-R是递归把文件下所有文件都改掉。

第5步:

重新启动服务。这也是我经常疏忽的一步,当配置好tftp的配置文件后,需要重新启动一下xinetd,

在终端中输入 sudo /etc/init.d/xinetd reload,重新加载一下进程,再输入 sudo /etc/init.d/xinetd restart,sudo service tftpd-hpa restart

重启服务。记住,每次修改完配置文件后,都需要重新启动一下服务

第6步:

主机测试

  1. root@Pillar:/home/pillar/WORK# tftp localhost  
  2. tftp> get uImage  
  3. tftp> q  
  4. root@Pillar:/home/pillar/WORK# ls  
  5. kernel  u-boot  uImage  

开发板测试
  1. SMDK6410 # tftp c0008000 uImage  
  2. Found DM9000 ID:90000a46 at address 18000300 !  
  3. DM9000 work in 16 bus width  
  4. bd->bi_entaddr: 00:40:5c:26:0a:5b  
  5. [eth_init]MAC:0:40:5c:26:a:5b:  
  6. TFTP from server 192.168.1.103; our IP address is 192.168.1.101  
  7. Filename 'uImage'.  
  8. Load address: 0xc0008000  
  9. Loading: T #################################################################  
  10.          #################################################################  
  11.          #################################################################  
  12.          #################################################################  
  13.          ###################################################  
  14. done  
  15. Bytes transferred = 1590256 (1843f0 hex)  
  16. SMDK6410 # bootm c0008000  
  17. ## Booting image at c0008000 ...  
  18.    Image Name:   Linux-3.5.4  
  19.    Created:      2012-09-17  10:55:54 UTC  
  20.    Image Type:   ARM Linux Kernel Image (uncompressed)  
  21.    Data Size:    1590192 Bytes =  1.5 MB  
  22.    Load Address: 50008000  
  23.    Entry Point:  50008000  
  24.    Verifying Checksum ... OK  
  25. OK  


安装过程中出现的问题及原因
现象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服务没有启动

现象二
tftp> put test2
Error code 0: Permission denied

原因:
运行命令,查看系统日志
#tail /var/log/messages
发现有如下一段文字:
Mar 24 19:05:26 localhost setroubleshoot:      SELinux is preventing /usr/sbin/in.tftpd (tftpd_t) "write" to tftpboot (tftpdir_t).      For complete SELinux messages. run sealert -l 40a5a6bf-8ded-4bfa-ab6e-fa669a25fc6c
知道这是是由SELinux造成的,在FC3和FC3以后的FC版本中SELinux默认的都是开启的,现关掉它,修改文件 /etc/sysconfig/selinux,设定其中的

SELINUX=disabled

然后重启电脑即可

或者执行命令 system-config-securitylevel 打开 “安全级别配置”对话框,将SELinux(S)选项中 “强制” 改为“允许”。

现象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

现象四:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值