nfsroot配置要点
系统环境
Linux版本:Ubuntu 22.04 LTS
开发板内核板本:2.6.32
错误代码
Looking up port of RPC 100003/3 on 192.168.60.238
Root-NFS: Unable to get mountd port number from server, using default
故障分析
kernel 启动代码为:
set bootargs root=nfs nfsroot=192.168.60.238:/opt/filesystem,v3 ip=192.168.60.237 init=/linuxrc console=ttySAC0,115200
通过Linux主机挂载nfs正常。
仔细比较,在ubuntu 18.04版本中能正常启动,但是在22.04版本中失败。应该是NFS版本出现了改动修改了有关挂载配置。开发板内核版本中的nfs太老旧导致出现了问题。
仔细翻阅了nfs有关手册,无果。
突然觉得应该返璞归真,不要想得那么复杂。既然错误代码提到了port那我就检查一下port。终于发现了ubuntu 22.04默认关闭了nfs的udp端口连接
再次翻查了手册,似乎认为udp不够安全稳定在新版系统中默认关闭了。而开发板默认使用udp连接,无法自动切换tcp。所以开发板不能正常挂载。
解决方法
方法一
修改kernel启动参数,使用tcp挂载:
set bootargs root=nfs nfsroot=192.168.60.238:/opt/filesystem,v3,tcp ip=192.168.60.237 init=/linuxrc console=ttySAC0,115200
方法二
添加/etc/nfs.conf.d/udp.conf
文件,启动主机的udp连接:
[nfsd]
udp=n