配置和使用TFTP

       因为特定的开发环境的制约,我不得不在WINDOWS上调试代码而要登陆到LINUX宿主开发机上进行开发工作。然后在LINUX交叉编译环境中编译成二进制代码并通过TFTP(也许这是最方便的方法了)下载到WINDOWS终端上,在通过只能支持WINDOWS的FlexROM III仿真机把二进制代码运行和调试,调试好了以后再烧到ARM7目标扳上。我晕!这么复杂!如果调试有问题,还要重新到LINUX系统上重新编译!


        言归正传,先讲如何配置TFTP。先用rpm -qa |grep tftp 确定系统上是否装了TFTP。如果没有在光盘第二张里。如果安装了,修改/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
# disable = yes //默认是关闭的,这里注释掉。
per_source = 11
cps = 100 2
flags = IPv4
}


这样就可以在/TFTPBOOT目录传递文件了。
[WINDOWS :]
tftp -i ipxxx get/put filename
[LINUX :]
tftp>connect ipxx
get/put filename


但是,往往会遇到这样的问题:
1。提示服务器无法找到你要的文件。
2。你无权访问。
为什么会这样呢?因为,权限设置有问题:
我们需要在ROOT身份下,给/TFTPBOOT目录设置读写的权限。
chmod 766 -R /tftpboot
如此,你可以从LINUX系统的/TFTPBOOT得到文件了。但是你会发现你传递不上文件。
你需要在要登陆到LINUX服务器上首先在你的/TFTPBOOT目录中建立你要传递的文件。


Egs:
touch arm-elf-tools.tar.gz
chmod 666 arm-elf-tools.tar.gz
tftp -i ipxx put arm-elf-tools.tar.gz
这样就可以了!
我开始没有‘chmod 666 arm-elf-tools.tar.gz '结果总是报告错误,说我不能写!
注意:我开始在/etc/xinetd.d/tftp配置文件中:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
# disable = yes //默认是关闭的,这里注释掉。
per_source = 11
cps = 100 2
flags = IPv4
}c
hmod -R 777 /tftpboot //注意这句。
-----------------------------------------------------------


结果LINUX系统重启动后,xinetd就不能停止,但是可以启动。所有我开放的服务都突然
停了。我开始怀疑是有人DHCP改动了IP地址,访问不了了。后来发现IP没有改。也能
PING通就是TELNET不上了。最后发现是加了chmod -R 777 /tftpboot 的原因:在XINETD
停止的时候要执行chmod -R 777 /tftpboot 执行不了,就停不了,也重启不了。结果那些服务
都没有启动。配置文件读取执行到这里就停止了!


注意:tftp似乎有个BUG。是这样的,我telnet到远程LINUX上,在remote机器上的
/tftpboot目录中执行暸get romfs.bin(因为我忘记是在远程机器上暸,我以为在本地,因为
我的确在本地机器上操作)我本来希望能够将那个目录下的ROMFS.BIN文件下载到本地来,
结果它将remote机器上/tftpboot/目录下的romfs.bin文件清除掉暸。因为,tftp client程式会
在操作的当前目录建立一个妳要GET的文件,结果就把原来在这个目录下的文件无声无息
的覆盖掉暸。我觉得,TFTP应该做一下这个检查,如果本地有要GET的同名文件,应该让
用户确认一下,给出提示!(我问暸一下Richad steman,他说他不知道,他从来不用
TFTP。TFTP不是GNU的吗?我还以为是,结果就很冒失的问他暸。呵呵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章