使用portmap+nfs-utils的工具在hi3536的linux系统上搭建nfs服务器,使用VM虚拟机中的ubuntu作为客户端挂载,进行文件的读写。
编译能够支持nfs server的内核
1.首先对linux内核进行修改,让linux内核支持nfs服务器的功能,修改方式是在内核目录arch/arm/configs目录下的hi3536d_defconfig文件添加如下图所示,再进行内核编译,并将内核下载板卡上。
另外一种方法就是运行make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- menuconfig
选上NFS server的这些,然后save保存后退出
然后再编译出内核make -j8 ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- uImage
这样内核便编译出来了,uImage专门就是uboot可以识别的一种内核镜像
编译方法:
cp arch/arm/configs/hi3536_spinand_slave_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- uImage
portmap和nfs-utils下载地址
https://download.csdn.net/download/qq_40170041/87848683
交叉编译portmap
make CC=arm-hisiv400-linux-gcc clean
make CC=arm-hisiv400-linux-gcc
生成 portmap
交叉编译nfs-utils-2.5.1
./configure --prefix=$(pwd)/output/v400 CC=arm-hisiv400-linux-gcc --disable-nfsv4 --disable-ipv6 --disable-gss --disable-uuid --disable-mount --without-tcp-wrappers --disable-tirpc --host=arm-hisiv400-linux
make && make install
编译安装后
将交叉编译好的portmap和nfs-utils放入板卡
将rpc.statd, rpc.nfsd, rpc.mountd, exportfs放到板子的/usr/sbin目录下,将portmap放到板子的/sbin目录下
设置板子的共享文件夹
在板子的/etc/目录下新建一个exports文件,写入如下
/nfsd *(rw,fsid=0,no_subtree_check)
其中/nfsd就是共享文件夹,这个文件夹可以改变为想要共享的文件夹的名字。
/etc/services中保存了主机中所有网络服务的端口号,这里要加入支持nfs的默认端口,需要未使用的端口
将这两条写入/etc/services文件,必须要有这一步。
设置nfs server开机自启动
将S60nfs文件拷贝到板子的/etc/init.d
运行/etc/init.d/S60nfs restart
出现的错误都是文件不存在,这一块都是为了一些锁而创建的,不需要考虑。
挂载验证
在ubuntu下运行下面的命令,其中20.230是板子的IP
这样可以在/mnt/data目录下看到板子共享文件夹中的内容。