准备环境
- ubuntu20.04 桌面版 (可联网)
- study210开发板 (可正常启动并且内核镜像配置了nfs文件)
开始搭建NFS
安装NFS
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common
配置etc/exports 文件
sudo vi /etc/exports
在文件末尾加上你的NFS服务路径
/xx/xx *(rw,sync,no_root_squash,no_subtree_check)
如
/home/zcc/x210/porting_x210/rootfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)
修改权限
在终端执行 chmod 777 -R /home/zcc/x210/porting_x210/rootfs/rootfs
测试
sudo showmount -e
更新
sudo exportfs -r
sudo showmount localhost -e
会显示你NFS l路径
重启nfs服务
sudo /etc/init.d/nfs-kernel-server restart
本地挂载测试
mount -t nfs -o nolock localhost:/home/zcc/x210/porting_x210/rootfs/rootfs /mnt
查看 /mnt目录下内容,发现与nfs目录下的一致,说明挂载成功
解绑
umount /mnt
开发板挂载测试
在uboot 控制台 设置bootargs
setenv bootargs root=/dev/nfs nfsroot=192.168.1.141:/home/zcc/x210/porting_x210/rootfs/rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
下面是我的 ubuntu14.04的配置
setenv bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/porting_x210/rootfs/rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
设置好后save保存环境变量,然后 reset 重启开发板。
发现系统启动时挂载不了NFS
经过一番折腾后,发现是nfs协议的问题,之前一直用的是ubuntu14.04,挂载也是正常的。
但是,从Ubuntu17.04开始,nfs默认只支持协议3和协议4,而kernel中默认支持协议2。
故需要修改配置:
1、修改NFS的配置文件
sudo vim /etc/default/nfs-kernel-server
在文件末尾加入:
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
2、重启NFS服务:
sudo /etc/init.d/nfs-kernel-server restart
3、重新启动开发板,系统启动,挂载成功
注:如果kernel版本较高支持nfs协议3的话,可以在Uboot传到Kernel的bootargs参数中加入’nfsvers=3’,使kernel使用nfs协议3
参考:https://blog.csdn.net/p1279030826/article/details/112179714