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.