feat(belden-coreos): reworked distro settings

Now the distro settings is splitted into two config smaller config
file. PACKAGECONFIG for the system package is set to include a
reduced set of features by default.

Some EFI related feature are now dependant of the EFI DISTRO_
and MACHINE_FEATURES.
This commit is contained in:
Samuel Dolt 2023-08-07 15:32:53 +02:00 committed by Patrick Vogelaar
parent 1af92365f1
commit d1988fb97f
11 changed files with 173 additions and 98 deletions

View File

@ -1,11 +0,0 @@
# Add signature support
inherit coreos-efi-sbsign
require conf/image-uefi.conf
do_deploy:append() {
if [ -f "${DEPLOYDIR}/efibootguard${EFI_ARCH}.efi" ]; then
coreos_efi_secureboot_sign_app "${DEPLOYDIR}/efibootguard${EFI_ARCH}.efi"
fi
}

View File

@ -9,4 +9,4 @@ SRC_URI += " \
${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", "file://debug-tweaks.cfg", "", d)} \ ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", "file://debug-tweaks.cfg", "", d)} \
" "
require u-boot-coreos-efi.inc require ${@bb.utils.contains("COMBINED_FEATURES", "efi", "u-boot-coreos-efi.inc", "", d)}

View File

@ -10,4 +10,4 @@ SRCREV_machine:beaglebone ?= "9aabbaa89fcb21af7028e814c1f5b61171314d5a"
COMPATIBLE_MACHINE:beaglebone = "beaglebone" COMPATIBLE_MACHINE:beaglebone = "beaglebone"
LINUX_VERSION:beaglebone = "5.15.54" LINUX_VERSION:beaglebone = "5.15.54"
require linux-yocto-coreos-efi.inc require ${@bb.utils.contains("COMBINED_FEATURES", "efi", "linux-yocto-coreos-efi.inc", "", d)}

View File

@ -90,9 +90,9 @@ IMAGE_ROOTFS_EXTRA_SPACE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'sys
# ============================================================================== # ==============================================================================
# Support for Unified Kernel Image and Swupdate are optional # Support for Unified Kernel Image and Swupdate are optional
COREOS_IMAGE_GENERATE_INSTALLER ?= "1" COREOS_IMAGE_GENERATE_INSTALLER ?= "${@bb.utils.contains("DISTRO_FEATURES", "swupdate", "1", "0", d)}"
COREOS_IMAGE_GENERATE_UKI ?= "1" COREOS_IMAGE_GENERATE_UKI ?= "${@bb.utils.contains("COMBINED_FEATURES", "efi", "1", "0", d)}"
COREOS_IMAGE_GENERATE_SWU ?= "1" COREOS_IMAGE_GENERATE_SWU ?= "${@bb.utils.contains("DISTRO_FEATURES", "swupdate", "1", "0", d)}"
# Generate the installer image if needed # Generate the installer image if needed
do_build[depends] += "${@'coreos-image-installer:do_build' if d.getVar('COREOS_IMAGE_GENERATE_INSTALLER') == '1' else ''}" do_build[depends] += "${@'coreos-image-installer:do_build' if d.getVar('COREOS_IMAGE_GENERATE_INSTALLER') == '1' else ''}"

View File

@ -0,0 +1,8 @@
require conf/distro/include/belden-coreos-base.inc
DISTRO = "belden-coreos-base"
DISTRO_NAME = "Belden CoreOS (Base)"
MAINTAINER = "Belden CoreOS Team"
DISTRO_VERSION = "0.0.1"
DISTRO_CODENAME = "kirkstone"

View File

@ -1,87 +1,9 @@
require conf/distro/include/belden-coreos-base.inc
require conf/distro/include/belden-coreos-extra.inc
DISTRO = "belden-coreos" DISTRO = "belden-coreos"
DISTRO_NAME = "Belden CoreOS" DISTRO_NAME = "Belden CoreOS"
MAINTAINER = "Belden CoreOS Team" MAINTAINER = "Belden CoreOS Team"
INHERIT += "coreos_metadata_scm"
DISTRO_VERSION = "0.0.1" DISTRO_VERSION = "0.0.1"
DISTRO_CODENAME = "kirkstone" DISTRO_CODENAME = "kirkstone"
# Distro features and policies
# ==============================================================================
PACKAGE_CLASSES = "package_ipk"
INIT_MANAGER = "systemd"
# CoreOS use journald from the systemd package to handle log
# https://docs.yoctoproject.org/singleindex.html#using-systemd-journald-without-a-traditional-syslog-daemon
# This remove syslog from packagegroup-core-boot
VIRTUAL-RUNTIME_syslog = ""
VIRTUAL-RUNTIME_base-utils-syslog = ""
DISTRO_FEATURES_DEFAULT ?= "bluetooth usbhost pci ipv4 ipv6 wifi multiarch usrmerge ptest efi pam"
DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT}"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "pulseaudio ldconfig"
DISTRO_EXTRA_RDEPENDS += "packagegroup-core-boot"
# Build configuration
# ==============================================================================
TARGET_VENDOR = "-belden"
# We don't support multiple libc, so we don't need to append the libc name to
# the tmp directory: ie use build/tmp instead of build/tmp-glibc
TCLIBCAPPEND = ""
SANITY_TESTED_DISTROS ?= " \
debian-11 \n \
ubuntu-22.04 \n \
"
# This variable is used to ensure that any distribution using the CoreOS layer
# include this file. This is checked by the coreos-sanity class
SANITY_COREOS_COMPATIBLE ?= "1"
require conf/distro/include/no-static-libs.inc
require conf/distro/include/yocto-uninative.inc
require conf/distro/include/security_flags.inc
# uninative is need to share the sstates between multiple host distrubtion
INHERIT += "uninative"
# Bitbake configuration
# ==============================================================================
BB_SIGNATURE_HANDLER ?= "OEBasicHash"
# SDK Configuration
# ==============================================================================
SDK_VENDOR = "-coreossdk"
SDK_VERSION = "${DISTRO_VERSION}"
SDK_VERSION[vardepvalue] = "${SDK_VERSION}"
SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
SDKPATHINSTALL = "/opt/${DISTRO}/${SDK_VERSION}"
# EFI and Secure boot
# ==============================================================================
EFI_PROVIDER = "efibootguard"
EFIBOOTGUARD_TIMEOUT ??= "60"
INHERIT += "coreos-efi-secureboot"
# Virtualization configuration
# ==============================================================================
# Use crun insted of runc as a OCI runtime. crun is faster and need less memory
# than runc so it's a better fit for embedded
#PREFERRED_PROVIDER_virtual/runc = "crun"
PACKAGECONFIG:append:pn-podman = " rootless"
DISTRO_FEATURES_DEFAULT += "virtualization seccomp ipv6"
# CoreOS specific options
# ==============================================================================
# Distro based on CoreOS can provide their own configuration files for the
# CoreOS installer by overriding this variable
PREFERRED_PROVIDER_coreos-installer-config ??= "coreos-installer-config"

View File

@ -0,0 +1,108 @@
# This is the base include file for all coreos based distro
# it should support the most basic distro without optional coreos
# features
INHERIT += "coreos_metadata_scm"
# Distro features and policies
# ==============================================================================
PACKAGE_CLASSES = "package_ipk"
INIT_MANAGER = "systemd"
# CoreOS use journald from the systemd package to handle log
# https://docs.yoctoproject.org/singleindex.html#using-systemd-journald-without-a-traditional-syslog-daemon
# This remove syslog from packagegroup-core-boot
VIRTUAL-RUNTIME_syslog = ""
VIRTUAL-RUNTIME_base-utils-syslog = ""
DISTRO_FEATURES ?= "usbhost pci ipv4 ipv6 wifi multiarch usrmerge efi pam"
# CoreOS wasn't compatible with older Yocto version, so we should not have any
# features backfilled. Value are from DISTRO_FEATURES_BACKFILL
# with the exception of gobject-introspection-data that are backfilled on
# purpose, this allow to use C library based on gobject in python or javascript
DISTRO_FEATURES_BACKFILL_CONSIDERED = "pulseaudio sysvinit ldconfig"
DISTRO_EXTRA_RDEPENDS += "packagegroup-core-boot"
# Build configuration
# ==============================================================================
TARGET_VENDOR = "-belden"
# We don't support multiple libc, so we don't need to append the libc name to
# the tmp directory: ie use build/tmp instead of build/tmp-glibc
TCLIBCAPPEND = ""
SANITY_TESTED_DISTROS ?= " \
debian-11 \n \
ubuntu-22.04 \n \
"
# This variable is used to ensure that any distribution using the CoreOS layer
# include this file. This is checked by the coreos-sanity class
SANITY_COREOS_COMPATIBLE ?= "1"
require conf/distro/include/no-static-libs.inc
require conf/distro/include/yocto-uninative.inc
require conf/distro/include/security_flags.inc
# uninative is need to share the sstates between multiple host distrubtion
INHERIT += "uninative"
# Bitbake configuration
# ==============================================================================
BB_SIGNATURE_HANDLER ?= "OEBasicHash"
# SDK Configuration
# ==============================================================================
SDK_VENDOR = "-coreossdk"
SDK_VERSION = "${DISTRO_VERSION}"
SDK_VERSION[vardepvalue] = "${SDK_VERSION}"
SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
SDKPATHINSTALL = "/opt/${DISTRO}/${SDK_VERSION}"
# EFI and Secure boot
# ==============================================================================
EFI_PROVIDER = "efibootguard"
EFIBOOTGUARD_TIMEOUT ??= "60"
INHERIT += "coreos-efi-secureboot"
# PACKAGECONFIG
# ==============================================================================
# Reduce the size of some package by disabling some feature by default
# Distro using coreos can re-enabled a disabled config by changing
# the COREOS_DISABLED_PACKAGECONFIG variable
PACKAGECONFIG:pn-systemd ?= " \
${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
hostnamed \
kmod \
localed \
logind \
set-time-epoch \
sysusers \
userdb \
vconsole \
wheel-group \
zstd \
"
# DNS Configuration
# CoreOS specific options
# ==============================================================================
# Distro based on CoreOS can provide their own configuration files for the
# CoreOS installer by overriding this variable
PREFERRED_PROVIDER_coreos-installer-config ??= "coreos-installer-config"

View File

@ -0,0 +1,30 @@
# This is the include all the CoreOS feature that are optional
# Virtualization configuration
# ==============================================================================
PACKAGECONFIG:append:pn-podman = " rootless"
DISTRO_FEATURES += "virtualization seccomp"
# swupdate configuration
# ==============================================================================
# Enable the generation of .swu file for images
DISTRO_FEATURES += "swupdate"
# Networking configuration
# ==============================================================================
# Add networking support to systemd. This allow systemd to handle
# network/dhcp/dns/time
PACKAGECONFIG:pn-systemd += " \
hostnamed \
idn \
myhostname \
nss \
nss-resolve \
resolved \
networkd \
timedated \
timesyncd \
"

View File

@ -1,4 +1,20 @@
# Add CoreOS A/B Switching support
# ==============================================================================
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-coreos-add-a-coreos-specific-rootfs-switch-to-the-UK.patch" SRC_URI += "file://0001-coreos-add-a-coreos-specific-rootfs-switch-to-the-UK.patch"
# Add signature support
# ==============================================================================
inherit coreos-efi-sbsign
require conf/image-uefi.conf
do_deploy:append() {
if [ -f "${DEPLOYDIR}/efibootguard${EFI_ARCH}.efi" ]; then
coreos_efi_secureboot_sign_app "${DEPLOYDIR}/efibootguard${EFI_ARCH}.efi"
fi
}

View File

@ -1,3 +1,6 @@
inherit features_check
REQUIRED_DISTRO_FEATURES = "swupdate"
# File in the swupdate subdirectory of this recipe should overwrite the # File in the swupdate subdirectory of this recipe should overwrite the
# same file in meta-swupdate # same file in meta-swupdate
FILESEXTRAPATHS:prepend := "${THISDIR}/swupdate:" FILESEXTRAPATHS:prepend := "${THISDIR}/swupdate:"
@ -9,7 +12,6 @@ SRC_URI += "\
PACKAGES =+ "${PN}-coreos-config ${PN}-coreos-installer-config" PACKAGES =+ "${PN}-coreos-config ${PN}-coreos-installer-config"
# Don't use /www as the web root # Don't use /www as the web root
wwwdir = "${datadir}/swupdate-www" wwwdir = "${datadir}/swupdate-www"