https://github.com/openzfs/zfs/pull/13589 https://bugs.gentoo.org/854333 From ef9d996669cc2ec596d4e90753b89b32a3f0ce59 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Fri, 24 Jun 2022 11:05:53 -0400 Subject: [PATCH] Dracut module: fix parsing of root= kernel command-line argument Some Dracut modules may read the `root=` kernel command-line argument and rewrite it; in particular, `rootfs-block` installs a command-line hook that to canonicalize arguments that specify block devices. If the `zfs` module is added to an initramfs (which it is, by default, as long as the core ZFS utilities are available) on a system that does not use a ZFS root filesystem, the `zfs` module will overwrite the `root` shell variable with the contents of the kernel command-line in the process of determining if it should control mounting the root. This breaks the initramfs. To solve this problem, only parse the kernel command-line directly if the `root` shell variable is empty; otherwise, rely on the parsing (and possible rewriting) done by other modules. Signed-off-by: Andrew J. Hesford --- a/contrib/dracut/90zfs/zfs-lib.sh.in +++ b/contrib/dracut/90zfs/zfs-lib.sh.in @@ -88,7 +88,7 @@ decode_root_args() { return fi - root=$(getarg root=) + [ -n "$root" ] || root=$(getarg root=) rootfstype=$(getarg rootfstype=) # shellcheck disable=SC2249