如何使用Yocto WIC创建自定义分区布局?

6

这可能是一个相当简单的问题,但是有一些我不知道的东西。我正在尝试使用wic来替换自定义脚本以布置引导分区。设备是IMX6,uboot写在0x400处,并且有一个fat32引导分区可从中加载/boot文件夹,其中包含一些文件。

/boot
    uImage
    root.squashfs
    splash.bmp
    devicetree.dts
    6x_bootscript

我简要地研究了使用bootimg分区的插件wic。看起来是一种简单的方法来包含文件,但对于文件名没有足够的控制。它可以接收一个整个文件夹,但我不确定如何创建一个只包含特定文件的目录。复制后,这些文件必须具有正确的名称。

# Copied from https://community.nxp.com/thread/389816
# Image Creator .wks

part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1

# Boot partition

part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 8M --extra-space 0
1个回答

5
你可以使用bootimg-partition wic插件重命名文件。您需要在IMAGE_BOOT_FILES变量中的分号后指定新名称。以下是从文档中获取的一个示例,可将“uImage-> kernel”重命名(并添加u-boot.img):
IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"

你也可以使用 glob 模式选择多个文件并将它们保存到目录中(但无法重命名单个文件)。再次引用文档中的示例:
IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"

查看IMAGE_BOOT_FILES变量文档以获取完整解释和更多示例。

wic镜像的构建时依赖项(例如本地工具、引导加载程序)在WKS_FILE_DEPENDS变量中定义(请查看文档以获取更多信息)。确保在IMAGE_BOOT_FILES中列出的文件对应配方有正确的依赖关系。


当然,你也可以在do_deploy期间重命名文件,因此无需在wic中处理重命名。如果需要非常特定的内容,你还可以创建一个新的wic插件。

哦,我忽略了我真正需要的其中一件事。依赖关系是如何确定的?所以,如果我依赖于IMAGE_BOOT_FILES中没有在我的rfs或initrd中的某些附加文件呢? - Kevin
好的,我已经更新了答案,提到了WKS_FILE_DEPENDS - Tomas Novotny
似乎你不能依赖于图像类型。它只会在最后运行wik,所以你必须记住,如果你想要包含一个图像,你必须记得将其添加到image_types中。看起来这就是intel wik所做的,它依赖于正在制作的ISO和可用的文件。我喜欢这种简单性,但它感觉与使用do_image[depends]的其他过程分离。似乎wic在某些方面改进了一些东西,但在其他方面显得笨重。如果有一个bbclass使用wic,你可以继承它作为图像类型的一部分,那就更好了。 - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接