Fedora10的NFS和TFTP环境设置 点击:431 | 回复:0



xilinxue

    
发表于:2010-02-15 18:06:38
楼主
首先说一下什么是NFS:
NFS是Net File System的缩写,即网络文件系统NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。
嵌入式开发中使用NFS最显而易见的好处是:
1因为通常的数据可以存放在HOST机器上而且可以通过网络访问到,因此嵌入式的开发空间变得和HOST机器一样大,不必再受几十M之约束了。
2.减少对Flash的烧写次数,增加了Flash的寿命
3.不必再每改动了一下点就要重新制作文件系统,重新烧写了,开发完全像在PC上一样方便。
注:NFS 由Sun microsystems 公司开发。是一种网络操作系统
是使用底层传输层协议TCP/IP的应用层协议


环境:
host:Windows XP SP2
guest:VMWARE 6.0 Fedora10
编译器:gcc 4.3.2
ELDK4.2-arm-20081124,arm-linux-gcc3.3.2,arm-linux-gcc3.4.1
要移植的Linux版本:Linxu-2.6.28.6
BusyBox版本:1.14.1


Fedora10的NFS设置
1、 设置Windows的IP地址为:192.168.1.X(比如我的机器上设置为:192.168.1.80)
2、 关闭Fedora10中的防火墙
3、 设置虚拟机中的Linux为桥接模式:
a) VM——Setting——Network Adapter,选择桥接模式;
b) Edit——Virtual Network Settings——Host Virtual Network Mapping,在VMnet0的下拉框中选择计算机的物理网卡;进入Automatic Bridging选项卡——选中Automatic bridging——“Add”——在弹出的对话框中选则物理网卡——确定
4、 Linux中,系统——管理——网络设备控制——配置——硬件——双击其中的网卡在出现的对话框中,在下拉列表中选eth0——确定——回到网络配置——设备——双击其中的网卡——选静态设置的IP地址,在地址中添:192.168.1.85(主机和虚拟机中的客户机最好设到一个网段上)子网掩码:255.255.255.0默认网关地址:192.168.1.1——确定——回到网络配置——激活

(操作到这里的时候我遇到了一个问题:

提示不存在eth0!我的老天,竟然连网卡都没了?那还得了啊,经过一番尝试和检查,发现是网络硬件设备的设置上出来问题,我的虚拟机中只有eth1连接到硬件设备,而eth0的硬件设备那一栏是空的,不存在虚拟网卡,那样的话只要把eth0的硬件设备设置为eth1或者将eth0改名为eth1然后硬件设备设为eth1再设置好静IP就可以了,在Fedora10中,GUI界面的IP设置有问题,可以通过配置/etc/sysconfig/networking/ifcfg-eth1文件来设置静态IP,这里要注意如果主机的网线没有插的话是主机自己不能PING通自己,而且主机和虚拟机中的客户机也不能相互PINT通,但是虚拟机中的客户机可以PINT通自己。)
5、 配置NFS服务的共享目录:#vim /etc/exports
/root/FamilyGate/nfs *(rw,sync,no_root_squash)这个是配置的NFS服务的目录,即被其他计算机mount的目录 被其他计算机mount的IP(访问权限*表示所有的客户机都可以挂接此目录,rw表示挂接此目录的客户机对该目录有读写权限,no_root_squash表示允许挂接此目录的客户机享有该主机的root身份,即如果客户机上用户是用root用户登录的,那么在NFS服务器上用户也享有root权限), no_root_squash选项时挂接的客户机有主机的ROOT身份
6、 #lokkit关闭防火墙
7、 启动NFS服务器:#/etc/init.d/nfs start(或者#service nfs start),一旦修改了/etc/exports,就要重启nfs服务#/etc/init.d/nfs reload(或者#service nfs restart),显示mount的目录列表#exportfs,运行#mount –t nfs localhost:/root/FamilyGate/nfs /mnt/若nfs服务正常(或者#service nfs status查看nfs的状态),则在/mnt下看到的内容应该和/root/FamilyGate/nfs下的内容一致,如果NFS运行不起来多般是某些网络服务没有起来,那样的话可以用#service network restart启动网络服务,应该可以解决问题。运行#/etc/init.d/nfs stop(或者#service nfs stop)停止NFS服务。


Fedora10的TFTP SERVER设置(TFTP(简单文件传输协议)和FTP(文件传输协议)不同Linux下TFTP的服务器是TFTP SERVER,FTP常用的服务器是VSFTP)
为什么要TFTP服务呢?

呵呵,如果只是下载上百KB的数据文件到开发板上,通过串口协议完全可以实现了,但是整个过程也要等上几分钟!而当制作好了内核镜像和文件系统后,你会发现他们都是上M的文件,要通过串口那几K几K的速度来下载,相信是个人都会疯掉的,而网络在速度方面就具有绝对的优势了,上M的文件也就秒来钟的事情,我下一个内核镜像一般是2秒左右哦,心动不如行动,赶紧来搭建一个TFTP服务器吧!

1. 在最初安装的时候选择legacy network services并安装TFTP SERVER服务器。如果在最初的时候没有安装那也可以到网上下载tftp server的rpm包来安装!

推荐一个下载地址:http://rpm.pbone.net/index.php3

2. 检查系统中是否有安装好TFTP SERVER:#rpm –qa | grep tftp,若出现tftp-server-0.49-1.fc10.i386之类的提示,说明系统中已经装好了TFTP服务了。
3. #vim /etc/xinetd.d/tftp配置tftp,将disable的值改为no,server_args的值为服务器的目录路径,可以根据需要更改。
4. #/etc/init.d/xinetd start(#chkconfig tftp on或#chkconfig xinetd on或#service xinetd start(chkconfig配置服务的方式是可以开机启动的Linux服务有六个运行级别,可以通过chkconfig来配置每个级别上服务运行状况,#chkconfig –list可以列出系统中的所有服务及其运行状况))启动服务。
5. 后来通过不断更改UBOOT中TFTP命令的超时参数发现如果TFTP请求包中发送的超时参数超过一定的值时,Linux上的TFTP SERVER就会返回Unsupported options,但是将超时参数设的太小的话,又造成通信经常性中断,TFTP超时后就会重新开始传输,这样的话就老是完不成传输,不晓得能不能在Linux下的TFTP SERVER中设置一下允许的超时参数,因为在windows下我将超时设为5S都能正常通信,而对Linux我只设了500MS都不可以,真的晕死啊。这里推荐一个超时参数:将UBOOT中传输的超时参数设为100

这要修改uboot中/net/tftp.c中约198行的sprintf((ch ar *)pkt, "%lu", TIMEOUT / 1000);

TIMEOUT / 1000就是要协议中传输的超时参数,将其改为100




楼主最近还看过

SSI ļʱ