U-boot 2016.07:ext4fs_devread 读取外部分区

U-boot 2016.07:ext4fs_devread 读取外部分区

随着最新发布的 U-Boot (2016.07),它突然开始产生如下神秘的错误消息:

U-Boot> ext4load mmc 0:2 ${ramdisk_addr_r} /initramfs.uImage
invalid extent block
ext4fs_devread read outside partition 4294967294

谷歌搜索导致一些旧邮件列表交换与 2014 年完成的实际 U-Boot 修复相关。因此,此信息似乎与此问题无关。

主机端可以正常挂载有问题的文件系统。有时uboot读文件成功,关键影响因素未知。

答案1

(我将在这里为谷歌用户留下我的答案,因为花了三天时间才弄清楚)

最新、最好的e2fsprogs(>1.43) 已启用64bitEXT4 文件系统的功能。您可以通过查看来验证您的系统是否存在这种情况/etc/mke2fs.conf。我有这些:

[fs_types]
        ext4 = {
                features = has_journal,extent,huge_file,flex_bg,64bit,dir_nlink,extra_isize
                inode_size = 256
        }

因此,生成的每个文件系统mkfs.ext4都将64bit启用功能:

$ sudo tune2fs -l /dev/sda1 | grep 'Filesystem features:'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize

U-Boot 将无法理解这种文件系统,直到commit 将通过上述消息退出。

修复方法是创建 EXT4 文件系统并显式禁用64bit其功能:

$ sudo mkfs.ext4 -O ^64bit /dev/sda1

相关内容