关于 linux:Yocto Custom Layer 在 mkfs.ext4 之后在 do_rootfs 上运行 Tune2fs

Yocto Custom Layer run Tune2fs on do_rootfs after mkfs.ext4

我在 Ubuntu 18.04 上使用 Yocto 和 Meta-Tegra 的 Warrior 分支,以尝试集成 RAUC 开源项目以进行 Linux 固件更新。

我了解到,如果 U-Boot 正在写入的 EXT4 文件系统具有 metadata_csum 属性,则 U-Boot 在写入 EXT4 分区(以更新 U-Boot Env)时会出现问题。如果启用该属性并且 U-Boot 完全写入,Linux 将无法挂载根文件系统。

这里有一些帖子:

  • https://patchwork.ozlabs.org/patch/818337/

  • http://u-boot.10912.n7.nabble.com/PATCH-1-1-fs-ext4-do-not-write-on-filesystem-with-metadata-csum-feature-td362715.html

我通过在 Ubuntu 上安装 Yocto 生成的 SDCARD 映像并运行以下命令来禁用 metadata_csum 来证明是这种情况:

1
2
3
4
sudo tune2fs -O ^metadata_csum /dev/sdb1
tune2fs 1.44.1 (24-Mar-2018)
Disabling checksums could take some time.
Proceed anyway (or wait 5 seconds to proceed) ? (y,N) y

运行该命令后 - U-Boot 可以从 U-Boot 空间随意读取/写入,Linux 可以挂载根文件系统。

我试图弄清楚如何在使用 Yocto 创建映像时在 Ubuntu 上使用 Tune2fs 禁用校验和。我可以在哪里/如何添加它,以便在 Yocto 创建图像时禁用图像校验和?谢谢。


我简要查看了 meta-tegra,我认为它使用了通过 image_class.bcclass 创建的 ext4 根文件系统映像。您可以通过 EXTRA_IMAGECMD 将参数添加到 mkfs.ext4。应该可以只创建禁用 metadata_csum 的文件系统,而不是稍后将其关闭。

试试

1
EXTRA_IMAGECMD_append =" -O ^metadata_csum"

在你的 local.conf