hi3519av100开发板编译rootfs报错“Unable to mount root fson unknown-block”的处理方法

本文讲述了在使用hi3519av100开发板过程中遇到的Kernelpanic错误,源于rootfs文件大小超过MMC分区大小。作者揭示了解决方案,即通过串口调试修改UBOOT启动参数以调整MMC分区大小,确保rootfs正确挂载。
摘要由CSDN通过智能技术生成

刚学习使用hi3519av100开发板,编译rootfs时报错"Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,3)"。在网上查找了一堆文章,还是没有解决问题,最后自己解决。

分析根本原因在于uboot启动时的命令已经指定了EMMC内的mmcblk0p3分区,rootfstype=ext4,大小为300M(rootfs),见下面hi3519av开发板通过串口输出的启动记录:
“Kernel command line: mem=1024M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 blkdevparts=mmcblk0:1M(boot),4M(kernel),300M(rootfs),-(user)”


如果mmcblk0p3分区要挂载的rootfs系统文件(例如通过./make_ext4fs -l 1234M -s rootfs.ext4 rootfs中1234M指定的文件大小)大于实际分区大小300M,则会导致挂载不成功,从而报错“VFS: Unable to mount root fs on unknown-block”

解决方法即调整mmcblk0p3分区大小:
需在开发板启动时,通过串口调试助手监视开发板输出的串口字符内容,在出现“Hit any key to stop autoboot: ”时立即按下任意键,暂停启动过程,然后通过串口调试助手输入以下4行命令(第二行需要修改rootfs的大小为合适大小)
其中一个前提是需要在烧写boot用的配置中开启该项功能,即在hi3519av100_mmc_defconfig中打开下面三行以允许修改环境变量。(后面可以先用setenv bootdelay ‘5’ 增加启动延时试试,然后用printenv查看修改是否成功,从而证明能修改环境变量)
CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
CONFIG_CMD_SAVEENV=y
CONFIG_CMD_ENV_EXISTS=y


这样在串口调试助手输入下面这些命令,才能修改环境变量启动参数(特别注意用的串口调试工具,输入时不能出错,如在sscom下就必须一个一个字符敲入,复制粘贴就无效!)
1、setenv bootargs 'mem=1024M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 blkdevparts=mmcblk0:1M(boot),4M(kernel),3200M(rootfs),-(user)'
2、setenv bootcmd 'mmc read 0 0x22000000 800 2000; bootm 0x22000000'
3、saveenv(可以先用setenv bootdelay ‘5’ 增加启动延时试试,然后用printenv查看修改是否成功,从而证明能修改环境变量)
4、reset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值