New comment by adrian-bl on void-packages repository https://github.com/void-linux/void-packages/issues/37667#issuecomment-1165622712 Comment: @zdykstra > What kernel commandline do you boot your system with? ``` [root@abyss adrian]# cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-5.18.4_1 root=UUID=976f527a-5bf9-442c-be36-f57d98cd86d3 ro loglevel=4 rd.debug ``` @ahesford No, i have `root` specified (see above) > Also, as zdykstra mentioned, you shouldn't put the ZFS dracut module in your initramfs if you aren't booting a > ZFS root. Well, both systems are a pretty vanilla void installation - just with the ZFS package installed (because my /home is on ZFS). I don't think it is expected that i'd have to blocklist ZFS in dracut in such a configuration. > this function should set root= to whatever the value is that you specified and leave it alone. The problem here is that dracut already changed this value before: So my system sets `root=UUID=976...`, let's look at dracut's `parse-block.sh`: ``` case "$root" in block:LABEL=*|LABEL=*) root="${root#block:}" root="$(echo $root | sed 's,/,\\x2f,g')" root="block:/dev/disk/by-label/${root#LABEL=}" rootok=1 ;; block:UUID=*|UUID=*) root="${root#block:}" root="${root#UUID=}" root="$(echo $root | tr "[:upper:]" "[:lower:]")" root="block:/dev/disk/by-uuid/${root#UUID=}" rootok=1 ;; ``` Once this has run, `root` is set to `block:/dev/disk/by-uid/976...` (i verified that this is the case by booting with `rd.debug`) Now later (after parse-block.sh but before the rootfs mount)`zfs-lib.sh` executes ``` root=$(getarg root=) ``` which will reset `root` with the value specified on the kernel command line, undoing whatever `parse-block.sh` did and ultimatively confusing the rest of dracut by having `root` set to a value it doesn't understand/expect.