开发板无法nfs挂载根文件系统

您所在的位置:网站首页 无法挂载firmware 开发板无法nfs挂载根文件系统

开发板无法nfs挂载根文件系统

2024-06-17 15:05| 来源: 网络整理| 查看: 265

1.BUG现象

开发板能够ping通ubuntu,而且可以执行tftp功能,但是在通过nfs挂载根文件系统的时候挂载失败。

2.BUG原因

比较老一点的u-boot仅支持nfs v2,而Ubuntu 22.04默认把nfs v2服务和udp端口关闭了,导致文件系统挂载失败。

3.BUG解决

解决思路:

/uboot不变,让ubuntu 去适应低版本的uboot/

①手动将ubuntu 22.04的nfs v2服务和udp端口打开。

②下载较低版本的ubuntu,比如ubuntu 16.04,它默认的是将nfs v2服务和udp端口打开

/ubuntu不变,让uboot去适应高版本的ubuntu/

①下载更加新的uboot,它可能会提供nfs v3服务,与高版本ubuntu 提供的nfs v3服务适配

我选择的方法是手动将ubuntu 22.04的nfs v2服务和udp端口打开。

我使用的是正点原子的I.MX6ULL开发板,其他类型的开发板类似。首先根据官方资料将开发板的驱动程序改写好。这里不做过多的赘述。

下面进入正式的步骤:

我们通过sudo cat /proc/fs/nfsd/versions 可以查看当前版本的ubuntu支持的nfs版本。我这里支持v3 v4但是不支持v2。

为什么说高版本的ubuntu不支持nfs v2呢?因为高版本的ubuntu 它的内核更加新。

使用命令dpkg --get-selections | grep linux-image 查看内核版本:

根据资料可知是由于6.2.0-37版本的内核不提供nfs v2。我们要解决这个问题,下载低版本的内核就行。这里也不用担心下载低版本的内核,原本的就会被永久替换,内核版本可以随时更换。

命令sudo apt-get install linux-image-5.19.0-41-generic 下载5.19.0-41版本的内核。

下载完成之后更改系统默认的内核版本:sudo vim /etc/default/grub

保存之后更新grub文件。sudo update-grub

然后重启ubuntu。uname -a 查看内核版本,看是否切换内核成功。

之后修改配置文件sudo vim /etc/default/nfs-kernel-server

修改完后重启服务**sudo service nfs-kernel-server restart**

查看路径是否正确sudo vim /etc/exports

修改udp设置sudo vim /etc/nfs.conf

重启服务sudo service nfs-kernel-server restart

netstat -a | grep "nfs”可以看出udp端口已打开

最后sudo cat /proc/fs/nfsd/versions 发现v2版本已存在,问题到此解决。

行文至此,落笔为终。码字不易,拜谢各位读者大大关注3连哦!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3