UBoot启动报错:无法设置正确root=参数,请求问题排查
问题分析:UBoot中root参数设置无效导致VFS启动失败
你的操作命令
你使用的UBoot启动命令如下:
setenv bootcmd "load mmc 1 0x82000000 swupdate-image-imx6ull14x14evk-20230206204748.rootfs.ext4.gz.u-boot;load mmc 1 0x82a00000 imx6ull-14x14-evk.dtb;load mmc 1 0x83000000 zImage;setenv root /dev/ram0;setenv rootfstype ext4;bootz 0x83000000 - 0x82a00000" saveenv print bootcmd run bootcmd
内核报错信息
启动后内核抛出VFS错误:
[ 2.921973] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6 [ 2.929787] Please append a correct "root=" boot option; here are the available partitions: [ 2.939329] 0100 65536 ram0 [ 2.939338] (driver?) ... [ 3.058467] b302 258771 mmcblk1p2 20118f0d-02
问题根源
你已经加载了ramdisk格式的根文件系统镜像到地址0x82000000,但**bootz命令没有指定ramdisk的加载地址**。原命令中bootz 0x83000000 - 0x82a00000里的-表示没有ramdisk,内核根本不会把你加载的镜像解压到/dev/ram0,所以即使设置了root=/dev/ram0,这个设备里也没有有效的文件系统,导致VFS报错。
修正后的命令
把bootz命令中的-替换为ramdisk的加载地址0x82000000,完整命令如下:
setenv bootcmd "load mmc 1 0x82000000 swupdate-image-imx6ull14x14evk-20230206204748.rootfs.ext4.gz.u-boot;load mmc 1 0x82a00000 imx6ull-14x14-evk.dtb;load mmc 1 0x83000000 zImage;setenv root /dev/ram0;setenv rootfstype ext4;bootz 0x83000000 0x82000000 0x82a00000" saveenv run bootcmd
补充说明
bootz的正确语法是:
bootz <kernel_addr> [ramdisk_addr] [dtb_addr]
当需要使用ramdisk作为根文件系统时,必须明确指定ramdisk的加载地址,内核才会自动解压该镜像到ram设备,此时root=/dev/ram0才能生效。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

