求适配树莓派CM4 ext4启动分区的U-Boot推荐脚本
树莓派CM4 ext4启动分区的U-Boot适配脚本
推荐适配脚本
替换原vfat版本的boot.scr为以下内容,适配ext4启动分区:
# 从设备树获取启动参数 fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs # 尝试从ext4分区加载内核镜像,增加错误判断便于调试 if ext4load mmc 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@; then # 检查U-Boot环境变量文件是否存在,不存在则初始化保存 if test ! -e mmc 0:1,uboot.env; then saveenv fi # 执行内核启动命令 @@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr} else echo "[ERROR] 无法从ext4分区加载内核镜像!" echo "进入U-Boot Shell以便调试..." shell fi
关键改动说明
- 替换
fatload为ext4load:直接使用U-Boot的ext4文件系统加载命令,格式与fatload一致,但需确保ext4分区被正确识别 - 环境变量文件检查语法调整:ext4分区下的文件存在性检查需使用
mmc <dev>:<part>,<filename>格式(逗号分隔分区与文件名),替代vfat的空格分隔方式 - 增加加载失败分支:添加条件判断和错误提示,避免设备直接卡死,方便进入Shell排查问题
常见问题排查
如果替换后仍无法启动,按以下步骤排查:
- ext4分区兼容性:创建启动分区时禁用U-Boot不支持的高级特性,执行命令:
(禁用64位inode和元数据校验和,这两个特性是U-Boot常见的兼容卡点)mkfs.ext4 -O ^metadata_csum,^64bit /dev/your-boot-partition - U-Boot配置验证:除已开启的
CONFIG_CMD_EXT4和CONFIG_CMD_EXT4_WRITE,确保CONFIG_EXT4_FS和CONFIG_EXT4_FS_WRITE(若需写入操作)也已在U-Boot配置中启用 - 分区与文件验证:在U-Boot Shell中执行以下命令确认:
mmc list:确认存储设备编号(CM4的eMMC通常为mmc 0,SD卡为mmc 1)ext4ls mmc 0:1:查看ext4分区内的文件,确认内核镜像(@@KERNEL_IMAGETYPE@@对应的文件)存在ext4load mmc 0:1 ${kernel_addr_r} Image:手动加载内核,验证是否能成功读取
- U-Boot版本:使用树莓派官方适配的U-Boot或最新稳定版(v2024.04及以上),旧版本对ext4的支持可能存在缺陷
内容的提问来源于stack exchange,提问作者Antoni
相关产品推荐
相关产品推荐

