Chris Hofstaedtler wrote:
> On Mon, Oct 28, 2024 at 11:04:02AM +0100, Helmut Grohne wrote:
> > I'm not yet sure exactly how this works, but the context is "slim"
> > containers (i.e. those that do not run systemd as pid 1) and I very much
> > expect them to not run a journald from the container environment either.
> > Rather the container runtime essentially provides /dev/log and a
> > journald socket to the container in some (unspecified?) way.
>
> Wouldn't we expect that such containers have systemd (and thus
> journald) installed, but nothing will start them (because there is
> no init).

Sometimes, but not always. Many application containers will not have an
ordinary init system present at all; they'll be launched entirely by the
container system, which bind-mounts things from outside the container
into the container's filesystem, unshares, and then either serves as a
minimal init itself (if the application might do non-trivial things like
fork/exec and might need init as a reaper) or directly execs the
application (especially if the entire container is mostly going to have
only 1 process in it).

Debian can't serve *all* of these use cases, in part because of
Essential. And there's a limit to the degree that Debian should cater to
cases that force-remove essential packages to make small containers, in
the absence of a distro-wide effort to reduce Essential. But the use
case of slim containers does not inherently require having any init
system installed within the container.

That said, I think it'd be perfectly reasonable to defer that use case,
and focus primarily on the use case of letting packages generally
request that /dev/log be provided by something, without requiring users
of systemd-journald to install a separate syslog daemon they don't want.
A Debian-provided package that's *effectively* an equivs stub saying
"install this to assert that something will provide /dev/log" seems
pretty reasonable for that. There's no way to assert that the init
system providing that is actually *running*, because dependencies can
only say what is installed and not what is running, but it's not obvious
how to do any *better* than that within the framework of dependencies.

Reply via email to