Yocto 向图像bitbake配方添加发行版功能

Yocto 向图像bitbake配方添加发行版功能,yocto,openembedded,Yocto,Openembedded,我通过将以下内容添加到local.conf文件中,在yocto映像中添加了对虚拟化的支持: DISTRO_FEATURES_append= " virtualization" IMAGE_INSTALL_append = " docker docker-contrib" (按照中的说明)。 这很好,所以现在我正在尝试创建一个新的镜像bitbake配方来将其移入其中,这样我就可以在有虚拟化和无虚拟化的情况下进行构建。我添加了一个图像配方,如下所示(相关部分): 但这不起作用——bitbake现在

我通过将以下内容添加到local.conf文件中,在yocto映像中添加了对虚拟化的支持:

DISTRO_FEATURES_append= " virtualization"
IMAGE_INSTALL_append = " docker docker-contrib"
(按照中的说明)。 这很好,所以现在我正在尝试创建一个新的镜像bitbake配方来将其移入其中,这样我就可以在有虚拟化和无虚拟化的情况下进行构建。我添加了一个图像配方,如下所示(相关部分):

但这不起作用——bitbake现在抱怨:

警告:您已包括元虚拟化层,但 您的发行版功能中尚未启用“虚拟化”。一些 bbappend文件可能不会生效。请参阅元虚拟化自述 有关启用虚拟化支持的详细信息


因此,发行版功能在图像bitbake中似乎无效。是这样吗?如果是这样的话,在保留现有映像的同时,向我的构建中添加需要附加发行版功能的映像的正确方法是什么?

正确,您不能在配方中设置发行版功能。它控制发行版的功能,因此只有在发行版配置或其他顶级配置文件(如local.conf)中才有意义。

是否有一个顶级配置,我可以将其放入其中,以便为某些图像配方而不是其他图像配方选择它?我正试图找到一种方法来做到这一点,不涉及有2个构建目录,每个图像一个(这是我目前拥有的)。这在机器层是可行的,但似乎没有办法为不同的映像指定不同的(子)机器。根据定义,发行版功能是发行版范围的。为什么你不能在发行版功能中启用发行版级别的虚拟化,然后只在需要docker的映像中安装docker?是的,我可以这样做,我猜这就是我最终的选择。我唯一担心的是,为两个映像启用该功能将导致不使用虚拟化的映像的大小增加。您必须查看虚拟化功能的作用才能确定这一点。最终图像大小的差异很可能可以忽略不计。
DISTRO_FEATURES_append = " virtualization"
CORE_IMAGE_EXTRA_INSTALL = " docker docker-contrib"
inherit core-image