将DISTRO_FEATURES添加到image bitbake配方

3
我已经通过在local.conf文件中添加以下内容来为我的yocto镜像添加虚拟化支持:
```bash VIRTUALIZATION ?= "virtualbox" ```
DISTRO_FEATURES_append= " virtualization"
IMAGE_INSTALL_append = " docker docker-contrib"

根据https://git.yoctoproject.org/cgit/cgit.cgi/meta-virtualization/tree/README中的说明,这个工作正常。现在我正在尝试创建一个新的映像bitbake配方,以便我可以构建具有和不具有虚拟化的版本。我已经添加了一个映像配方,如下所示(相关部分):
DISTRO_FEATURES_append = " virtualization"
CORE_IMAGE_EXTRA_INSTALL = " docker docker-contrib"
inherit core-image

但这并不起作用 - bitbake现在抱怨说:

警告:您已包含meta-virtualization层,但在DISTRO_FEATURES中未启用虚拟化。一些bbappend文件可能无法生效。请参阅meta-virtualization README以了解如何启用虚拟化支持。

因此,在图像的bitbake中,DISTRO_FEATURES似乎无效。如果是这样的话,那么添加需要额外DISTRO_FEATURES的图像到我的构建中的正确方式是什么?同时又让现有的图像保持不变?

1个回答

3

没错,你不能在菜谱中设置DISTRO_FEATURES。它控制发行版的功能,因此只有在发行版配置或其他顶层配置文件(例如local.conf)中才有意义。


1
有没有一个顶层配置,我可以把它放进去,以便为一些图像配方选择它,但不是其他的?我正在尝试找到一种方法来做到这一点,而不涉及拥有两个构建目录,每个图像一个(这就是我目前拥有的)。这在机器层中有效,但似乎没有办法为不同的图像指定不同的(子)机器。 - csd
1
发行版功能从定义上来说是整个发行版范围内的。为什么不能在DISTRO_FEATURES中在发行版级别启用虚拟化,然后只在需要docker的镜像中安装docker呢? - Ross Burton
1
是的,我可以做到这一点,我猜这就是我最终会采取的方式。我唯一的担忧是,对于两个图像都启用它将导致未使用虚拟化的图像大小增加。 - csd
1
你需要查看虚拟化功能的作用来确定这一点。最终图像大小的差异可能是微不足道的。 - Ross Burton

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