Yocto 幾個常用鏡像差異 (以FSL官源為例)

語言: CN / TW / HK

簡述版:

core-image-minimal – 最小鏡像,不能再這個基礎上精簡,這個鏡像僅僅能啟動而很多功能還無法使用,因為缺乏應用層軟件,

core-image-base – 在core-image-minimal基礎上添加一些硬件支持的包,這個鏡像能使用所有SOC上的功能.

core-image-sato – 在core-image-base基礎上添加一個叫sato的GUI演示.

fsl-image-machine-test – 在core-image-base基礎上添加測試和跑分工具.

fsl-image-validation-imx – 在core-image-base基礎上添加GUI.

fsl-image-qt5-validation-imx – 在core-image-base基礎上添加QT5.

細緻來看就看他們的配方.

首先是core-image-minimal,他不包含任何軟件,如果包含包管理,則可以引入包管理工具.

SUMMARY = "A small image just capable of allowing a device to boot."

IMAGE_INSTALL = "packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL}"

IMAGE_LINGUAS = " "

LICENSE = "MIT"

inherit core-image

IMAGE_ROOTFS_SIZE ?= "8192"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "", d)}"

而core-image-base默認之添加了splash這個特徵.

SUMMARY = "A console-only image that fully supports the target device \
hardware."

IMAGE_FEATURES += "splash"

LICENSE = "MIT"

inherit core-image

在core-image-sato就添加了x11-sato和依賴的包.

DESCRIPTION = "Image with Sato, a mobile environment and visual style for \
mobile devices. The image supports X11 with a Sato theme, Pimlico \
applications, and contains terminal, editor, and file manager."
HOMEPAGE = "http://www.yoctoproject.org/"

IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-dropbear hwcodecs"

LICENSE = "MIT"

inherit core-image

TOOLCHAIN_HOST_TASK_append = " nativesdk-intltool nativesdk-glib-2.0"
TOOLCHAIN_HOST_TASK_remove_task-populate-sdk-ext = " nativesdk-intltool nativesdk-glib-2.0"

QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}'
QB_MEM_qemumips = "-m 256"

在fsl-image-machine-test就是添加兩個packagegroup,在系統中有很多packagegroup,他代表一類包的合集.

DESCRIPTION = "A console-only image that includes gstreamer packages, \
Freescale's multimedia packages (VPU and GPU) when available, and \
test and benchmark applications."

IMAGE_FEATURES += " \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
       bb.utils.contains('DISTRO_FEATURES',     'x11', 'x11-base', \
                                                       '', d), d)} \
    debug-tweaks \
    tools-testapps \
    tools-profile \
"

LICENSE = "MIT"

inherit core-image

CORE_IMAGE_EXTRA_INSTALL += " \
    packagegroup-fsl-gstreamer1.0 \
    packagegroup-fsl-gstreamer1.0-full \
    packagegroup-fsl-tools-gpu \
    packagegroup-fsl-tools-gpu-external \
    packagegroup-fsl-tools-testapps \
    packagegroup-fsl-tools-benchmark \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', \
                         'weston weston-init', '', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', \
                         'weston-xwayland xterm', '', d)} \
"

比如packagegroup-fsl-tools-testapps的配方可以看到:

# Copyright (C) 2012-2014, 2016 Freescale Semiconductor
# Copyright (C) 2015, 2016 O.S. Systems Software LTDA.
# Released under the MIT license (see COPYING.MIT for the terms)

DESCRIPTION = "Packagegroup used by FSL Community to provide a set of packages and utilities \
for hardware test."
SUMMARY = "FSL Community packagegroup - tools/testapps"

PACKAGE_ARCH = "${MACHINE_ARCH}"

inherit packagegroup

SOC_TOOLS_TEST = ""
SOC_TOOLS_TEST_imx = "imx-test"
SOC_TOOLS_TEST_imxgpu  = "imx-test imx-gpu-viv-demos"
SOC_TOOLS_TEST_qoriq = "ceetm optee-test-qoriq"

RDEPENDS_${PN} = " \
    alsa-utils \
    alsa-tools \
    dosfstools \
    evtest \
    e2fsprogs-mke2fs \
    fsl-rc-local \
    fbset \
    i2c-tools \
    iproute2 \
    memtester \
    python3-core \
    python3-json \
    python3-datetime \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'v4l-utils', '', d)} \
    ethtool \
    mtd-utils \
    mtd-utils-ubifs \
    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+3-demo', '', d)} \
    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', \
                         'weston-examples clutter-1.0-examples', '', d)} \
    ${SOC_TOOLS_TEST} \
"

# FIXME: i.MX6SL cannot use mesa for Graphics and it lacks GL support,
#        so for now we skip it.
RDEPENDS_IMX_TO_REMOVE = ""
RDEPENDS_IMX_TO_REMOVE_imxgpu2d = "clutter-1.0-examples"
RDEPENDS_IMX_TO_REMOVE_imxgpu3d = ""

RDEPENDS_${PN}_remove = "${RDEPENDS_IMX_TO_REMOVE}"

可見,Yocto的一切包含關係各自全部都是廚師按着配方幹活,可以説非常的舒服.