【发布时间】:2019-11-20 12:16:56
【问题描述】:
我正在创建一个小型 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 中使用IMAGE_FSTYPES_remove = " wic wic.bmap hddimg "。那么运行wic的命令是:
wic create ../meta-mylayer/wic/myimage.wks -e core-image-minimal
谢谢!
编辑: 也许问题不在于创建所需的依赖项,而在于我创建图像的方式?我只想要一个 UEFI 引导、一个内核和一个带有完整 rootfs 的 cpio.gz 文件,该文件将在引导时挂载。这不是 initramfs,而是我需要的完整 rootfs。除了有问题的依赖关系之外,生成的图像完全符合我的需要。
【问题讨论】: