From: Daan De Meyer Date: Thu, 19 Feb 2026 12:59:18 +0000 (+0100) Subject: Skip all kernel cmdline options that don't apply to containers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2f92bd9d52286a5f76239f6d1a78da2c2f8de5b;p=thirdparty%2Fmkosi.git Skip all kernel cmdline options that don't apply to containers --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 2349d6339..7ba9cacb1 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -4398,7 +4398,7 @@ def run_shell(args: Args, config: Config) -> None: # to pid1. Let's mimic the same behavior when we invoke nspawn as a container. for arg in itertools.chain( config.kernel_command_line, - finalize_kernel_command_line_extra(config), + finalize_kernel_command_line_extra(args, config), ): name, sep, value = arg.partition("=") diff --git a/mkosi/qemu.py b/mkosi/qemu.py index e7cbdfeb9..60db6e01e 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -39,6 +39,7 @@ from mkosi.config import ( Network, OutputFormat, Ssh, + Verb, VsockCID, finalize_term, format_bytes, @@ -779,27 +780,12 @@ def finalize_state(config: Config, cid: int) -> Iterator[None]: p.unlink(missing_ok=True) -def finalize_kernel_command_line_extra(config: Config) -> list[str]: - columns, lines = shutil.get_terminal_size() - term = finalize_term() - +def finalize_kernel_command_line_extra(args: Args, config: Config) -> list[str]: cmdline = [ - "rw", # Make sure we set up networking in the VM/container. "systemd.wants=network.target", - # Make sure we don't load vmw_vmci which messes with virtio vsock. - "module_blacklist=vmw_vmci", - f"systemd.tty.term.hvc0={term}", - f"systemd.tty.columns.hvc0={columns}", - f"systemd.tty.rows.hvc0={lines}", ] - if not any(s.startswith("ip=") for s in config.kernel_command_line_extra): - cmdline += ["ip=enc0:any", "ip=enp0s1:any", "ip=enp0s2:any", "ip=host0:any", "ip=none"] - - if not any(s.startswith("loglevel=") for s in config.kernel_command_line_extra): - cmdline += ["loglevel=4"] - if not any(s.startswith("SYSTEMD_SULOGIN_FORCE=") for s in config.kernel_command_line_extra): cmdline += ["SYSTEMD_SULOGIN_FORCE=1"] @@ -809,16 +795,34 @@ def finalize_kernel_command_line_extra(config: Config) -> list[str]: ): cmdline += [f"systemd.hostname={config.machine}"] - if config.console not in (ConsoleMode.gui, ConsoleMode.headless): + if args.verb != Verb.boot: + columns, lines = shutil.get_terminal_size() + term = finalize_term() + cmdline += [ - f"systemd.tty.term.console={term}", - f"systemd.tty.columns.console={columns}", - f"systemd.tty.rows.console={lines}", - "console=hvc0", - f"TERM={term}", + "rw", + # Make sure we don't load vmw_vmci which messes with virtio vsock. + "module_blacklist=vmw_vmci", + f"systemd.tty.term.hvc0={term}", + f"systemd.tty.columns.hvc0={columns}", + f"systemd.tty.rows.hvc0={lines}", ] - elif config.console == ConsoleMode.gui and config.architecture.is_arm_variant(): - cmdline += ["console=tty0"] + + if not any(s.startswith("ip=") for s in config.kernel_command_line_extra): + cmdline += ["ip=enc0:any", "ip=enp0s1:any", "ip=enp0s2:any", "ip=host0:any", "ip=none"] + + if not any(s.startswith("loglevel=") for s in config.kernel_command_line_extra): + cmdline += ["loglevel=4"] + + if config.console not in (ConsoleMode.gui, ConsoleMode.headless): + cmdline += [ + f"systemd.tty.term.console={term}", + f"systemd.tty.columns.console={columns}", + f"systemd.tty.rows.console={lines}", + f"TERM={term}", + ] + elif config.console == ConsoleMode.gui and config.architecture.is_arm_variant(): + cmdline += ["console=tty0"] for s in config.kernel_command_line_extra: key, sep, value = s.partition("=") @@ -1184,7 +1188,7 @@ def run_qemu(args: Args, config: Config) -> None: if kernel: cmdline += ["-kernel", kernel] - if any(s.startswith("root=") for s in finalize_kernel_command_line_extra(config)): + if any(s.startswith("root=") for s in finalize_kernel_command_line_extra(args, config)): pass elif config.output_format == OutputFormat.disk: # We can't rely on gpt-auto-generator when direct kernel booting so synthesize a root= @@ -1333,7 +1337,7 @@ def run_qemu(args: Args, config: Config) -> None: elif kernel: kcl += [f"systemd.set_credential_binary={p.name}:{payload.decode()}"] - kcl += finalize_kernel_command_line_extra(config) + kcl += finalize_kernel_command_line_extra(args, config) if kernel and (kerneltype != KernelType.uki or not config.architecture.supports_smbios(firmware)): cmdline += ["-append", " ".join(config.kernel_command_line + kcl)] diff --git a/mkosi/vmspawn.py b/mkosi/vmspawn.py index 36217c339..2995ef1ef 100644 --- a/mkosi/vmspawn.py +++ b/mkosi/vmspawn.py @@ -112,7 +112,7 @@ def run_vmspawn(args: Args, config: Config) -> None: if config.forward_journal: cmdline += ["--forward-journal", config.forward_journal] - cmdline += [*args.cmdline, *finalize_kernel_command_line_extra(config)] + cmdline += [*args.cmdline, *finalize_kernel_command_line_extra(args, config)] env = os.environ.copy() if config.qemu_args: