随着最新发布的 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) 已启用64bit
EXT4 文件系统的功能。您可以通过查看来验证您的系统是否存在这种情况/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