四、完整开机log针对STM32MP135无法通过NFS挂载根文件系统并报错 root '/dev/nfs' doesn't exist 的问题,以下是可能的原因和解决方案:
NFS导出路径权限不足
/etc/exports文件,确保导出的路径(如/home/alientek/ATK-DLMP135/nfs/rootfs)已正确配置为允许客户端的IP访问: /home/alientek/ATK-DLMP135/nfs/rootfs 192.168.6.41(rw,sync,no_subtree_check)exportfs -arv 重新加载配置,并重启NFS服务: sudo systemctl restart nfs-serverNFS版本兼容性问题
bootargs的nfsroot参数中明确指定NFS版本(如vers=3): nfsroot=192.168.6.137:/home/alientek/ATK-DLMP135/nfs/rootfs,proto=tcp,vers=3/etc/nfs.conf或/etc/sysconfig/nfs)。CONFIG_NFS_FS=y # NFS客户端支持
CONFIG_ROOT_NFS=y # 允许NFS作为根文件系统
CONFIG_IP_PNP=y # 支持动态IP配置
CONFIG_NETWORK_FILESYSTEMS=yIP参数格式错误
ip=参数格式: ip=::::::off 确保eth1是实际使用的网口名称(可能是eth0或其他名称)。
ip=192.168.6.41:192.168.6.137:192.168.6.1:255.255.255.0::eth0:offNFS路径或协议错误
nfsroot路径与服务器导出的路径完全一致,注意大小写和末尾斜杠。 nolock选项禁用文件锁: nfsroot=192.168.6.137:/home/alientek/ATK-DLMP135/nfs/rootfs,proto=tcp,vers=3,nolock服务器防火墙阻止连接
sudo ufw disable客户端网络接口未初始化
bootargs中添加net.ifnames=0禁用网卡重命名,确保使用eth0等传统名称。在Ubuntu上监控NFS连接
tail -f /var/log/syslog | grep nfs在U-Boot中手动测试NFS挂载
nfs ${loadaddr} 192.168.6.137:/home/alientek/ATK-DLMP135/nfs/rootfs/path/to/file确认是否能读取文件。
根文件系统内容不完整
rootfs目录包含完整的Linux根文件系统(如/bin, /lib等)。内核启动参数传递错误
bootargs通过正确的环境变量传递(如mmc dev 0; env set bootargs ...; run netboot)。/etc/exports配置,重启NFS服务。bootargs中明确指定vers=3和nolock。按上述步骤排查后,应能解决NFS根文件系统挂载失败的问题。
举报
更多回帖