This moves almost all of the s6-rc dependencies into named, commented bundles. This makes the system much easier to understand. Most of the explanation is in the bundle files themselves. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> --- host/rootfs/Makefile | 8 ++++---- host/rootfs/image/etc/s6-rc/basic/contents | 18 ++++++++++++++++++ host/rootfs/image/etc/s6-rc/{vmm-env => basic}/type | 0 .../image/etc/s6-rc/{vmm-env => basic}/type.license | 0 host/rootfs/image/etc/s6-rc/ok-all/contents | 19 ++++++++++++++++--- .../s6-rc/sys-vmms/dependencies.d/{vmm-env => vm-env} | 0 host/rootfs/image/etc/s6-rc/systemd-udevd/run | 9 ++++++--- host/rootfs/image/etc/s6-rc/vm-env/contents | 13 ++++++++++--- host/rootfs/image/etc/s6-rc/vmm-env/contents | 9 --------- .../dependencies.d/{systemd-udevd-coldplug => basic} | 0 10 files changed, 54 insertions(+), 22 deletions(-) diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile index db142f290a1efd3884d8c5a114b26fa0f42ef5f1..9a9e533ad2433bce137dd73e7e9d519c5afab303 100644 --- a/host/rootfs/Makefile +++ b/host/rootfs/Makefile @@ -127,6 +127,8 @@ build/empty: mkdir -p $@ S6_RC_FILES = \ + image/etc/s6-rc/basic/contents \ + image/etc/s6-rc/basic/type \ image/etc/s6-rc/core/type \ image/etc/s6-rc/core/up \ image/etc/s6-rc/kvm/timeout-up \ @@ -136,7 +138,7 @@ S6_RC_FILES = \ image/etc/s6-rc/ok-all/type \ image/etc/s6-rc/static-nodes/type \ image/etc/s6-rc/static-nodes/up \ - image/etc/s6-rc/sys-vmms/dependencies.d/vmm-env \ + image/etc/s6-rc/sys-vmms/dependencies.d/vm-env \ image/etc/s6-rc/sys-vmms/type \ image/etc/s6-rc/sys-vmms/up \ image/etc/s6-rc/systemd-udevd-coldplug/dependencies.d/systemd-udevd \ @@ -148,9 +150,7 @@ S6_RC_FILES = \ image/etc/s6-rc/systemd-udevd/type \ image/etc/s6-rc/vm-env/contents \ image/etc/s6-rc/vm-env/type \ - image/etc/s6-rc/vmm-env/contents \ - image/etc/s6-rc/vmm-env/type \ - image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug \ + image/etc/s6-rc/weston/dependencies.d/basic \ image/etc/s6-rc/weston/notification-fd \ image/etc/s6-rc/weston/run \ image/etc/s6-rc/weston/type diff --git a/host/rootfs/image/etc/s6-rc/basic/contents b/host/rootfs/image/etc/s6-rc/basic/contents new file mode 100644 index 0000000000000000000000000000000000000000..54f58577ba9f125e7fc08dcdd69394e8a88ab622 --- /dev/null +++ b/host/rootfs/image/etc/s6-rc/basic/contents @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: CC0-1.0 +# SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour <demiobenour@gmail.com> + +# This file contains all atomics and bundles needed for basic system +# initialization. Everything that is not meant to run in early boot +# should depend on this. + +# This ensures that core files are written to the right place. +core + +# This ensures that static nodes are created. +static-nodes + +# systemd runs systemd-udev-trigger.service before sysinit.target. +# Therefore, anything using libudev that isn't an early boot service +# might expect udev coldplug to have finished. +systemd-udevd-coldplug diff --git a/host/rootfs/image/etc/s6-rc/vmm-env/type b/host/rootfs/image/etc/s6-rc/basic/type similarity index 100% rename from host/rootfs/image/etc/s6-rc/vmm-env/type rename to host/rootfs/image/etc/s6-rc/basic/type diff --git a/host/rootfs/image/etc/s6-rc/vmm-env/type.license b/host/rootfs/image/etc/s6-rc/basic/type.license similarity index 100% rename from host/rootfs/image/etc/s6-rc/vmm-env/type.license rename to host/rootfs/image/etc/s6-rc/basic/type.license diff --git a/host/rootfs/image/etc/s6-rc/ok-all/contents b/host/rootfs/image/etc/s6-rc/ok-all/contents index c76a5af336c7f1c3f4b81bf1f6244a53e0399fe8..edef03d2b6eae4fb0b92ac828436cd4572ca7acc 100644 --- a/host/rootfs/image/etc/s6-rc/ok-all/contents +++ b/host/rootfs/image/etc/s6-rc/ok-all/contents @@ -1,6 +1,19 @@ # SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> -# -systemd-udevd-coldplug +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour <demiobenour@gmail.com> + +# This file contains the services that need to be started even +# if nothing else depends on them. It should not include services +# that are only needed by other services. For instance, it would +# not be appropriate for this file to reference systemd-udevd. +# However, services should be included in this file whenever they +# are directly needed by the user, even if they depend on another +# service in this files. For instance, sys-vmms depends on weston, +# but it is still included. + +# VMMs that should be started at boot. In the future +# it might make sense to start them only as needed. sys-vmms -vm-env + +# The Wayland compositor. +weston diff --git a/host/rootfs/image/etc/s6-rc/sys-vmms/dependencies.d/vmm-env b/host/rootfs/image/etc/s6-rc/sys-vmms/dependencies.d/vm-env similarity index 100% rename from host/rootfs/image/etc/s6-rc/sys-vmms/dependencies.d/vmm-env rename to host/rootfs/image/etc/s6-rc/sys-vmms/dependencies.d/vm-env diff --git a/host/rootfs/image/etc/s6-rc/systemd-udevd/run b/host/rootfs/image/etc/s6-rc/systemd-udevd/run index 2501680b69eb0060b651146dffb6b3a99640c6fb..f05804a6b3903a767f8e1400cf0153045dd3781f 100644 --- a/host/rootfs/image/etc/s6-rc/systemd-udevd/run +++ b/host/rootfs/image/etc/s6-rc/systemd-udevd/run @@ -1,11 +1,14 @@ #!/bin/execlineb -P # SPDX-License-Identifier: EUPL-1.2+ # SPDX-FileCopyrightText: 2025 Demi Marie Obenour <demiobenour@gmail.com> -if { rm -f /run/sd-notify-wrapper/systemd-udevd } +if { mkdir -p /run/sd-notify-wrapper } +s6-setlock -d 4 /run/sd-notify-wrapper/systemd-udevd.lock +if { rm -f /run/sd-notify-wrapper/systemd-udevd.sock } background { - s6-ipcserver-socketbinder -b0 -m -a 0600 /run/sd-notify-wrapper/systemd-udevd + s6-ipcserver-socketbinder -b0 -m -a 0600 /run/sd-notify-wrapper/systemd-udevd.sock fdmove 1 3 sd-notify-adapter } -export NOTIFY_SOCKET /run/sd-notify-wrapper/systemd-udevd +fdclose 3 +export NOTIFY_SOCKET /run/sd-notify-wrapper/systemd-udevd.sock exec -a systemd-udevd udevadm diff --git a/host/rootfs/image/etc/s6-rc/vm-env/contents b/host/rootfs/image/etc/s6-rc/vm-env/contents index ed8b5c410adfc17f5bbc33932ac79d97bd7b3115..81bfd422d22bde582fe198e0778c1c93d0d0f329 100644 --- a/host/rootfs/image/etc/s6-rc/vm-env/contents +++ b/host/rootfs/image/etc/s6-rc/vm-env/contents @@ -1,6 +1,13 @@ # SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> -# -static-nodes -systemd-udevd-coldplug +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour <demiobenour@gmail.com> + +# This file contains s6 atomics and bundles that +# need to be started before starting any VMs. + +# Basic initialization +basic +# KVM being available +kvm +# Wayland compositor ready weston diff --git a/host/rootfs/image/etc/s6-rc/vmm-env/contents b/host/rootfs/image/etc/s6-rc/vmm-env/contents deleted file mode 100644 index 9a1aea63abd1b5c374e3ac9a9671e4c9341f8d16..0000000000000000000000000000000000000000 --- a/host/rootfs/image/etc/s6-rc/vmm-env/contents +++ /dev/null @@ -1,9 +0,0 @@ -# SPDX-License-Identifier: CC0-1.0 -# SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> -# -core -kvm -# systemd runs systemd-udev-trigger.service before sysinit.target. -# Therefore, anything using libudev that isn't an early boot service -# might expect udev coldplug to have finished. -systemd-udevd-coldplug diff --git a/host/rootfs/image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug b/host/rootfs/image/etc/s6-rc/weston/dependencies.d/basic similarity index 100% rename from host/rootfs/image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug rename to host/rootfs/image/etc/s6-rc/weston/dependencies.d/basic -- 2.51.0