学到了nfs这里遇到了困难,即使照着友善之臂给的数据手册做也不行,因为里面有错误(后面我会介绍的),所以大家不能只照着他给的文档做。
对于新手,首先我们要了解nfs到底是干什么用的,使用 nfs,用户要将板子要用到的 根文件系统 (这里一定记住,我就是在这里耽误很久)放在主机共享目录下,开发板则通过以太网挂载到这个目录并将这个目录下的文件作为根文件系统的内容,这样用户的程序更新后不必重新烧写板子的根文件系统,这样便能被重新使用,这点能够大大加快程序的调试。 所以说nfs主要是在嵌入式 linux 开发中调试程序用。
开发平台:window 7 x86 sp1 linux:fedora 9 虚拟机:vmware 9
在这之前一定要配置好 开发板和fedora9和window 7的ip 这里有教程 http://blog.csdn.net/lsyz0021/article/details/10185309
设置好ip之后 插上网线使开发板和电脑连在一起(就是开发板插网线的一头,电脑连接另一头) 开发板 、window 和fedora9 一定要两两相互ping通
这里我设置的ip如下
fedora9:192.168.150.21 开发板:192.168.150.22 window 7:192.168.150.23
1、①查看是否安装了nfs软件 rpm -qa | grep nfs
②启动nfs service nfs start
查看运行状态
③设置共享目录(这里我设置了两个目录)
/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 *(rw,sync,no_root_squash)
这里的/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 是指的共享的目录。 rootfs_qtopia_qt4文件夹里面放着开发板启动的需要的根文件系统(如何在这个文件夹下放置放置根文件系,我说一下。友善之臂自带的光盘A里linux文件夹里有个rootfs_qtopia_qt4-20120828.tar.gz这个文件,这里面就是根文件系统,将这个文件解压安装到/opt/FriendlyARM/mini6410/linux/目录里,这样才可以。以后你想再设置一个共享其他的目录作为启动目录都安装或者复制这个文件夹的所有文件,复制的命令一定要有 cp -a ,-a说明的是复制所有的属性和连接)
*:表示所有的客户端都可以挂载次目录
rw:可读 可写
sync:同步
no_root_squash:表示挂载的此目录客户端都可以有root权限
这里都不要改只改目录就行。
④使设置生效 exportfs -ra (没有出现任何东西说明对了)
查看设置的共享目录 exportfs -v
试着一下看看能否挂载输入一下命令
mount -t nfs localhost:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 /mnt/
如不出现任何文件就说明成功了,你可以去mnt目录下看看是否和rootfs_qtopia_qt4一样,一样的话说明就成功了。
⑤设置开机自启nfs 输入下面命令
serviceconf
(以上的设置都是在fedora9中设置的,没有用的开发板,下面才用的开发板)
2、开发板以nfs启动
你可以试着在开发板中也就是在超级终端里输入一下命令试试能否用nfs挂载,将我们刚才共享的目录挂载到开发板的mnt目录下(192.168.150.21 这个ip是fedora9中的)
mount -t nfs 192.168.150.21:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 /mnt/
没提示说明成功了,这样的话你可以去mnt目录下看看是否有rootfs_qtopia_qt4文件夹下的文件,如果有说明就可以了。
如果出现这个提示或者其他提示的话 mount: RPC: Unable to receive; errno = No route to host
再试试这个方式:
在fedora里输入 service iptables stop 这是清除防火墙规则,或者关掉所有的杀毒软件
下面让开发板以nfs方式启动
首先编辑此段代码:(友善之臂给的路径不对)
console=ttySAC0 root=/dev/nfs nfsroot=192.168.150.21:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 ip=192.168.150.17:192.168.150.21:192.168.150.255:255.255.255.0:linux.arm9.net:eth0:off
解释一下其中的意思:
console=ttySAC0 ttySAC0 作为控制台
root=dev/nfs 固定格式,表示内核采用nfs 方式起根文件系统
nfsroot=192.168.150.21:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4
表示的是 nfs 起的根文件系统位于 nfs 服务器 /opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 目录下
ip=192.168.150.17:192.168.150.21:192.168.150.255:255.255.255.0:linux.arm9.net:eth0:off
这句话的格式是:ip=IP1:IP0:IP2:IP3:name of you:eth0:off
第一项(IP1)是目标板的临时IP(注意不要和局域网内其它的IP有冲突)
第二项(IP0)是我的虚拟机里fedora的IP
第三项(IP2)是目标板上网管(GW)的设置,这个参数设置跟虚拟机网管一致
第四项(IP3)是子网掩码
第五项(your name)是开发板的名字(随便起)
然后让开发板以SDboot方式启动进入uboot模式,在超级终端里选择 s 将刚才编好的代码粘贴到超级终端里,按下回车键(这里要注意了,将开发板调到nand方式再启动,直接启动会出现错误)
这样就好了