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

Reply via email to