summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunitexe <unitexe70@gmail.com>2026-02-23 08:25:47 -0600
committerunitexe <unitexe70@gmail.com>2026-03-02 22:51:24 -0600
commit0c027f613039db54bc87fb6de63c0ffe253cabf2 (patch)
treed636b1e73bf82f0f25528c0d1c9887bd31b5506b
parent69509e438d1417d25d646ff1a3ba88e27e4ed282 (diff)
Introduce meta-unit-virtualization
Primary motivation for this is removing observability containers from beaglebone black because of RAM limitations. Images can now include the observability containers by adding `observability` to `IMAGE_FEATURES`.
-rw-r--r--meta-unit-core/classes/fix-home-dir-ownership.bbclass9
-rw-r--r--meta-unit-core/classes/fix-unitexe-home-dir-ownership.bbclass5
-rw-r--r--meta-unit-core/conf/layer.conf6
-rw-r--r--meta-unit-core/dynamic-layers/raspberrypi/recipes-unit/images/core-image-unit.bbappend1
-rw-r--r--meta-unit-core/dynamic-layers/rockchip/recipes-unit/images/core-image-unit.bbappend1
-rw-r--r--meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-extended/shadow/shadow_%.bbappend (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend)5
-rw-r--r--meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-unit/images/core-image-unit.bbappend11
-rw-r--r--meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend)0
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-unit/images/core-image-unit.bbappend5
-rw-r--r--meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend2
-rw-r--r--meta-unit-core/recipes-unit/images/core-image-unit.bb2
-rw-r--r--meta-unit-kas/images/unit-poky/beaglebone-yocto/core-image-unit/whinlatter.yml1
-rw-r--r--meta-unit-kas/images/unit-poky/radxa-zero-3e/core-image-unit/whinlatter.yml1
-rw-r--r--meta-unit-kas/images/unit-poky/raspberrypi3-64/core-image-unit/whinlatter.yml1
-rw-r--r--meta-unit-virtualization/LICENSE21
-rw-r--r--meta-unit-virtualization/classes/fix-prometheus-conf-dir-ownership.bbclass (renamed from meta-unit-core/classes/fix-prometheus-conf-dir-ownership.bbclass)0
-rw-r--r--meta-unit-virtualization/classes/fix-svc-user-home-dir-ownership.bbclass5
-rw-r--r--meta-unit-virtualization/conf/layer.conf16
-rw-r--r--meta-unit-virtualization/recipes-containers/banner/banner_git.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner/banner_git.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/distribution/distribution.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/distribution.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/distribution/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/distribution/files/config.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/config.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/distribution/files/distribution.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/distribution.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/distribution/files/prometheus-target.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/prometheus-target.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/grafana/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/grafana/files/dashboard.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/dashboard.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/grafana/files/grafana.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/grafana.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/grafana/grafana.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/grafana.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-kubes.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-kubes.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-observability-quadlets.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb)4
-rw-r--r--meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb6
-rw-r--r--meta-unit-virtualization/recipes-containers/podman/podman_%.bbappend (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/podman/podman_%.bbappend)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus/files/LICENSE (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/LICENSE)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.container (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.container)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/prometheus/prometheus.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/prometheus.bb)0
-rw-r--r--meta-unit-virtualization/recipes-containers/pubd-kube/files/pubd.kube (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubd.kube)0
-rw-r--r--meta-unit-virtualization/recipes-containers/pubd-kube/files/pubsubd.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubsubd.yml)0
-rw-r--r--meta-unit-virtualization/recipes-containers/pubd-kube/pubd-kube.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/pubd-kube.bb)2
-rw-r--r--meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path.bb)2
-rw-r--r--meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path/distribution.path (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path/distribution.path)0
-rw-r--r--meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen.bb)2
-rw-r--r--meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.service (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.service)0
-rw-r--r--meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.sh (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.sh)0
-rw-r--r--meta-unit-virtualization/recipes-extended/shadow/shadow_%.bbappend12
-rw-r--r--meta-unit-virtualization/recipes-kernel/linux/linux-yocto_%.bbappend (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-kernel/linux/linux-yocto_%.bbappend)0
-rw-r--r--meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/files/datasource.yml (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/files/datasource.yml)0
-rw-r--r--meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb)2
-rw-r--r--meta-unit-virtualization/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb)0
-rw-r--r--meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb)0
-rw-r--r--meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-datasources.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-datasources.bb)0
-rw-r--r--meta-unit-virtualization/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb (renamed from meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb)0
-rw-r--r--meta-unit-virtualization/recipes-users/useradd/add-user-svc.bb (renamed from meta-unit-core/recipes-users/useradd/add-user-svc.bb)2
-rw-r--r--meta-virtualization-extra/conf/layer.conf15
66 files changed, 98 insertions, 41 deletions
diff --git a/meta-unit-core/classes/fix-home-dir-ownership.bbclass b/meta-unit-core/classes/fix-home-dir-ownership.bbclass
deleted file mode 100644
index e55c9eb..0000000
--- a/meta-unit-core/classes/fix-home-dir-ownership.bbclass
+++ /dev/null
@@ -1,9 +0,0 @@
-ROOTFS_POSTPROCESS_COMMAND:append = " fix_svc_user_home_directory_ownership; fix_unitexe_user_home_directory_ownership;"
-
-fix_svc_user_home_directory_ownership() {
- chown -R svc:svc ${IMAGE_ROOTFS}/home/svc
-}
-
-fix_unitexe_user_home_directory_ownership() {
- chown -R unitexe:unitexe ${IMAGE_ROOTFS}/home/unitexe
-}
diff --git a/meta-unit-core/classes/fix-unitexe-home-dir-ownership.bbclass b/meta-unit-core/classes/fix-unitexe-home-dir-ownership.bbclass
new file mode 100644
index 0000000..48d2e31
--- /dev/null
+++ b/meta-unit-core/classes/fix-unitexe-home-dir-ownership.bbclass
@@ -0,0 +1,5 @@
+ROOTFS_POSTPROCESS_COMMAND:append = " fix_unitexe_user_home_directory_ownership;"
+
+fix_unitexe_user_home_directory_ownership() {
+ chown -R unitexe:unitexe ${IMAGE_ROOTFS}/home/unitexe
+}
diff --git a/meta-unit-core/conf/layer.conf b/meta-unit-core/conf/layer.conf
index 7f6e371..6eaed0d 100644
--- a/meta-unit-core/conf/layer.conf
+++ b/meta-unit-core/conf/layer.conf
@@ -11,16 +11,18 @@ LAYERDEPENDS_unit-distro = "core yocto unit-users-layer"
LAYERSERIES_COMPAT_unit-core = "whinlatter"
BBFILES_DYNAMIC += " \
- virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bb \
- virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bbappend \
raspberrypi-extra-layer:${LAYERDIR}/dynamic-layers/raspberrypi-extra-layer/recipes-*/*/*.bb \
raspberrypi-extra-layer:${LAYERDIR}/dynamic-layers/raspberrypi-extra-layer/recipes-*/*/*.bbappend \
unit-profiling-layer:${LAYERDIR}/dynamic-layers/unit-profiling-layer/recipes-*/*/*.bb \
unit-profiling-layer:${LAYERDIR}/dynamic-layers/unit-profiling-layer/recipes-*/*/*.bbappend \
raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/recipes-*/*/*.bb \
raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/recipes-*/*/*.bbappend \
+ rockchip:${LAYERDIR}/dynamic-layers/rockchip/recipes-*/*/*.bb \
+ rockchip:${LAYERDIR}/dynamic-layers/rockchip/recipes-*/*/*.bbappend \
unit-graphics-layer:${LAYERDIR}/dynamic-layers/unit-graphics-layer/recipes-*/*/*.bb \
unit-graphics-layer:${LAYERDIR}/dynamic-layers/unit-graphics-layer/recipes-*/*/*.bbappend \
+ unit-virtualization-layer:${LAYERDIR}/dynamic-layers/unit-virtualization-layer/recipes-*/*/*.bb \
+ unit-virtualization-layer:${LAYERDIR}/dynamic-layers/unit-virtualization-layer/recipes-*/*/*.bbappend \
"
UNIT_CORE_LAYERDIR = "${LAYERDIR}"
diff --git a/meta-unit-core/dynamic-layers/raspberrypi/recipes-unit/images/core-image-unit.bbappend b/meta-unit-core/dynamic-layers/raspberrypi/recipes-unit/images/core-image-unit.bbappend
index 8b91da8..969ad6d 100644
--- a/meta-unit-core/dynamic-layers/raspberrypi/recipes-unit/images/core-image-unit.bbappend
+++ b/meta-unit-core/dynamic-layers/raspberrypi/recipes-unit/images/core-image-unit.bbappend
@@ -1 +1,2 @@
IMAGE_FEATURES:append:raspberrypi3-64 = " boot-splash"
+IMAGE_FEATURES:append = " observability"
diff --git a/meta-unit-core/dynamic-layers/rockchip/recipes-unit/images/core-image-unit.bbappend b/meta-unit-core/dynamic-layers/rockchip/recipes-unit/images/core-image-unit.bbappend
new file mode 100644
index 0000000..7c0581c
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/rockchip/recipes-unit/images/core-image-unit.bbappend
@@ -0,0 +1 @@
+IMAGE_FEATURES:append = " observability"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
index 6b57651..7783049 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
+++ b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-extended/shadow/shadow_%.bbappend
@@ -9,9 +9,4 @@ do_install:append() {
echo "" >> ${D}${sysconfdir}/subuid
echo "unitexe:100000:65536" >> ${D}${sysconfdir}/subgid
echo "" >> ${D}${sysconfdir}/subgid
-
- echo "svc:200000:65536" >> ${D}${sysconfdir}/subuid
- echo "" >> ${D}${sysconfdir}/subuid
- echo "svc:200000:65536" >> ${D}${sysconfdir}/subgid
- echo "" >> ${D}${sysconfdir}/subgid
}
diff --git a/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-unit/images/core-image-unit.bbappend b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-unit/images/core-image-unit.bbappend
new file mode 100644
index 0000000..eebbff6
--- /dev/null
+++ b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-unit/images/core-image-unit.bbappend
@@ -0,0 +1,11 @@
+inherit fix-svc-user-home-dir-ownership
+inherit fix-prometheus-conf-dir-ownership
+
+IMAGE_INSTALL:append = " packagegroup-unit-containers"
+
+# The only kube in here uses gRPC curl container which doesn't support armv7
+IMAGE_INSTALL:append:raspberrypi3-64 = " packagegroup-unit-kubes"
+IMAGE_INSTALL:append:radxa-zero-3e = " packagegroup-unit-kubes"
+
+IMAGE_INSTALL:append = " packagegroup-unit-quadlets"
+IMAGE_INSTALL:append = " ${@bb.utils.contains('IMAGE_FEATURES', 'observability', 'packagegroup-unit-observability-quadlets', '', d)}"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
index 23fe467..23fe467 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
+++ b/meta-unit-core/dynamic-layers/unit-virtualization-layer/recipes-users/useradd/add-user-unitexe.bbappend
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-unit/images/core-image-unit.bbappend b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-unit/images/core-image-unit.bbappend
deleted file mode 100644
index 275fe97..0000000
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-unit/images/core-image-unit.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-inherit fix-prometheus-conf-dir-ownership
-
-IMAGE_INSTALL:append = " packagegroup-unit-containers"
-IMAGE_INSTALL:append = " packagegroup-unit-kubes"
-IMAGE_INSTALL:append = " packagegroup-unit-quadlets"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend b/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend
deleted file mode 100644
index 23fe467..0000000
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-users/useradd/add-user-svc.bbappend
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit enable-linger
-inherit set-xdg-env
diff --git a/meta-unit-core/recipes-unit/images/core-image-unit.bb b/meta-unit-core/recipes-unit/images/core-image-unit.bb
index d133554..8dea4ce 100644
--- a/meta-unit-core/recipes-unit/images/core-image-unit.bb
+++ b/meta-unit-core/recipes-unit/images/core-image-unit.bb
@@ -2,6 +2,6 @@ SUMMARY = "Unit image"
LICENSE = "MIT"
-inherit fix-home-dir-ownership
+inherit fix-unitexe-home-dir-ownership
require unit-image-base.inc
diff --git a/meta-unit-kas/images/unit-poky/beaglebone-yocto/core-image-unit/whinlatter.yml b/meta-unit-kas/images/unit-poky/beaglebone-yocto/core-image-unit/whinlatter.yml
index 704abda..702deac 100644
--- a/meta-unit-kas/images/unit-poky/beaglebone-yocto/core-image-unit/whinlatter.yml
+++ b/meta-unit-kas/images/unit-poky/beaglebone-yocto/core-image-unit/whinlatter.yml
@@ -28,4 +28,5 @@ repos:
meta-unit-distro:
meta-unit-profiling:
meta-unit-users:
+ meta-unit-virtualization:
meta-virtualization-extra:
diff --git a/meta-unit-kas/images/unit-poky/radxa-zero-3e/core-image-unit/whinlatter.yml b/meta-unit-kas/images/unit-poky/radxa-zero-3e/core-image-unit/whinlatter.yml
index 0df2ff5..8bd6091 100644
--- a/meta-unit-kas/images/unit-poky/radxa-zero-3e/core-image-unit/whinlatter.yml
+++ b/meta-unit-kas/images/unit-poky/radxa-zero-3e/core-image-unit/whinlatter.yml
@@ -38,4 +38,5 @@ repos:
meta-unit-distro:
meta-unit-profiling:
meta-unit-users:
+ meta-unit-virtualization:
meta-virtualization-extra:
diff --git a/meta-unit-kas/images/unit-poky/raspberrypi3-64/core-image-unit/whinlatter.yml b/meta-unit-kas/images/unit-poky/raspberrypi3-64/core-image-unit/whinlatter.yml
index 349fe75..397c78d 100644
--- a/meta-unit-kas/images/unit-poky/raspberrypi3-64/core-image-unit/whinlatter.yml
+++ b/meta-unit-kas/images/unit-poky/raspberrypi3-64/core-image-unit/whinlatter.yml
@@ -39,4 +39,5 @@ repos:
meta-unit-graphics:
meta-unit-profiling:
meta-unit-users:
+ meta-unit-virtualization:
meta-virtualization-extra:
diff --git a/meta-unit-virtualization/LICENSE b/meta-unit-virtualization/LICENSE
new file mode 100644
index 0000000..52686ad
--- /dev/null
+++ b/meta-unit-virtualization/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Closed Circuit Consulting
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE. \ No newline at end of file
diff --git a/meta-unit-core/classes/fix-prometheus-conf-dir-ownership.bbclass b/meta-unit-virtualization/classes/fix-prometheus-conf-dir-ownership.bbclass
index cfb2a97..cfb2a97 100644
--- a/meta-unit-core/classes/fix-prometheus-conf-dir-ownership.bbclass
+++ b/meta-unit-virtualization/classes/fix-prometheus-conf-dir-ownership.bbclass
diff --git a/meta-unit-virtualization/classes/fix-svc-user-home-dir-ownership.bbclass b/meta-unit-virtualization/classes/fix-svc-user-home-dir-ownership.bbclass
new file mode 100644
index 0000000..f7113d5
--- /dev/null
+++ b/meta-unit-virtualization/classes/fix-svc-user-home-dir-ownership.bbclass
@@ -0,0 +1,5 @@
+ROOTFS_POSTPROCESS_COMMAND:append = " fix_svc_user_home_directory_ownership;"
+
+fix_svc_user_home_directory_ownership() {
+ chown -R svc:svc ${IMAGE_ROOTFS}/home/svc
+}
diff --git a/meta-unit-virtualization/conf/layer.conf b/meta-unit-virtualization/conf/layer.conf
new file mode 100644
index 0000000..e91b8c3
--- /dev/null
+++ b/meta-unit-virtualization/conf/layer.conf
@@ -0,0 +1,16 @@
+BBPATH .= ":${LAYERDIR}"
+
+BBFILES += "\
+ ${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend \
+"
+
+BBFILE_COLLECTIONS += "unit-virtualization-layer"
+BBFILE_PATTERN_unit-virtualization-layer = "^${LAYERDIR}/"
+BBFILE_PRIORITY_unit-virtualization-layer = "10"
+
+LAYERDEPENDS_unit-virtualization-layer += "virtualization-layer virtualization-extra-layer unit-users-layer"
+
+LAYERSERIES_COMPAT_unit-virtualization-layer = "whinlatter"
+
+UNIT_VIRTUALIZATION_LAYERDIR = "${LAYERDIR}"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner/banner_git.bb b/meta-unit-virtualization/recipes-containers/banner/banner_git.bb
index 55363a8..55363a8 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/banner/banner_git.bb
+++ b/meta-unit-virtualization/recipes-containers/banner/banner_git.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/distribution.bb b/meta-unit-virtualization/recipes-containers/distribution/distribution.bb
index 6452836..6452836 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/distribution.bb
+++ b/meta-unit-virtualization/recipes-containers/distribution/distribution.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/LICENSE b/meta-unit-virtualization/recipes-containers/distribution/files/LICENSE
index e06d208..e06d208 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/distribution/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/config.yml b/meta-unit-virtualization/recipes-containers/distribution/files/config.yml
index ee15050..ee15050 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/config.yml
+++ b/meta-unit-virtualization/recipes-containers/distribution/files/config.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/distribution.container b/meta-unit-virtualization/recipes-containers/distribution/files/distribution.container
index 1a97db8..1a97db8 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/distribution.container
+++ b/meta-unit-virtualization/recipes-containers/distribution/files/distribution.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/prometheus-target.yml b/meta-unit-virtualization/recipes-containers/distribution/files/prometheus-target.yml
index c7ac184..c7ac184 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/distribution/files/prometheus-target.yml
+++ b/meta-unit-virtualization/recipes-containers/distribution/files/prometheus-target.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/LICENSE b/meta-unit-virtualization/recipes-containers/grafana/files/LICENSE
index be3f7b2..be3f7b2 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/grafana/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/dashboard.yml b/meta-unit-virtualization/recipes-containers/grafana/files/dashboard.yml
index be165c4..be165c4 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/dashboard.yml
+++ b/meta-unit-virtualization/recipes-containers/grafana/files/dashboard.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/grafana.container b/meta-unit-virtualization/recipes-containers/grafana/files/grafana.container
index 10f4935..10f4935 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/files/grafana.container
+++ b/meta-unit-virtualization/recipes-containers/grafana/files/grafana.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/grafana.bb b/meta-unit-virtualization/recipes-containers/grafana/grafana.bb
index a024506..a024506 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/grafana/grafana.bb
+++ b/meta-unit-virtualization/recipes-containers/grafana/grafana.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-kubes.bb b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-kubes.bb
index 0ab160e..0ab160e 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-kubes.bb
+++ b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-kubes.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-observability-quadlets.bb
index 97142da..abe00af 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb
+++ b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-observability-quadlets.bb
@@ -1,9 +1,7 @@
-SUMMARY = "Unit quadlet packages"
+SUMMARY = "Unit observability quadlets"
inherit packagegroup
-RDEPENDS:${PN}:append = " banner"
-RDEPENDS:${PN}:append = " distribution"
RDEPENDS:${PN}:append = " prometheus"
RDEPENDS:${PN}:append = " prometheus-podman-exporter-rootful"
RDEPENDS:${PN}:append = " prometheus-podman-exporter-rootless"
diff --git a/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb
new file mode 100644
index 0000000..52c9d2c
--- /dev/null
+++ b/meta-unit-virtualization/recipes-containers/packagegroups/packagegroup-unit-quadlets.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Unit quadlet packages"
+
+inherit packagegroup
+
+RDEPENDS:${PN}:append = " banner"
+RDEPENDS:${PN}:append = " distribution"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/podman/podman_%.bbappend b/meta-unit-virtualization/recipes-containers/podman/podman_%.bbappend
index 116f8a4..116f8a4 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/podman/podman_%.bbappend
+++ b/meta-unit-virtualization/recipes-containers/podman/podman_%.bbappend
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/LICENSE b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/LICENSE
index 261eeb9..261eeb9 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container
index fd28b26..fd28b26 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container
+++ b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-node-exporter.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml
index c419778..c419778 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml
+++ b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/files/prometheus-target.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb
index 3b6837c..3b6837c 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb
+++ b/meta-unit-virtualization/recipes-containers/prometheus-node-exporter/prometheus-node-exporter.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE
index 261eeb9..261eeb9 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container
index eb067f9..eb067f9 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-podman-exporter.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml
index d75f8c1..d75f8c1 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/files/prometheus-target.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb
index 4cd1ad5..4cd1ad5 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootful/prometheus-podman-exporter-rootful.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE
index 261eeb9..261eeb9 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container
index 0cdfb0b..0cdfb0b 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-podman-exporter.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml
index a3bdf42..a3bdf42 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/files/prometheus-target.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb
index 6911425..6911425 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb
+++ b/meta-unit-virtualization/recipes-containers/prometheus-podman-exporter-rootless/prometheus-podman-exporter-rootless.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/LICENSE b/meta-unit-virtualization/recipes-containers/prometheus/files/LICENSE
index 261eeb9..261eeb9 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/LICENSE
+++ b/meta-unit-virtualization/recipes-containers/prometheus/files/LICENSE
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.container b/meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.container
index 7aa2d98..7aa2d98 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.container
+++ b/meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.container
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.yml b/meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.yml
index f4b09a4..f4b09a4 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/files/prometheus.yml
+++ b/meta-unit-virtualization/recipes-containers/prometheus/files/prometheus.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/prometheus.bb b/meta-unit-virtualization/recipes-containers/prometheus/prometheus.bb
index 5eadf25..5eadf25 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/prometheus/prometheus.bb
+++ b/meta-unit-virtualization/recipes-containers/prometheus/prometheus.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubd.kube b/meta-unit-virtualization/recipes-containers/pubd-kube/files/pubd.kube
index 3ee4930..3ee4930 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubd.kube
+++ b/meta-unit-virtualization/recipes-containers/pubd-kube/files/pubd.kube
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubsubd.yml b/meta-unit-virtualization/recipes-containers/pubd-kube/files/pubsubd.yml
index 58b2e1b..58b2e1b 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/files/pubsubd.yml
+++ b/meta-unit-virtualization/recipes-containers/pubd-kube/files/pubsubd.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/pubd-kube.bb b/meta-unit-virtualization/recipes-containers/pubd-kube/pubd-kube.bb
index 9a5c291..ed1e4e1 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-containers/pubd-kube/pubd-kube.bb
+++ b/meta-unit-virtualization/recipes-containers/pubd-kube/pubd-kube.bb
@@ -1,7 +1,7 @@
SUMMARY = "Pubd kube"
DESCRIPTION = "A kube for running a multi-container application (pubsub) that runs rootless"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${UNIT_CORE_LAYERDIR}/LICENSE;md5=38bf13be5d6979b28bd8adddb2f2f9b3"
+LIC_FILES_CHKSUM = "file://${UNIT_VIRTUALIZATION_LAYERDIR}/LICENSE;md5=a77c12e0c0e8a14cebb1494195720ccc"
SRC_URI = "\
file://pubd.kube \
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path.bb b/meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path.bb
index ae47e27..d9bd67b 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path.bb
+++ b/meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path.bb
@@ -1,6 +1,6 @@
SUMMARY = "Systemd path unit to wait for TLS key and cert generation for distribution"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${UNIT_CORE_LAYERDIR}/LICENSE;md5=38bf13be5d6979b28bd8adddb2f2f9b3"
+LIC_FILES_CHKSUM = "file://${UNIT_VIRTUALIZATION_LAYERDIR}/LICENSE;md5=a77c12e0c0e8a14cebb1494195720ccc"
inherit systemd
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path/distribution.path b/meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path/distribution.path
index d29fbd7..d29fbd7 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-distribution-path/distribution.path
+++ b/meta-unit-virtualization/recipes-core/systemd/systemd-distribution-path/distribution.path
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen.bb b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen.bb
index dc925d7..ee53401 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen.bb
+++ b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen.bb
@@ -1,6 +1,6 @@
SUMMARY = "Systemd service for generating TLS key and cert for distribution"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${UNIT_CORE_LAYERDIR}/LICENSE;md5=38bf13be5d6979b28bd8adddb2f2f9b3"
+LIC_FILES_CHKSUM = "file://${UNIT_VIRTUALIZATION_LAYERDIR}/LICENSE;md5=a77c12e0c0e8a14cebb1494195720ccc"
SYSTEMD_SERVICE:${PN} = "regkeygen.service"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.service b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.service
index e5f2cab..e5f2cab 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.service
+++ b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.service
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.sh b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.sh
index f1286dd..f1286dd 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-core/systemd/systemd-regkeygen/regkeygen.sh
+++ b/meta-unit-virtualization/recipes-core/systemd/systemd-regkeygen/regkeygen.sh
diff --git a/meta-unit-virtualization/recipes-extended/shadow/shadow_%.bbappend b/meta-unit-virtualization/recipes-extended/shadow/shadow_%.bbappend
new file mode 100644
index 0000000..76fbacb
--- /dev/null
+++ b/meta-unit-virtualization/recipes-extended/shadow/shadow_%.bbappend
@@ -0,0 +1,12 @@
+#
+# Support rootless podman for users.
+#
+# This is explained at:
+# https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration
+#
+do_install:append() {
+ echo "svc:200000:65536" >> ${D}${sysconfdir}/subuid
+ echo "" >> ${D}${sysconfdir}/subuid
+ echo "svc:200000:65536" >> ${D}${sysconfdir}/subgid
+ echo "" >> ${D}${sysconfdir}/subgid
+}
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-unit-virtualization/recipes-kernel/linux/linux-yocto_%.bbappend
index 37d2edd..37d2edd 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-kernel/linux/linux-yocto_%.bbappend
+++ b/meta-unit-virtualization/recipes-kernel/linux/linux-yocto_%.bbappend
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/files/datasource.yml b/meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/files/datasource.yml
index f0131f0..f0131f0 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/files/datasource.yml
+++ b/meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/files/datasource.yml
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb b/meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb
index 1450fb9..ce9fa50 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb
+++ b/meta-unit-virtualization/recipes-support/grafana-prometheus-datasource/grafana-prometheus-datasource.bb
@@ -1,6 +1,6 @@
SUMMARY = "Grafana prometheus data source drop-in"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${UNIT_CORE_LAYERDIR}/LICENSE;md5=38bf13be5d6979b28bd8adddb2f2f9b3"
+LIC_FILES_CHKSUM = "file://${UNIT_VIRTUALIZATION_LAYERDIR}/LICENSE;md5=a77c12e0c0e8a14cebb1494195720ccc"
SRC_URI = "file://datasource.yml"
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb b/meta-unit-virtualization/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb
index 4a0d1a4..4a0d1a4 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb
+++ b/meta-unit-virtualization/recipes-support/grafana-prometheus-podman-dashboard/grafana-prometheus-podman-dashboard_git.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb b/meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb
index 435e524..435e524 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb
+++ b/meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-dashboards.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-datasources.bb b/meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-datasources.bb
index 73b4607..73b4607 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/packagegroups/packagegroup-grafana-datasources.bb
+++ b/meta-unit-virtualization/recipes-support/packagegroups/packagegroup-grafana-datasources.bb
diff --git a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb b/meta-unit-virtualization/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb
index 82944b6..82944b6 100644
--- a/meta-unit-core/dynamic-layers/virtualization-layer/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb
+++ b/meta-unit-virtualization/recipes-support/prometheus-node-exporter-dashboard/prometheus-node-exporter-dashboard_git.bb
diff --git a/meta-unit-core/recipes-users/useradd/add-user-svc.bb b/meta-unit-virtualization/recipes-users/useradd/add-user-svc.bb
index a1d44fa..dbbc0c5 100644
--- a/meta-unit-core/recipes-users/useradd/add-user-svc.bb
+++ b/meta-unit-virtualization/recipes-users/useradd/add-user-svc.bb
@@ -5,6 +5,8 @@ EXCLUDE_FROM_WORLD = "1"
inherit useradd
inherit extrausers
+inherit enable-linger
+inherit set-xdg-env
RDEPENDS:${PN}:append = " base-passwd"
RDEPENDS:${PN}:append = " busybox"
diff --git a/meta-virtualization-extra/conf/layer.conf b/meta-virtualization-extra/conf/layer.conf
index 89b40b7..eca715a 100644
--- a/meta-virtualization-extra/conf/layer.conf
+++ b/meta-virtualization-extra/conf/layer.conf
@@ -5,17 +5,12 @@ BBFILES += "\
${LAYERDIR}/recipes-*/*/*.bbappend \
"
-BBFILE_COLLECTIONS += "meta-virtualization-extra"
-BBFILE_PATTERN_meta-virtualization-extra = "^${LAYERDIR}/"
-BBFILE_PRIORITY_meta-virtualization-extra = "9"
+BBFILE_COLLECTIONS += "virtualization-extra-layer"
+BBFILE_PATTERN_virtualization-extra-layer = "^${LAYERDIR}/"
+BBFILE_PRIORITY_virtualization-extra-layer = "9"
-LAYERDEPENDS_meta-virtualization-extra += "core openembedded-layer virtualization-layer"
+LAYERDEPENDS_virtualization-extra-layer += "core openembedded-layer virtualization-layer"
-LAYERSERIES_COMPAT_meta-virtualization-extra = "whinlatter"
+LAYERSERIES_COMPAT_virtualization-extra-layer = "whinlatter"
VIRTUALIZATION_EXTRA_LAYERDIR = "${LAYERDIR}"
-
-BBFILES_DYNAMIC += " \
- freescale-layer:${LAYERDIR}/dynamic-layers/freescale-layer/*/*/*.bb \
- freescale-layer:${LAYERDIR}/dynamic-layers/freescale-layer/*/*/*.bbappend \
-"