我正在创建一个小的Yocto发行版,它应该在tmpfs上的RAM中工作。我使用WIC配置的方式如下:
part /boot --source bootimg-efi --sourceparams="loader=grub-efi,initrd=${PN}-${MACHINE}.cpio.gz,file=${PN}-${MACHINE}.cpio.gz" --ondisk sda --label msdos --active --align 1024
bootloader --ptable gpt --timeout=0 --append="rootfstype=tmpfs rootflags=size=2G console=ttyS0,115200 console=tty0"我还将IMAGE_FSTYPES_append = " cpio.gz "添加到我的local.conf中,因此它从我的rootfs构建cpio.gz存档。
我的问题非常简单--当WIC运行时,它尝试在创建rootfs cpio.gz之前创建wic文件,因此构建失败。我需要的是创建一个依赖项,它将保存WIC脚本,直到cpio.gz准备就绪为止。有人知道如何实现这一目标吗?例如,可以使用WKS_FILE_DEPENDS吗?
以下是失败之处:
| ERROR: _exec_cmd: cp .../poky/build/tmp/deploy/images/genericx86-64/core-image-minimal-genericx86-64.cpio.gz .../poky/build/tmp/work/genericx86_64-poky-linux/core-image-minimal/1.0-r0/deploy-core-image-minimal-image-complete/core-image-minimal-genericx86-64-20191121151711/tmp.wic.k00ckxmk/hdd/boot returned '1' instead of 0
| output: cp: cannot stat '.../poky/build/tmp/deploy/images/genericx86-64/core-image-minimal-genericx86-64.cpio.gz': No such file or directory目前,我通过在构建之后手动运行wic工具来绕过这个问题。为此,我不得不在我的local.conf中使用local.conf。运行wic的命令是:
wic create ../meta-mylayer/wic/myimage.wks -e core-image-minimal谢谢!
编辑:也许问题不在于创建所需的依赖关系,而在于我创建图像的方式?我只想要一个UEFI引导、一个内核和一个cpio.gz文件,其中包含一个完整的rootfs,将在引导时挂载。这不是initramfs,而是我需要的完整的rootfs。除了有问题的依赖之外,生成的图像完全满足了我的需要。
发布于 2019-11-21 11:49:53
您可以使用WIC以两种方式指定依赖项。
使用
do_image_wic。因此,可以将创建initrd/initramfs映像的依赖项添加到以下任务中,如所示
do_image_wic[depends] += "image-base-initramfs:do_image_complete"
您需要在您的WIC图像创建配方中指定这一点。对于这个例子,
DESCRIPTION = "My image"
inherit core-image
export IMAGE_BASENAME = "image-base"
IMAGE_FSTYPES = "wic.xz"
DEPENDS += "image-base-initramfs"
do_image_wic[depends] += "image-base-initramfs:do_image_complete"
WKS_FILES = "my.wks"这里,image-base用于使用my.wks创建WIC。它在等待initramfs来完成这座建筑。在image-base-initramfs中,您将创建initramfs图像。
要添加,您也可以在使用内核INITRAMFS_IMAGE时使用fitImage来实现这一点。
WKS_FILE_DEPENDS:在创建WIC映像之前,您可以将任何比特菜谱添加到依赖项中。将image-base-initramfs添加到此变量将等待它完成initramfs映像。在创建WIC .时,我们也有依赖于引导加载程序来完成的。
https://stackoverflow.com/questions/58954170
复制相似问题