一、问题现象
在设置好uboot环境变量bootargs后,通过nfs挂载linux根文件系统,但是经过多次检查和尝试仍无法挂载(编译内核时已开启nfs服务,并且网络参数设置无误),开发板linux输出信息如下:
服务器端Ubuntu版本如下:
二、问题分析
在Ubuntu中查看nfs支持的版本:
sudo cat /proc/fs/nfsd/versions
发现当前版本的ubuntu不支持nfs v2版本
三、解决方案
1.修改服务器端nfs配置文件
参考文档:
①嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)-CSDN博客
②解决Ubuntu 22.04 LTS作为nfs server时根文件系统挂载失败的问题_ubuntu nfs挂载没反应-CSDN博客
按此方案修改之后再次查看,依旧没有出现+2/-2版本
2.更改服务器端Linux内核版本
参考文档:
①Ubuntu 22.04版本无法挂载NFS V2的解决方法-OpenEdv-开源电子网
②解决Ubuntu 22.04不支持nfs 2服务导致开发板挂载失败的问题_vfs: cannot open root device “nfs” or unknown-bloc-CSDN博客
此方案通过切换低版本内核,解决Linux kernel 6.2及以上版本不支持nfs v2的问题,但未尝试。
3.直接使用旧版本的Ubuntu
参考方案2,使用旧版本的Ubuntu,Ubuntu和内核版本如下:
查看nfs支持版本如下:
此时已经支持了nfs v2版本。
安装nfs服务器,并设置好挂载路径,重新启动开发板,成功挂载rootfs!
开发板输入df -h
命令,验证rootfs是否从nfs服务器挂载: