From: Daan De Meyer Date: Fri, 14 Mar 2025 16:51:57 +0000 (+0100) Subject: Make user provided command line take preference over roothash= X-Git-Tag: v26~318 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a15c7d31d097a11f83cfae664b0b7bb40100fc3;p=thirdparty%2Fmkosi.git Make user provided command line take preference over roothash= If the user provides their own root= or mount.usr= configuration, let's always have that take preference over the partition roothash= or usrhash= This is preparation for adding support for root=dissect in which case we don't need roothash= or usrhash= on the kernel command line. --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 5ee9441a0..0f9cdf060 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -1946,18 +1946,20 @@ def finalize_cmdline( else: cmdline = [] - if roothash: - cmdline += [roothash] - cmdline += context.config.kernel_command_line - if not roothash: - for name in ("root", "mount.usr"): - type_prefix = name.removeprefix("mount.") - if not (root := next((p.uuid for p in partitions if p.type.startswith(type_prefix)), None)): - continue + for name in ("root", "mount.usr"): + type_prefix = name.removeprefix("mount.") + if not (root := next((p.uuid for p in partitions if p.type.startswith(type_prefix)), None)): + continue - cmdline = [f"{name}=PARTUUID={root}" if c == f"{name}=PARTUUID" else c for c in cmdline] + cmdline = [f"{name}=PARTUUID={root}" if c == f"{name}=PARTUUID" else c for c in cmdline] + + if roothash and ( + (roothash.startswith("roothash=") and not any(c.startswith("root=") for c in cmdline)) + or (roothash.startswith("usrhash=") and not any(c.startswith("mount.usr") for c in cmdline)) + ): + cmdline += [roothash] return cmdline