Add example IC EG container demo image 01/28501/1
authorScott Murray <scott.murray@konsulko.com>
Tue, 14 Feb 2023 00:48:05 +0000 (19:48 -0500)
committerScott Murray <scott.murray@konsulko.com>
Tue, 14 Feb 2023 00:48:05 +0000 (19:48 -0500)
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 <scott.murray@konsulko.com>
conf/layer.conf
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb [new file with mode: 0644]
dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb [new file with mode: 0644]

index b294db4..fa43bcc 100644 (file)
@@ -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 (file)
index 0000000..1fd9f34
--- /dev/null
@@ -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 (file)
index 0000000..632252d
--- /dev/null
@@ -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 (file)
index 0000000..9b4f488
--- /dev/null
@@ -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 (file)
index 0000000..262f09b
--- /dev/null
@@ -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 (file)
index 0000000..573f479
--- /dev/null
@@ -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 (file)
index 0000000..de7c6cd
--- /dev/null
@@ -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 (file)
index 0000000..049c8ab
--- /dev/null
@@ -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 (file)
index 0000000..b840229
--- /dev/null
@@ -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 "