Yocto - 如何更改 rootfs 文件系统类型

Yocto - How do I change the rootfs file system type

我正在尝试使用 squashfs rootfs 构建 vdi 映像,但找不到将当前 ext4 fs 更改为 squash 的位置。我找到的最接近的解决方案在这里:How do I change the rootfs file system type used for the sdcard image in yocto? 但我不觉得这回答了我的问题。我能够构建 .rootfs.squashfs 和 .rootfs.wic.vdi。是否可以使用 bitbake 使用 squashfs root 构建 .rootfs.wic.vdi?

寻找wic命令的配置文件:如果你在yocto树中搜索或查看日志(使用bitbake -D ...获取更多日志),你可能会找到一个文件名称后缀 .wks。这是传递给 wic.

的指令文件

在yocto环境下,可以在命令行使用wic。例如,要获取手册概览:

$ wic help overview


NAME
    wic overview - General overview of wic

DESCRIPTION
    The 'wic' command generates partitioned images from existing
    OpenEmbedded build artifacts.  Image generation is driven by
    partitioning commands contained in an 'Openembedded kickstart'
[...]

--source 选项触发一个插件。该手册可能不是最新的,您可能需要查看插件的源代码(wic 写在 python 中),它位于如下位置:.. .poky/scripts/lib/wic。您将在 partition.py 中看到管理“rootfs”插件的代码。您将看到仅支持一组减少的文件系统类型。希望 squashfs 是其中的一部分。这是管理它的代码片段:

    def prepare_rootfs_squashfs(self, rootfs, oe_builddir, rootfs_dir,
                                native_sysroot, pseudo):
        """
        Prepare content for a squashfs rootfs partition.
        """
        extraopts = self.mkfs_extraopts or '-noappend'
        squashfs_cmd = "mksquashfs %s %s %s" % \
                       (rootfs_dir, rootfs, extraopts)
        exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo)

以上说明wic调用mksquashfs工具构建文件系统

howto 的示例。