Package: live-config-systemd
Version: 11.0.5
Severity: normal
Short version:
* live-boot + live-config used the same kernel-command-line argument
(boot=live).
* dracut-live/systemd-volatile + live-config use different
kernel-command-line arguments.
* should live-config change to be consistent with dracut and/or systemd?
* Personally I think the status quo is... tolerable.
Boring detailed discussion follows.
live-config has:
backend/systemd/live-config-getty-generator: if ! grep -q "boot=live"
/proc/cmdline
backend/systemd/live-config.systemd:ConditionKernelCommandLine=boot=live
This made sense when Debian used live-boot and initramfs-tools, because
boot=<method> was how you told initramfs-tools you wanted to use live-boot.
root=/dev/vda # normal boot, ignores live-boot even if
installed
boot=live root=/dev/vda plainroot # mounts /dev/vda in live mode
boot=live <no other arguments> # looks for /live/filesystem.*, mounts
in live mode
boot=nfs nfsroot=... # do network boot (no live stuff)
boot=local root=... # do normal boot (boot=local is the
default)
This makes less sense when using dracut dmsquash-live module, where the options
look like this:
root=/dev/vda # normal boot
root=live:/dev/vda # live boot, looks for LiveOS/squashfs.img but only in
/dev/vda
This makes less sense when using dracut systemd module, where options look like
this:
<no arguments> # normal boot with
DISCOVERABLE_PARTITIONS.md autodetection
root=/dev/vda # normal boot
root=/dev/vda systemd.volatile=overlay # live boot like old "plainroot"
method
<nothing> systemd.volatile=overlay # I guess live boot with
DISCOVERABLE_PARTITIONS.md?
Right now it is possible to work around this by just adding boot=live when
using dracut.
But when looking just at boot arguments,
it's very easy to think "oh that's for live-boot, not dracut" and remove it,
breaking live-config.
(Which is what happened to me.)
I think it is reasonable that live-config checks to avoid firing on normal
boots.
My first thought was that maybe live-config could look for AT LEAST ONE of
boot=live
root=live:
systemd.volatile=overlay
But I don't think you can "OR" ConditionKernelCommandLine= clauses together
like that, and
then what happens if people do boot=live on dracut (live-config runs during
non-live boot), or
if people do boot=live nfsroot=live:/opt/live on legacy initramfs-tools
(live-config runs during non-live boot).
Maybe it is less confusing overall to leave things as-is.
"man live-config" already says at the top that boot=live is needed for it to
work at all, so
it is already clearly documented.
-- System Information:
Debian Release: 13.3
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500,
'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.12.63+deb13-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled