fedora下tftp服务器的安装与配置

时间:2022-09-04 07:00:25

近半年一直从事嵌入式项目开发,tftp的安装和配置是嵌入式开发必须的,所以,本人结合项目经验,总结其安装、配置和常见错误

总结过程如下:

 

1.下载tftp服务器、客户端tftp和守护进程xinetd三个包

yum install xinetd tftp tftp-server

 

//xinetd.i3862:2.3.14-21.fc10

//tftp-0.49-1.fc10.i386.rpm                   

//tftp-server-0.49-1.fc10.i386.rpm  

 

2.配置vi /etc/xinetd.d/tftp

修改server_args= -s /tftpboot -c,这里的-c一定要加上,否则只能下载不能上传!!!

service tftp

{

disable = no

socket_type             = dgram

protocol                = udp

wait                    = yes

user                    = root

server                  = /usr/sbin/in.tftpd

server_args             = -s /tftpboot -c

per_source              = 11

cps                     = 100 2

flags                   = IPv4

}

 

3.关闭防火墙(很重要,常见错误就是因为这个)

 

4.建立tftp工作目录并修改属性(不修改属性会出现error)

cd /

mkdir tftpboot

chmod 777 -R /tftpboot/

 

service xinetd restart

 

5.开启服务,上传下载文件

 

######################################

 

我的配置过程中先后顺序和出现的问题如下:

 

下载tftp服务客户端tftp和守护进程xinetd

yum install xinetd

yum install tftp tftp-server

//xinetd.i3862:2.3.14-21.fc10

//tftp-0.49-1.fc10.i386.rpm                   

//tftp-server-0.49-1.fc10.i386.rpm  

关闭防火墙

service xinetd  restart

Stopping xinetd:                                          [  OK  ]

Starting xinetd:                                          [  OK  ]

cd /

mkdir tftpboot

cd tftpboot

cp /etc/inittab /tftpboot/

tftp 172.18.1.90

tftp> get inittab

Transfer timed out.

 

tftp>quit

[root@localhost tftpboot]# netstat -a|greptftp

[root@localhost tftpboot]# ls

inittab

[root@localhost tftpboot]# touch aaa

[root@localhost tftpboot]# ls

aaa inittab

[root@localhost tftpboot]# tftp 172.18.1.90

tftp> get aaa

Transfer timed out.

 

tftp> quit

不知何故出现“Transfertimed out.”的错误提示,想想没有修改tftp配置文件:

[root@localhost tftpboot]# cd /etc/xinetd.d

[root@localhost xinetd.d]# vi tftp

修改保存:

disable=no

server_args=-s /tftpboot/ -c

[root@localhost xinetd.d]# cd /

[root@localhost /]# /etc/init.d/xinetdrestart

Stopping xinetd:                                          [  OK  ]

Starting xinetd:                                          [  OK  ]

[root@localhost /]# netstat -a | grep tftp

udp       0      0 *:tftp                      *:*                                    

[root@localhost /]# tftp 172.18.1.90

tftp> get aaa

Error code 1: File not found

tftp> get inittab

Error code 1: File not found

tftp> quit

错误不一样了,以为需要安装tftpd服务器端,yum  install tftpd没有源

但这次想起来新建/tftpboot/目录时候没有对该目录权限进行修改,就一切ok了

[root@localhost /]# chmod 777 -R /tftpboot/

 

[root@localhost /]# tftp 172.18.1.90

tftp> get aaa

tftp> get inittab

tftp> q

[root@localhost /]# ls

aaa boot  etc   inittab lost+found  mnt  proc sbin     srv  tftpboot usr

bin dev   home  lib     media       opt  root selinux  sys  tmp      var

//根目录出现了aaa和inittab文件,下载成功!

再来试试上传文件:

[root@localhost /]# cd /tftpboot

[root@localhost tftpboot]# ls

aaa inittab

[root@localhost tftpboot]# rm aaa

rm: remove regular empty file `aaa'? y

[root@localhost tftpboot]# ls

inittab

[root@localhost tftpboot]# tftp 172.18.1.90

tftp> put aaa

tftp: aaa: No such file or directory

tftp> put aaa

tftp: aaa: No such file or directory

tftp> q

[root@localhost tftpboot]# cd /

[root@localhost /]# ls

aaa boot  etc   inittab lost+found  mnt  proc sbin     srv  tftpboot usr

bin dev   home  lib     media       opt  root selinux  sys  tmp      var

[root@localhost /]# tftp 172.18.1.90

tftp> put aaa

tftp> q

[root@localhost /]# cd /tftpboot

[root@localhost tftpboot]# ls

aaa inittab

上传成功!

上面错误原因就是tftp的执行目录要再根目录下进行,因为默认根目录为当前操作的目录

 

tftp报错:Permission denied的解决方法 

 

 

最近搭建了一下tftp服务器,小小的写一点心得,不足之处希望大家指出。

   PC机:Fedora12

    开发板:mini2440

具体步骤如下:

   1.安装了tftp服务,用以下命令

   yuminstall tftp-server

   2.在根目录下建立tftpboot文件夹

   mkdir/tftpboot

   同时设置权限:chmod777 tftpboot

   3.修改配置文件:vim /etc/xinetd.d/tftp

   将disable= yes 改成 disable= no

   修改server_args= /tftpboot(指定tftpboot的路径)

   4.重新启动tftp服务

   /etc/init.d/xinetd.drestart

   5.将要烧写的映像文件uImage拷到/tftpboot目录下

   PC机的配置就结束了。

mini2440上:

   我使用的是u-boot。

   进入u-boot命令行后输入命令:

   tftp30008000 uImage(在此之前请先ping PC机的ip,出现hostis alive字样说明网络已经通了)

   在这之后我碰到了一个问题,在网络已经通的情况下出现error:Permission denied.

   首先我检查了防火墙,setup->防火墙设置,发现已经关闭

   后来发现另一处还需设置,在PC机上输入

   system-config-selinux打开SELinux维护界面,将系统默认应用模式改为-->disabled即可。

  

   成功下载映像后输入bootm 30008000即可启动。

   如果需要开机自动从tftp上下载内核映像,则修改bootcmd

   setbootcmd tftp 30008000 uImage \; bootm 30008000即可。