嵌入式linux平台的NFS移植

时间:2022-02-12 08:31:58

 感谢遥姐和超哥!

下载portmap以及nfs-utils源码包,用交叉编译器进行编译:

      configure portmap :./configure CC=交叉编译器的路径 --host=arm-linux

      configure nfs-utils  :./configure CC=XXXX --host=arm-linux --disable-gss

中间会遇到很多问题,缺少各种lib文件,解决方法是下载这些lib的源码包,同样用交叉编译器编译得到.a或者.so库文件,放到工作目录或者交叉编译器的lib中。configure文件中的一些变量也需要修改,比如libwrap = -lwrap就应该改为libwrap=libwrap.a,最重要的是放对目录。注意查看config.log文件的错误信息,比如libwrap缺少某个头文件就应该将这个头文件加入include文件夹中。

     configure portmap之后,将portmap拷入嵌入式文件系统的/usr/local/bin/下即可使用portmap start启动portmap服务。用rpcinfo -p 也可以看到portmap使用了111端口。

      configure nfs之后,就开始:$make

                                                     $make DESTDIR=/home/jellyjar/arm-nfs install(注意不可以使用install strip,交叉编译器无法删除debug信息)

这之后在目标文件夹arm-nfs下生成如下结构的文件:

root@ubuntu:~/桌面/dragon_arm_nfs$ ls
sbin  usr  var
root@ubuntu:~/桌面/dragon_arm_nfs$ ls sbin
mount.nfs  mount.nfs4  umount.nfs  umount.nfs4
root@ubuntu:~/桌面/dragon_arm_nfs$ ls usr/sbin
exportfs  rpcdebug    rpc.mountd  rpc.statd  sm-notify nfsstat   rpc.idmapd  rpc.nfsd    showmount  start-statd

     编译的nfs源码包与apt-get install下载的不一样,aptget下载的dev包都是已经编译好的,无法再次使用交叉编译器编译,。在嵌入式下,nfs的启动很特殊。讲dragon-arm-nfs文件拷贝入嵌入式linux文件系统后,执行如下一连串命令即可启动nfs:

portmap start

切换到dragon_arm_nfs/usr/sbin下执行: ./rpc.statd

                                                                ./rpc.nfsd(这2步可能不成功,按照错误提示添加/var/lib/nfs文件夹即可)

                                                                ./rpc.mountd

与pc机上的nfs不同,可能是由于编译器的关系,嵌入式nfs基于mount,但是mount 192.168.1.153:/nfs/nfsServer /home/nfsclient时mount无法自己调用nfs,必须到dragon_arm_nfs/sbin中使用mount.nfs来远程挂载: ./mount.nfs 192.168.1.153:/nfs/nfsServer /home/nfsClient -w。此时到服务器端showmount -a,即可发现挂在成功啦!大功告成!!!

参考:http://blog.****.net/zuogenyu/archive/2011/02/21/6197473.aspx