关于【UBIFS error(pid 0):ubifs_get_sb:cannot open “ubi:nrootfs“,error -19】的解决方式

转载来源: https://blog.csdn.net/zengxianyang/article/details/47833627?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control

今天来讲一个关于UBI文件系统挂载的错误,我是在u-boot模式下挂载UBI文件系统,出现的错误如下图所示:


遇到这种错误,一般是由于你的分区设置不正确导致的。可以到u-boot/include/configs/xxx.h相应的板子配置文件下去查看自己的分区设置是否正确。主要查看MTDPARTS_DEFAULT和CONFIG_BOOTARGS这两个宏的配置是否正确,MTDPARTS_DEFAULT是设置默认分区的,CONFIG_BOOTARGS是u-boot传递给内核的启动参数的设置,如果这两个宏的设置不正确,内核就无法找到UBI文件系统所在的分区,就无法挂载文件系统。OK,我来说说当时我遇到过的几个错误吧。

1.分区设置与CONFIG_BOOTARGS中指定的分区不一致,导致错误,如下图所示:


这个错误是我当初的一时疏忽,以为mtd设备分区号是从1开始的,其实mtd设备的分区号是从0开始的。所以这里应该改成ubi.mtd = 3。

2.分区卷名和CONFIG_BOOTARGS中设置的卷名不一样导致错误,如图所示:


这个错误是由于当初我是修改别人的u-boot,忘记别人在设置分区的时候,UBI文件系统的分区的卷名为rootfs,而我在设置启动参数的时候设置成了ubifs。这里要么去改ubi分区的卷名为ubifs,要么改BOOTARGTS启动参数的设备名字为rootfs。两种修改都可以。

3.分区卷名太长,导致无法被识别,如图所示:


这个错误时分区名字太长导致的,具体想去研究这个错误的读者,可以自行阅读有关ubi文件系统挂载的函数,追踪u-boot/fs/ubifs/super.c目录下的open_ubi()打开ubi设备的这个函数,看看这个函数是如何根据传入的分区字符串的卷名去打开相应的ubi设备的。这里附上u-boot下open_ubi()函数的源码,如下图:


OK,以上是我在挂载UBI文件系统时候,关于“cannot open ubi”这个错误的几种经验之谈,希望对大家有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值