嵌入式Linux平台的NFS移植

下载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@:~/桌面/dragon_arm_nfs$ ls
sbin  usr  var
root@:~/桌面/dragon_arm_nfs$ ls sbin
mount.nfs  mount.nfs4  umount.nfs  umount.nfs4
root@:~/桌面/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,即可发现挂在成功啦!大功告成!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24480.html