From 491f487ad5682e2744c4bc816a35c02754c531bc Mon Sep 17 00:00:00 2001 From: Ian Jordan Date: Mon, 27 Apr 2026 23:33:35 +0100 Subject: [PATCH] systemd enabled livecds Enables livecds to be built with systemd support when the following is added to a spec file: livecd/systemd: yes If not set then Catalyst will revert to normal and build for OpenRC. For now this is basic, but very useable. app-misc/livecd-tools is not used all, although support can be extended for it. Services can be be enabled in spec using: livecd/rcadd: NetworkManager or disabled using rcdel. A service file is created for autologin. Signed-off-by: Ian Jordan --- catalyst/targets/livecd_stage2.py | 1 + targets/livecd-stage2/controller.sh | 11 +++++++--- targets/support/systemctl.sh | 34 +++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100755 targets/support/systemctl.sh diff --git a/catalyst/targets/livecd_stage2.py b/catalyst/targets/livecd_stage2.py index 6f1eb5bc..4ee22f94 100644 --- a/catalyst/targets/livecd_stage2.py +++ b/catalyst/targets/livecd_stage2.py @@ -35,6 +35,7 @@ class livecd_stage2(StageBase): "livecd/readme", "livecd/rm", "livecd/root_overlay", + "livecd/systemd", "livecd/type", "livecd/unmerge", "livecd/users", diff --git a/targets/livecd-stage2/controller.sh b/targets/livecd-stage2/controller.sh index 2b27a92c..9b4b385e 100755 --- a/targets/livecd-stage2/controller.sh +++ b/targets/livecd-stage2/controller.sh @@ -61,9 +61,14 @@ case $1 in ;; rc-update) - exec_in_chroot ${clst_shdir}/support/rc-update.sh - ;; - + # Check for systemd enabled livecd + if [[ ${clst_livecd_systemd} == "yes" ]]; then + exec_in_chroot ${clst_shdir}/support/systemctl.sh + else + # Run as OpenRC + exec_in_chroot ${clst_shdir}/support/rc-update.sh + fi + ;; fsscript) exec_in_chroot ${clst_fsscript} ;; diff --git a/targets/support/systemctl.sh b/targets/support/systemctl.sh new file mode 100755 index 00000000..3d5f716a --- /dev/null +++ b/targets/support/systemctl.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# This script only runs when livecd/systemd: yes is set in the spec + +# Configure autologin on tty1 for systemd live media +mkdir -p /etc/systemd/system/getty@tty1.service.d +cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf <