正点原子开发板NFS挂载根文件系统失败问题解决:Unable to mount root fs via NFS, trying floppy.

在使用正点原子开发板进行Linux根文件系统移植时,通过NFS挂载根文件系统是常用的调试方式,但有时会遇到内核启动后无法挂载NFS的问题。本文记录一次典型的排查与解决过程,供同类型开发板用户参考。

一、问题现象

开发板启动时出现Kernel panic,关键错误信息如下:

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

在这里插入图片描述

从日志可见,内核尝试通过NFS挂载根文件系统失败,且没有找到可用的本地设备作为备选。

二、排查过程

  1. 检查U-Boot启动参数
    首先查看当前的bootargs配置(通过U-Boot命令行执行printenv bootargs):

    bootargs=console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.3.127:/home/wheeltec-client/linux/nfs/rootfs,proto=tcp rw ip=192.168.3.128:192.168.3.127:192.168.3.1:255.255.255.0::eth0:off
    

    配置中已正确指定NFS服务器IP、根目录路径及网络参数,初步判断参数格式无误。

  2. 验证NFS服务器配置
    登录NFS服务器(192.168.3.127),检查/etc/exports文件确认目录已正确导出,且包含rwno_root_squash等权限参数,并通过exportfs -r刷新配置,排除服务器配置问题。

  3. 测试网络连通性
    通过开发板临时系统(如SD卡启动的Linux)验证与NFS服务器的网络连接,ping 192.168.3.127能正常通信,排除物理连接和IP配置问题。

  4. 排查内核与NFS版本兼容性
    正点原子提供的Linux内核默认可能优先支持NFSv3,而部分NFS服务器默认启用NFSv4,导致版本不兼容。这是本次问题的核心原因。

三、解决方法

在U-Boot的bootargs中为NFS指定版本号(强制使用v3),具体操作如下:

  1. 进入U-Boot命令行(开发板启动时按任意键中断自动启动)。
  2. 修改bootargs参数,在nfsroot后添加vers=3
    setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.3.127:/home/wheeltec-client/linux/nfs/rootfs,proto=tcp,vers=3 rw ip=192.168.3.128::192.168.3.1:255.255.255.0::eth0:off'
    
  3. 保存配置并启动:
    saveenv  # 保存参数(可选,若需长期生效)
    boot     # 启动系统
    

修改后,内核会明确使用NFSv3协议挂载根文件系统,解决版本不兼容问题,系统可正常启动。

在这里插入图片描述

四、总结与注意事项

  1. 核心原因:NFS服务器与开发板内核的NFS版本不兼容(服务器默认v4,内核默认支持v3)。
  2. 关键解决点:在bootargsnfsroot参数中通过vers=3指定NFS版本。
  3. 额外建议
    • 确保NFS服务器/etc/exports配置中包含客户端IP(或网段)的权限。
    • 正点原子开发板的网卡通常为eth0,若使用其他型号需对应修改ip参数中的网卡名。
    • 内核编译时需开启NFSv3支持(CONFIG_NFS_V3=y),可在menuconfig中确认。

通过以上步骤,可快速解决正点原子开发板NFS挂载失败的问题,提高开发调试效率。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐