近半年一直从事嵌入式项目开发,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即可。