用于嵌入式开发的NFS环境搭建

2019-07-13 06:47发布

         最近搞个嵌入式Linux项目,工程比较大,如果每次进行镜像烧录耗时太大,而且频繁烧录对NAND FLASH的损耗也比较大,于是想搭一个 nfs(Network File System, 网络文件系统)环境加速调试速度。sun搞的这个文件系统用起来还是相当不错的,远程共享目录和文件,利用RPC(Remote Procedure Call)协议进行数据的交互。闲白不扯那么多了,搭建这个环境网上其实有很多筒子们都有写过,这里记录下自己的搭建过程,算是经历过,既方便以后自己看,也给后来人一个参考。         虽然文章名字叫嵌入式开发的nfs环境搭建,其实思路与桌面机的搭建是一样的,无非是配置服务器和客户端而已。服务器端我用的是装有ubuntu10.04.4 LTS的PC,客户端是基于嵌入式Linux的ARM9开发板。两部分环境搭建的步骤归纳如下; 1)、PC服务端:          1、安装服务软件:nfs-kernel-server 和 portmap          2、服务配置:共享目录配置,访问权限配置
         3、测试 2)、ARM客户端:          1、嵌入式Linux系统定制,加入NFS支持的特性          2、测试
1、PC服务端        1)、安装服务软件: sudo apt-get install nfs-kernel-server portmap 如果想将PC同时作为客户端的话,再多执行一条命令: sudo apt-get install nfs-common 考虑到本机测试方便,最好安装下客户端。然后执行nfs server的启动命令: sudo /etc/init.d/nfs-kernel-server start 若安装成功,ubuntu终端提示:Starting NFS kernel daemon

        2)、服务配置:                   共享目录配置,打开文件/etc/exports,添加预共享的目录,我PC上的该文件添加之后内容如下: # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /home/helei/nfsroot *(rw,sync,no_root_squash) 关于文件内容中的提到的NFSV2和NFSV3,添加共享目录的格式以及权限说明,可参考该博文。执行命令: showmount -e 可以看到本机共享出来的NFS目录。
                服务器访问权限配置,主要是设置/etc/hosts.deny和/etc/hosts.allow两个文件,关于这两个文件的作用和设置说明见博文

         3)、测试                    执行命令: mount 本机IP:共享目录的绝对路径 /mnt
        然后执行命令: ls -l /mnt 如果成功,则可以看到NFS共享目录里的内容啦
2、ARM客户端
        1)、嵌入式Linux系统定制,加入NFS支持的特性                   我的内核版本是2.6.35,其他的不多说,需要添加的NFS支持特性在Network File Systems下,添加特性如下:
上面将NFS的客户端、服务端以及将其作为根文件系统的特性都添加进来了。

        2)、测试                   修改ARM开发板的uboot的启动参数,在其中添加如下内容: root=/dev/nfs rw nfsroot=PC服务器的IP:共享目录 如我的设置就是: root=/dev/nfs rw nfsroot=192.168.1.62:/home/helei/nfsroot/
这样启动系统后,ARM开发板的根文件系统就是远程PC服务器上的共享目录。如果调试程序的话,直接将相关库文件或应用程序拷贝到该目录下即可。
参考博客: http://linux.chinaunix.net/techdoc/system/2009/02/06/1060861.shtml http://os.51cto.com/art/201001/176511.htm http://blog.sina.com.cn/s/blog_55465b470100il34.html