我正在创建一个小型 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,因此它cpio.gz
从我的 rootfs 构建存档。
我的问题非常简单——当 WIC 运行时,它会在完成创建 rootfs 之前尝试创建 wic 文件cpio.gz
,因此构建失败。我需要的是创建一个依赖项,它会保存 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 工具来绕过这个问题。为此,我不得不IMAGE_FSTYPES_remove = " wic wic.bmap hddimg "
在我的 local.conf 中使用。运行 wic 的命令是:
wic create ../meta-mylayer/wic/myimage.wks -e core-image-minimal
谢谢!
编辑:也许问题不在于创建所需的依赖项,而在于我创建图像的方式?我只想要一个 UEFI 引导、一个内核和一个带有完整 rootfs 的 cpio.gz 文件,该文件将在引导时挂载。这不是 initramfs,而是我需要的完整 rootfs。除了有问题的依赖性之外,生成的图像完全符合我的需要。