From 7c020d25e040f8f5b525f024f0923bab2628034f Mon Sep 17 00:00:00 2001 From: Thomas Duckworth Date: Mon, 4 May 2026 19:09:03 +1000 Subject: [PATCH] Add a mount unit and service for the OpenQA bootstrapping sysext This is necessary to inject tests and set up the image for OpenQA testing. --- .../systemd/system-preset/00-kde-linux.preset | 4 +++ .../system/kde-linux-openqa-setup.service | 23 ++++++++++++++++ .../system/run-extensions-openqa.mount | 26 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 mkosi.extra/usr/lib/systemd/system/kde-linux-openqa-setup.service create mode 100644 mkosi.extra/usr/lib/systemd/system/run-extensions-openqa.mount diff --git a/mkosi.extra/usr/lib/systemd/system-preset/00-kde-linux.preset b/mkosi.extra/usr/lib/systemd/system-preset/00-kde-linux.preset index e0de477..9dace26 100644 --- a/mkosi.extra/usr/lib/systemd/system-preset/00-kde-linux.preset +++ b/mkosi.extra/usr/lib/systemd/system-preset/00-kde-linux.preset @@ -28,6 +28,9 @@ enable tuned.service enable vboxservice.service enable vmtoolsd.service +# OpenQA integration +enable run-extensions-openqa.mount + # NVIDIA-specific services (shouldn't affect non-NVIDIA hardware) enable nvidia-hibernate.service enable nvidia-resume.service @@ -43,6 +46,7 @@ enable kde-linux-btrfs.service enable kde-linux-configure-firefox.path enable kde-linux-iw-set-regdomain.path enable kde-linux-live-setup.service +enable kde-linux-openqa-setup.service enable kde-linux-powertop.service enable kde-linux-volatile-var-lib-flatpak.service enable kde-linux-sysupdated.socket diff --git a/mkosi.extra/usr/lib/systemd/system/kde-linux-openqa-setup.service b/mkosi.extra/usr/lib/systemd/system/kde-linux-openqa-setup.service new file mode 100644 index 0000000..98a34ba --- /dev/null +++ b/mkosi.extra/usr/lib/systemd/system/kde-linux-openqa-setup.service @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: 2026 Thomas Duckworth + +# This runs the bootstrapping executable that's included in the OpenQA sysext image. + +[Unit] +Description=Bootstrap OpenQA Testing Environment +ConditionVirtualization=vm +ConditionPathIsMountPoint=/run/extensions/openqa + +After=systemd-sysext.service +After=local-fs.target network-online.target +Before=display-manager.service +Wants=network-online.target + +[Service] +Type=oneshot +ExecStart=/usr/lib/openqa-bootstrap +RemainAfterExit=yes +TimeoutStartSec=300 + +[Install] +WantedBy=multi-user.target diff --git a/mkosi.extra/usr/lib/systemd/system/run-extensions-openqa.mount b/mkosi.extra/usr/lib/systemd/system/run-extensions-openqa.mount new file mode 100644 index 0000000..3e344de --- /dev/null +++ b/mkosi.extra/usr/lib/systemd/system/run-extensions-openqa.mount @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: 2026 Thomas Duckworth + +# Mounts the OpenQA bootstrapping sysext - an erofs-formatted disk labelled kde-openqa-ext. +# This is attached as a hard disk in QEMU. +# This is used in OpenQA testing to do some setup and provide tests that run on the System Under Test. + +[Unit] +Description=OpenQA Bootstrapping Sysext +# We don't want people using this to inject malware on some unwitting person's system with a pen drive. +# Hence, such dangerous things should only be allowed in a VM. +ConditionVirtualization=vm +ConditionPathExists=/dev/disk/by-label/kde-openqa-ext +DefaultDependencies=no +Before=systemd-sysext.service +After=dev-disk-by\x2dlabel-kde\x2dopenqa\x2dext.device +BindsTo=dev-disk-by\x2dlabel-kde\x2dopenqa\x2dext.device + +[Mount] +What=/dev/disk/by-label/kde-openqa-ext +Where=/run/extensions/openqa +Type=erofs +Options=ro + +[Install] +WantedBy=systemd-sysext.service