网络文件系统(NFS,Network File
System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。
在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP
方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把Linux
服务器上的特定分区共享到待调试的嵌入式目标系统上,就可以直接在嵌入式目标系统上操作Linux
服务器,同时可以在线对程序进行调试和修改,大大的方便了软件的开发。因此,NFS 的是嵌入式Linux
开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式Linux 的NFS 开发环境。
注:因为开发板的文件都是临时储存在SDRAM上的,掉电即失,而cramfs文件系统式只读的,所以为了避免每一次都需要用FTP下载运行程序,配置NFS服务是理想的。
网上说要开启portmap服务和nfs服务,但是portmap服务已经过时了,在Fedora 8中不需要,需要的是rpcbind套件,还有nfs套件
命令如下:
1。检查有无这两个套件 rpm -qa |grep rpcbind
2. 安装 yum
install -y rpcbind
3.开机自动启动服务 chkconfig --level 35
rpcbind on
启动服务service rpcbind on
修改配置,添加NFS支持后,内核大小由1.5M增大到1.7M。
使用默认的设置,ifconfig的时候,没有eth0的信息。
很可能网卡没有被识别?或者内核模块没有编译进去?
如果内核编译成功,应该是:
# lsmod
Module Size Used by
digi 5968 0 (unused)
ssiDAC3550a 4612 0 (unused)
i2c-ssi 1104 0 [ssiDAC3550a]
i2c-aa 4744 0 (unused)
cs89x0 10768 1
hwb 1224 0
usb 6864 0 (unused)
|
而没有eth0的内核,lsmod的时候,却没有一个moduel被加载。那么应该不是eth0没有被编译进内核,不可能所有的模块都没有被编译进去。
现在能够找到的类似现象的解释是:编译内核的版本和编译模块的版本不是同一个,或者说不是同一个配置文件。因为rootdisk里的模块都是开发板附带提供的编译好的。
因此,试着完整的编译内核和模块一次看看。(问题:make moduls:
nothing to be done for make modules。)
别人用默认配置编译的内核就可以lsmod,但是我编译的就比原来的大一些,就不能用了。但是在Fedora上制造的文件系统可以用。
应该是我的环境的问题?
上述问题已经解决,原因是Fedora8是一个不合适开发的版本。
使用2.4内核和gcc2.9的Redhat7就比较合适了。
接着按照:
的方法设置服务器端和客户端。
但是新的问题出现了:
NFS: mount program didn't pass remote address
上网查了一下,原因应该是
你如果用的是busybox的话
先选中 Busybox Settings -> General configuration -->
RPC support ,
这项选中以后 ,mount 下的 出现nfs。
select nfs 即可。
虽然没有找到PRC选项,但是找到了nfs的相关选项,重新编译了busybox后成功。具体见“编译busybox”一文。
现在可以支持NFS了。
阅读(1546) | 评论(0) | 转发(0) |