From 0907a8b8f37e4374eba4f61a63dc29107bcf11f8 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 13 Feb 2023 19:48:05 -0500 Subject: [PATCH] Add example IC EG container demo image Changes: - Add a meta-agl-ic-container dynamic layer hierarchy to hold metadata dependent on the agl-ic-container feature. - Add configuration to allow building the agl-demo-platform image as a guest container with agl-ic-container. - Add a agl-lxc-demo-platform image that uses agl-demo-platform as the IVI guest container. NOTE: While this image boots, further integration of IC EG work is required to actually successfully boot the agl-demo-platform guest. Bug-AGL: SPEC-4703 Change-Id: I60a46b6ae3c950c4aa25554639d7828462745bfa Signed-off-by: Scott Murray --- conf/layer.conf | 5 ++++ .../lxc-config-agl-demo-platform/basic.in | 9 +++++++ .../lxc-config-agl-demo-platform/environment.in | 8 ++++++ .../lxc-config-agl-demo-platform/misc.in | 3 +++ .../lxc-config-agl-demo-platform/mount.in | 17 ++++++++++++ .../lxc-config-agl-demo-platform/network.in | 3 +++ .../system.conf.agl-demo-platform.in | 9 +++++++ .../lxc-config/lxc-config-agl-demo-platform_1.0.bb | 7 +++++ .../images/agl-lxc-demo-platform.bb | 31 ++++++++++++++++++++++ 9 files changed, 92 insertions(+) create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb create mode 100644 dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb diff --git a/conf/layer.conf b/conf/layer.conf index b294db474..fa43bcc66 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -9,6 +9,11 @@ BBFILE_COLLECTIONS += "agldemo" BBFILE_PATTERN_agldemo = "^${LAYERDIR}/" BBFILE_PRIORITY_agldemo = "70" +BBFILES_DYNAMIC += " \ + aglcontainermc:${LAYERDIR}/dynamic-layers/meta-agl-ic-container/*/*/*.bb \ + aglcontainermc:${LAYERDIR}/dynamic-layers/meta-agl-ic-container/*/*/*.bbappend \ +" + LAYERSERIES_COMPAT_agldemo = "kirkstone" LAYERDEPENDS_agldemo = "aglcore qt5-layer openembedded-layer" diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in new file mode 100644 index 000000000..1fd9f3476 --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in @@ -0,0 +1,9 @@ +# lxc basic setting +lxc.rootfs.path = dir:/var/lib/machines/ivi-demo +lxc.signal.halt = SIGRTMIN+3 +lxc.signal.reboot = SIGTERM +lxc.uts.name = "ivi" +lxc.tty.max = 1 +lxc.pty.max = 1 +lxc.cap.drop = sys_module mac_admin mac_override sys_time + diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in new file mode 100644 index 000000000..632252d58 --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in @@ -0,0 +1,8 @@ +# lxc environment variable setting +lxc.environment = QT_QPA_PLATFORM=wayland +lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ +lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +lxc.environment = PIPEWIRE_RUNTIME_DIR=/var + diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in new file mode 100644 index 000000000..9b4f4883e --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in @@ -0,0 +1,3 @@ +# lxc misc setting +lxc.start.auto = @LXC_AUTO_START@ + diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in new file mode 100644 index 000000000..262f09bdc --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in @@ -0,0 +1,17 @@ +# lxc mount setting +lxc.mount.entry = /var/lib/lxc/ivi-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file + +lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed +lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0 +lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0 +lxc.mount.entry = tmpfs run tmpfs defaults +lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir + +lxc.cgroup.devices.allow = c 226:* rwm +lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir + +lxc.mount.entry = /run/drm-lease-manager/lease-ivi var/display/drm-lease-manager/lease none bind,create=file + +lxc.cgroup.devices.allow = c 13:* rwm +lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir +lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in new file mode 100644 index 000000000..573f4796d --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in @@ -0,0 +1,3 @@ +# lxc network setting +lxc.net.0.type = empty + diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in new file mode 100644 index 000000000..de7c6cdd1 --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in @@ -0,0 +1,9 @@ +[Manager] +DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager +DefaultEnvironment = DRM_LEASE_DEVICE=@DRM_LEASE_DEVICE@ +DefaultEnvironment = QT_QPA_PLATFORM=wayland +DefaultEnvironment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ +DefaultEnvironment = QML_IMPORT_PATH=/usr/lib/qml/ +DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/ +DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb new file mode 100644 index 000000000..049c8ab83 --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "AGL IVI demo container LXC config" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" + +inherit lxc-config + +LXC_AUTO_START ??= "0" diff --git a/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb b/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb new file mode 100644 index 000000000..b8402294d --- /dev/null +++ b/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb @@ -0,0 +1,31 @@ +SUMMARY = "LXC host demo image" +LICENSE = "MIT" + +require recipes-platform/images/lxc-host-image-minimal.bb + +CONTAINER_IMAGES ?= "agl-container-cluster:guest-image-cluster-demo \ + agl-container-ivi:agl-demo-platform \ + " + +IMAGE_INSTALL += " \ + kernel-modules \ + alsa-utils \ + packagegroup-pipewire \ + pipewire-ic-ipc \ + wireplumber-config-agl \ +" + +# packages required for network bridge settings via lxc-net +IMAGE_INSTALL += " \ + lxc-networking \ + iptables-modules \ + dnsmasq \ + systemd-netif-config \ + kernel-module-xt-addrtype \ + kernel-module-xt-multiport \ +" + +# network manager to use +VIRTUAL-RUNTIME_net_manager = "systemd" + +IMAGE_INSTALL:append:rcar-gen3 = " kernel-module-gles " -- 2.16.6