开发板无法nfs挂载根文件系统 |
您所在的位置:网站首页 › 无法挂载firmware › 开发板无法nfs挂载根文件系统 |
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版本已存在,问题到此解决。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |