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