解决Ubuntu 22.04 LTS作为nfs server时根文件系统挂载失败的问题

        近期在调试IMX6ULL开发板,为了方便,准备以nfs的方式通过网络挂载根文件系统。挂载方法如下:

使用busybox构建根文件系统,这个过程不谈,网上有很多教程。

一,server配置(Ubuntu 22.04 LTS)

1.1.安装NFS

sudo apt-get install nfs-kernel-server

1.2.server创建共享目录,并给予可执行权限

sudo mkdir ~/linux/nfs
sudo chmod 777 ~/linux/nfs

1.3.配置NFS服务

sudo vim /etc/exports

在最后添加

/home/zzzz/linux/nfs *(rw,sync,no_root_squash)

1.4.重启NFS服务

sudo service nfs-kernel-server restart

二、板端配置

2.1.设置bootargs参数

确保板端与server处于同一网段且能ping通server,这部分网上也有很多教程,大家可以自行去查。

设置u-boot bootargs,参数信息需要根据自己的环境配置,具体怎么写可以参考linux源码目录下的Documentation/filesystems/nfs/
nfsroot.txt,也可以直接度娘,在此不赘述,只是给大家参考。

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.31.47:/home/zhangyuchi/linux/nfs/rootfs,proto=tcp rw ip=192.168.31.55:192.168.31.47:192.168.31.1:255.255.255.0::eth0:off'
saveenv

设置完之后print bootargs检查确认一下,这里的信息很重要,如果有错误后面肯定是挂载不上的。

2.2.进入系统

输入boot命令后回车即可

问题及解决

如果u-boot版本比较低时,而使用的server版本较高时,这时候就可能会挂载不成功。这是因为u-boot仅支持nfs v2,不支持nfs v3,而ubuntu 18之后则不再支持nfs v2。

解决办法

1.server端使能nfs v2

1.1-1.ubuntu18之后的版本

sudo vi /etc/default/nfs-kernel-server

将RPCNFSDCOUNT=8修改为RPCNFSDCOUNT="8 -V 2"

 1.2-2.ubuntu22.04 LTS(这是本文最重要的地方,因为ubuntu 18版本解决方法网上很容易搜到,而ubuntu 22.04并不能使用相同的修改办法)

sudo vim /etc/nfs.conf

将vers2=n改为vers2=y,并把前面的#去掉

 Ps.Ubuntu不同版本修改nfs配置的方法在ubuntu官网上有介绍,本文便是参考的官网描述:

1. 2.修改完后重启nfs服务

sudo service nfs-kernel-server restart

1.3.确认nfs v2已成功开启

sudo cat /proc/fs/nfsd/versions

 下面有+2就是成功了!、

开发板重新boot就可以挂载上根目录了:

2.板端使能nfs v3

板端需要支持nfs v3,这样的话只要在bootargs中加上‘nfsvers=3’即可。

  • 16
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值