TFTP与NFS搭建

之前一直使用串口进行程序的下载,速度的确比较慢,所以决定把TFTP建立起来,只是没想到linux下建立TFTP有点复杂,而且实际上这个用得应该不多,只是在下载内核的时候需要用到,而内核可以启动之后主要就可以用NFS来下载应用程序。

TFTP安装与建立
1.安装xinetd:sudo apt-get install xinetd
xinetd是一个系统守护程序,它取代inetd用于控制TCP,UDP的连接。
2.安装TFTP,TFTPD:sudo apt-get install tftp tftpd
linux下的TFTP分客户端和服务器两种,前者是客户端,后者为服务器。
3.创建服务器工作目录 mkdir tftpboot
4.创建/etc/xinetd.d/tftp文件
安装好之后不会出现tftp文件,要自己创建,利用根用户创建该文件,内容如下:
service tftp
{
   socket_type =    dgram
   protocol       =    udp
   wait              =    yes
   user             =    root
   server          =    /usr/sbin/xinetd
   server_args =   -s /home/muzilong/tftpboot -c
    disable         =    no
   per_source   =    11
   cps               =    100 2
   flags             =    IPv4
}
5.重启xinetd/etc/init.d/xinetd restart
6.测试:tftp
   tftp>?查看帮助
   tftp>connet localhost连接主机
   tftp>get filename从服务器上下载文件到当前目录
   tftp>put filename上传文件到服务器
   tftp>verbose
   tftp>trace 这两条没查,打开以后可以看到传输的细节
xinetd安装后放在init.d目录里,开机就默认启动了,于是tftp服务器也已经启动,如果不需要可以移出来。测试是在主机模拟客户端,进行开发板下载时不需要打开客户端,启动xinetd就可以了。

遇到的问题:
1.第一次get文件时transfer time out
   sent RRQ <file=testfile, mode=netascii>
   sent RRQ <file=testfile, mode=netascii>
   sent RRQ <file=testfile, mode=netascii>
   sent RRQ <file=testfile, mode=netascii>
   sent RRQ <file=testfile, mode=netascii>
   Transfer timed out.
检查tftp文件,竟然是server那一句没有写,服务器没启动造成的。
2.error code:No such file or directory
3.Permission deny
上面两个问题都是因为TFTP服务器工作目录的权限没有设对,被它的提示信息弄糊涂了,没有搞清楚究竟如何,应该把这个文件夹对tftp用户的权限设为可读可执行,我设为755。

完成之后用直通网线连接开发板,并用串口连通;使用ifconfig eth0 ipaddr命令设置主机的IP地址;把需要下载的文件放到服务器的工作目录;之后在另一个终端下打开minicom,通过u-boot的命令下载程序,注意宿主机与目标板的网络环境设置。

NFS搭建
1.安装nfs:sudo apt-get install nfs-kernel-server
2.修改/etc/exports
   在这个文件里添加nfs的共享目录,格式如下:
需要共享的目录   允许挂载的主机(读写,其他)
例如:/home/muzllong/nfsboot 192.168.0.10(rw,sync)       <--允许IP地址为192.168.0.10的主机访问
3.建立nfs共享目录:mkdir nfsboot
4.启动portmap服务/etc/init.d/portmap restart
5.重启nfs/etc/init.d/nfs-kernel-server restart
6.测试,通过把共享目录挂载到本地/mnt目录上来测试nfs
  mount 192.168.0.10:/home/muzilong/nfsboot /mnt/nfs
可以在/mnt/nfs目录下看到/nfsboot目录下的文件,挂载成功,NFS服务器端配置完成。

要把宿主机的共享文件挂载到开发板上还要费一番功夫。前几天编译出来的uclinux内核没有更改过任何配置,原来是没有把NFS的一些支持开启的,需要重新编译内核。在配置时要选定配置“Customize Kernel Setting”和“Customize Vendor/User Settings”两项。
内核配置中选择:
Net working option-->IP:fast network address
File systems -> Network file systems -> NFS File system support(Provide NFSv3 client support)
用户配置中选择:
Network->Applications->portmap
BusyBox-->mount(support NFS mount )
重新编译内核,,这次很顺利,进入之后配置好网络环境,直接用下面的命令:
mount -t nfs 192.168.0.10:/home/muzilong/nfsboot /mnt
可以在mnt目录下看到共享文件,但是出现错误:
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
lock_up:makesock failed error=-101
mount:/etc/mtab:Read-only file system
运行命令:
portmap &
没有了这个错误:lock_up:makesock failed error=-101
在mount 命令后加上选项-o nolock之后,只剩下一个错误
mount:/etc/mtab:Read-only file system
这个问题没有解决,不过,可以在板子上看到mount过来的文件,在宿主机上交叉编译好Hello World,通过nfs 挂载到板子上,./hello成功!

也用tftp把Hello World下载到/var/tmp目录下,效果相同,只是有一个文件权限的问题,NFS过来的文件在板子上的文件权限与在宿主机上完全相同,不过不能在/mnt上修改权限,TFTP过来的文件权限改变了,但没有弄清楚是按照怎样的原则改变的,在/tmp目录下可以对权限进行修改。

 

 

zt:http://blog.21ic.com/user1/5930/archives/2008/62170.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值