ARM开发板在Ubuntu 22.04环境下无法使用NFS根文件系统求助
ARM开发板在Ubuntu 22.04环境下无法使用NFS根文件系统求助
嘿,我仔细扒了你的问题描述、启动日志和抓包数据,问题根源基本能锁定在Ubuntu 22.04默认的NFS配置和你ARM板的启动环境不匹配上,咱们一步步来解决:
核心问题拆解
从抓包和日志里能看到两个关键异常:
- 你的ARM板向新主机发起NFSv2(RPC 100003/2)端口查询时,主机返回
PROGRAM_NOT_AVAILABLE——说明Ubuntu 22.04默认没启用NFSv2服务,而你的ARM板启动程序还在依赖这个旧版本 - 后续ARM板发NFS请求时收到“端口不可达”的ICMP错误,本质也是因为NFSv2服务没运行,对应的监听端口根本不存在
之前Ubuntu 18.04能正常工作,是因为旧版本默认会开启NFSv2,而22.04默认只支持NFSv3和v4。
具体解决步骤
1. 开启NFSv2服务
编辑NFS内核服务器的配置文件:
sudo nano /etc/default/nfs-kernel-server
找到RPCNFSDOPTS这一行,修改为同时兼容多个版本:
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
2. 重启相关服务
保存配置后,重启NFS和rpcbind(Portmap是它的旧称,负责RPC端口映射):
sudo systemctl restart nfs-kernel-server sudo systemctl restart rpcbind
3. 检查防火墙规则
Ubuntu 22.04默认开了ufw防火墙,得确保NFS和rpcbind的端口能被ARM板访问:
sudo ufw allow rpcbind sudo ufw allow nfs
要是还不行,可以临时关闭ufw测试:
sudo ufw disable
确认能挂载后再重新配置防火墙规则就行。
4. 优化exports共享配置
检查/etc/exports里的共享目录配置,给ARM板的IP(192.168.1.6)加上insecure选项(因为ARM板启动程序可能用非特权端口发起请求,NFS默认只认特权端口):
/home/super8 192.168.1.6(rw,sync,no_subtree_check,insecure)
修改后重新导出共享目录:
sudo exportfs -ra
验证效果
做完上面的操作后重启ARM板,观察启动日志如果能走到VFS: Mounted root (nfs filesystem)这一步,就和你之前18.04环境的成功状态一致了,问题也就解决啦。
备注:内容来源于stack exchange,提问作者afreed58
相关产品推荐
相关产品推荐

