i.MX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2,0)

i.IMX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2,0)


开发环境:

  • 移植的linux5.4.7.0
  • ubuntu1804 x64
  • arm-linux-gnueabihf-gcc v7.5

NFS方式挂载根文件系统失败,提示:

[  101.168510] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  101.176792] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) ]---

错误码说明:

  • 0:大概率是网卡驱动问题或者文件系统不存在
  • 1:确保zImage正确,同时必须确保把镜像烧写到正确的地址,如果以nfs方式加载镜像的话,确保不要超出ram的地址范围
  • 2:linux主机上面的nfs服务是否安装好
  • 3:linuxrc的权限问题没有设为可执行文件,在制作根文件系统时,最好 chmod 777 linuxrc 一下,以免出现Failed to execute /linuxrc的麻烦

而我的错误码是unknown-block(2,0),错误码为2,说明错误因为大概率是linux主机的nfs安装问题,检查nfs后并没有发现问题,遂又去查看NXP官方EVK开发板里的imx6ullevk.h里的运行脚本:

发现他是使用dhcp自动获取的ip,这个不用管,但是后面添加了v3,tcp这两个参数,不知道什么意思,遂去查看linux内核源码目录下Documentation\filesystems\nfs\nfsroot.txt文件,这个文件是介绍从网络挂载文件系统时候设置bootargs变量的方法,从该文件中了解到v3表示指示NFS使用v3版本协议,tcp表示使用的是tcp协议。


1、方式一:更改bootargs参数

后又从网上了解到,uboot中默认是使用NFS-V2协议,而ubuntu1804默认使用的是NFS-V3协议,这就造成了挂载时候的不兼容,造成挂载不上。

那么将原本的参数:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.28.254:/rootfs ip=192.168.28.234:192.168.28.254:192.168.28.1:255.255.255.0::eth0:off'

改为:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.28.254:/rootfs,v3,tcp ip=192.168.28.234:192.168.28.254:192.168.28.1:255.255.255.0::eth0:off'

即可挂载成功!


2、方式二:更改ubuntu的NFS配置参数

上面那种方式是指定bootargs变量,但是如果你移植的uboot和linux内核版本不是很新的话,uboot和内核还不支持NFS-V3版本协议,那么就只能修改ubuntu的NFS配置了。

问题解决:

vim /etc/default/nfs-kernel-server 

在文件末尾加入:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

重启NFS:

/etc/init.d/nfs-kernel-server restart

这样就能开发板就能挂载上了!


ends…

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

觉皇嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值