配置和使用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的嗎?我還以為是,結果就很冒失的問他暸。呵呵

你可能感兴趣的:(linux,windows,server,socket,service,服务器)