From: Lennart Poettering <lennart@poettering.net>
To: Demi Marie Obenour <demiobenour@gmail.com>
Cc: systemd development <systemd-devel@lists.freedesktop.org>,
Alyssa Ross <hi@alyssa.is>,
Spectrum OS Development <devel@spectrum-os.org>
Subject: Re: [systemd-devel] Arranging groups of services
Date: Fri, 5 Sep 2025 18:49:12 +0200 [thread overview]
Message-ID: <aLsSkYEtLmeDQxGc@gardel-login> (raw)
In-Reply-To: <ebec7d90-76b5-40f2-8eeb-3005609b2b48@gmail.com>
On Sa, 16.08.25 19:11, Demi Marie Obenour (demiobenour@gmail.com) wrote:
> I'm working on Spectrum OS (https://spectrum-os.org/) and am
> currently porting it from s6 (https://skarnet.org/software/s6-linux-init/)
> to systemd.
>
> Spectrum OS's host (which is what is being ported) is rather
> different from a normal system:
>
> - The root filesystem is completely read-only. There's no writable /var.
> I decided to put a tmpfs there for now.
As per https://systemd.io/SYSTEMD_FILE_HIERARCHY_REQUIREMENTS we
document that /var/ should be writable by the time local-fs.target is
reached. Putting a tmpfs there is fine, for systems that should not be
persistency.
If you leave /var/ read-only after local-fs.target then you are on
your own.
> - There is no network access, so /etc/resolv.conf isn't needed.
> - The real work happens in VMs, each of which depends on a few services:
> - Cloud Hypervisor (https://www.cloudhypervisor.org) which runs the VM.
> - crosvm (https://crosvm.dev/book/) used for graphics.
> - virtiofsd (https://virtio-fs.gitlab.io) to provide a filesystem
> - Spectrum OS's own proxy for the XDG desktop portals
> - In the future, an instance of vhost-device-sound
> (https://github.com/rust-vmm/vhost-device/blob/main/vhost-device-sound/README.md)
> used for sound
> - A per-VM D-Bus daemon
> - An instance of xdg-desktop-portal
>
> If the Cloud Hypervisor instance is stopped or exits, the others
> should be stopped automatically, as they have no other use.
> Having BindsTo=, After=, PropagatesStopTo=, and PropagatesReloadTo=
> should handle most cases, but I don't know if that is sufficient
> if Cloud Hypervisor exits spontaneously (because the guest shut down)
> or crashes.
Usually PartOf= is what is used for this, to bind the services's
lifetime to some target.
> Additionally, these services have different sandboxing needs.
> Cloud Hypervisor should only be able to connect to its own instance
> of the daemons that serve it, rather than to any instance.
connect how? AF_UNIX?
> crosvm needs GPU and Wayland access and vhost-device-sound needs
> to connect to PipeWire. virtiofsd needs an id-mapped mount.
> I would also like to block abstract AF_UNIX socket access.
PrivateNetwork= disconnects the abstract AF_UNIX socket namespace
too. (But not AF_UNIX in the fs!)
> Are there existing systemd features that can easily meet these
> needs? For the sockets I am thinking of placing them in
> RuntimeDirectory= and only giving the correct units access to
> those directories. Also, I would like to use `DynamicUser=`
> for everything where that is possible.
For the sockets you could put them in some special dir somewhere
then bind mount them via BindReadOnlyPaths=...
Lennart
--
Lennart Poettering, Berlin
prev parent reply other threads:[~2025-09-05 16:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-16 23:11 Arranging groups of services Demi Marie Obenour
2025-09-04 17:31 ` [systemd-devel] " Michal Koutný
2025-09-05 16:49 ` Lennart Poettering [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aLsSkYEtLmeDQxGc@gardel-login \
--to=lennart@poettering.net \
--cc=demiobenour@gmail.com \
--cc=devel@spectrum-os.org \
--cc=hi@alyssa.is \
--cc=systemd-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/crosvm
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/nixpkgs
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
https://spectrum-os.org/git/www
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).