红联Linux门户
Linux帮助

Linux+ARM环境配置-NFS

发布时间:2014-12-15 15:51:34来源:linux网站作者:yimu13

今天主要总结一下ARM+linux开发环境配置的nfs服务。

开发板 mini2440

PC系统 Windows

虚拟机系统 Fedora 9.0

配置nfs服务好几天,今天终于配好了,但是发现我接下来不知道要干什么了,nfs干嘛的,有什么用,我也不知道,我只知道书上还有手册上说用nfs开发很方便,可以通过网路远程访问。上网查了一下,还是不是很明白,不过把自己的一些见解和配置nfs过程的问题总结一下。


1.什么是nfs?

nfs是network file system的缩写,既网路文件系统,最大的优点就可以共享。然后更多的关于nfs的知识可以上网搜一下,比较多,而且写的也全,我自己就不多说了。首先nfs服务先要配置nfs服务器,然后再把服务器上的目录或者文件共享。涉及到我们的配置nfs有俩个方面,一个配置nfs服务器,二是挂载共享目录。当然还可以利用nfs来启动开发板,这个是另外一个知识点。这样一来事情就比较明朗了,我们首先要在服务器上配置nfs,这个服务器当然是在fedora,我们这里的客服端,就是要访问共享目录的一段是开发板的系统。有什么好处?这样一来原本需要放在目标板mini2440上的文件或者目录,现在就可以放在服务器上,然后通过nfs共享目录,目标板mini2440就可以通过共享来操作目录了。这样就扩大了目标板的资源,而且还非常方便的和服务器fedora进行交互。虚拟机上面的linux系统(也就是这里的fedora)一般是我们用来进行交叉编译开发的环境,这就需要我们和目标板mini2440进行交互,通信等等,这样用nfs就非常方便了。


2.nfs服务器的配置

弄清楚整个nfs要干什么才能知道自己要配置什么,一开始我们可以照着用户手册上的一步步配置,但是总是会有问题出现,这时候就需要思考这个问题了。

2.1.配置前的准备工作

先检查linux系统(我用的是fedora9.0)是否安装了俩个软件包 nfs-utils和portmap ,注意fedora9.0或者以后的版本好像都用rpcbind套件代替了portmap软件包。

命令#rpm –q nfs-utils portmap

或者

[root@localhost root]#rpm –qa|grep portmap

//查看portmap软件包是否安装

[root@localhost root]#rpm –qa|grep nfs

//查看nfs软件包是否安装

如果没有安装会出现没有安装的信息

fedora9.0检查rpcbind命令

rpm -qa |grep rpcbind
如果没有安装那个软件包或者套件的话需要安装,一般系统光盘里面会有这些软件包。

2.2.检查服务器是否启动

#service portmap status

#service rpcbind status (fedora)

#service nfs starus

如果没有启动,则用start代替上面的status来启动服务如 #service portmap start 或者#/etc/init.d/nfs start

问题1:不知道要装这几个软件包,一般装系统的时候会装上,但是我的没有装上,导致后面出现很多问题,而且解决问题也是走了很多的弯路。一定要注意检查上面的服务,没有要先装上。

问题2:fedora用rpcbind代替了portmap。Portmap用来端口映射的,要不然会总是找不到端口服务

这里有个RedHat安装portmap的过程

[root@localhost root]#mount /dev/cdrom /mnt/cdrom

//如果没有安装,则将Red Hat Linux 9.0的第一张镜像盘挂载到虚拟机上,两个主安装包都在第一张镜像盘

[root@localhost RPMS]#cd /mnt/cdrom/RedHat/RPMS/

//切换到安装包目录,

[root@localhost RPMS]#ls –l portmap*

//显示以portmap开头安装包的详细信息

[root@localhost RPMS]#rpm –ivh portmap-4.0-54.i386.rpm

//安装并用进度条显示安装过程

[root@localhost RPMS]#ls –l nfs-utils*

//同理,显示nfs安装包

[root@localhost RPMS]#rpm –ivh nfs-untils-1.0.1-2.9.i386.rpm

//安装nfs

问题3:光盘镜像中的文件要先挂载,上面redhat安装就有。其实fedora9.0的rpcbind在package里面,而且不能直接在光盘里面安装,我的光盘是只读了,可以拷贝到其他路径然后再安装。

2.3.nfs配置文件

/etc/exports

这个很多地方都有说,安装手册上的配置就可以了,不过在fedora文件界面用gedit不能用,那就用vi/vim 就好了

更改exports文件内容后,可以用命令#exportfs –rv 可以让新设置的“exports”文件内容生效。

2.4.关闭防火墙

nfs服务需要关闭防火墙,有多个方法可以用命令#lokkit 然后弹出图形界面在选择关闭防火墙,还有很多办法,但是记得要关闭防火墙。要不然可能会出现找不到端口等错误。

2.4.检查nfs服务是否启动

#/etc/init.d/nfs start

这将启动nfs 服务,可以输入以下命令检验 nfs 该服务是否启动。

# mount -t nfs localhost:/opt/FriendlyARM/mini2440/root_qtopia   /mnt/

如果没有出现错误信息,您将可以浏览到 /mnt 目录中的内容和

/opt/FriendlyARM/mini2440/root_qtopia是一致的。

使用这个命令可以停止 nfs 服务:

#/etc/init.d/nfs stop

这里一个非常粗心的问题,在“:”和“/”后面加了一个空格,导致出现一大堆mount命令的提示信息。开始还不知道是什么问题,上网搜了好多,还去该了好多配置文件。恩,这个以后可以注意,当提示很多关于命令怎么用的信息时,肯定是命令输入错误了。


3.nfs启动开发板

其实nfs启动开发板配置操作都不是很多,但是问题最多,而且出现问题了都是一大推的信息,都不知道从哪里入手。这里安装手册上面的做,而且最重要的就是那条长长的命令param set linux_cmd_line "console=ttySAC0 root=/dev/nfsnfsroot=192.168.0.18:/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4ip=192.168.0.230:192.168.0.18:192.168.1.1:255.255.255.0:sbc2440.arm9.net:eth0:off"中的地址。

第一,还有有必要提一下输入这条命令的环境,一是这条命令在超级终端中输入,我用的是windows的超级终端,而连接好串口和网线(交叉网线)。第二开发板mini2440配置nandflash启动,且在开机或者复位前,按下六个按键的任意一个,注意一定要在开机或者复位之前,按下按键不要松手直到进入vivi模式。

第二,第一次使用这条命令前一定要先启动开发板然后与windows和linux(fedora)互相ping一下,要设置好IP地址,这个很重要。

第三,如果前面的都弄好了使用这条命令的时候出现卡死在企鹅界面上了,而且超级终端上出现等错误的很多情况都应该是IP地址的问题。

VFS: Unable to mount root fs via NFS, trying floppy

VFS: Unable to mount root fs on unknown-block

等出现很多提示信息的错误的时候都可以先检查一下IP。

现在重点讲一下上面的命令的IP,nfsnfsroot后面接的地址是linux服务器的地址(fedora9.0的IP),后面ip第一个是开发板mini2440的地址,第二个是linux服务器的IP地址,第三个是开发板的网关地址,第四个子网掩码,应该都是这么多吧,分别对应各个IP设置好。还有注意这条命令比较长最后复制,但是也要注意,最后放在txt文档中弄成一行,不要有换行,换行的话容易变成几条命令。

至于让开发板和虚拟机和主机互相ping同有时可能也挺麻烦的,我另一篇文章中会专门讲一下。

问题:交叉网线坏了,弄了我走了好多弯路,这个问题比较难发现,我是一次偶然的时候我动了一下网线然后ping同了,但是接下来我再怎么ping都不同,我就怀疑网线有问题,换一根网线果然问题解决。


4.挂载共享目录

这个挂载共享目录的命令用户手册上有 #mount -t nfs -o nolock 192.168.0.18:/opt/FriendlyARM/mini2440/rootfs_qtopia_qt4 /mnt 这个命令的ip地址192.168.0.18是服务器的IP地址,我的是fedora系统的IP地址。

注意这个命令是在服务器的nfs服务启动了,然后开发板的系统也启动了,通过超级终端(我用的是windows下的超级终端,没试过fedora下的)输入的命令,可能超级终端显示界面没有显示命令输入,这时回车一下就好了。

挂载共享目录中间也有一个IP地址,他是linux服务器的IP地址,这里是fedora的IP地址。用这条命令之前要先检查nfs服务是否开启,二是要相互ping通。

到现在整个nfs服务已经配置完成,至于还有很多的文章提到很多地方配置或者还有很多的问题我自己也不清楚就没写了,但是我觉得首先很多一般的问题都可以照着这个步骤解决,我自己就是这样解决的。网上文章很多,我是不懂的啦,我只是照着手册配置好nfs而已,以后继续学习。最后在总结一下一些注意的问题。

第一,检查是否安装了必要的软件包,fedora对应的不同,需要分别对待。

第二,关闭防火墙。

第三,命令比较长而去容易输错,尤其是像空格的,一定要注意。

第四,网路要ping通,确保能够互相连通

第五,对应IP对应设置好

当然还有其他的问题,照着手册配置的时候大概出现了这么多问题吧,呵呵,解决了也挺不错的啦。学习先从照着配置开始啦。