On 9/25/25 07:07, Alyssa Ross wrote: > Demi Marie Obenour writes: > >> 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 >> --- >> 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(-) > > Hmm, we just moved away from using dependencies files to dependencies.d > directories, but now we're going the other way with contents? That's > not to say we couldn't have a README file in each contents.d or > something serving much the same purpose, though. I did not know that contents.d was supported. Will fix once the systemd-udevd work has landed. >> 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 >> +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour >> + >> +# 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 > > I'm not convinced by the "basic" bundle. I worry that it's likely to > end up accumulating stuff that isn't actually needed by everything that > depends on it, and that things will end up being slow because they're > waiting for things they don't actually need. I'm not sure where core > should go, really, because anything /could/ crash at any time. > static-nodes is presumably going away anyway with udev, so this is > really just the coldplug bundle. static-nodes isn't going away. >> 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 >> -# >> -systemd-udevd-coldplug >> +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour >> + >> +# 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 > > See below — I think the name of "vm-env" hasn't captured what it does > very well. > >> 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 >> -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 > > Are these changes supposed to be here? No, they are not. >> 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 >> -# >> -static-nodes >> -systemd-udevd-coldplug >> +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour >> + >> +# 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 >> -# >> -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 > > I think it probably makes sense to keep a distinction between "user can > now start VMs" (vm-env) and "it is now possible to start a VMM, possibly > automatically" (vmm-env). We can of course try to find better names, > though. can-start-vms-automatically and can-start-vms-manually? -- Sincerely, Demi Marie Obenour (she/her/hers)