Booting ZFS on Linux on Asus ROG Zephyrus M16 (2021)
November 19, 2021
•Markus Ressel
Booting Linux with ZFS on Root on my Asus ROG Zephyrus M16 requires a kernel module in initramfs.
Table of Contents:
Booting Linux with ZFS on Root on my Asus ROG Zephyrus M16 requires a kernel module in initramfs.
What happened
I recently bought an Asus ROG Zephyrus M16, which (among other reasons) I specifically bought because of its two fullsize NVMe m.2 slots, which allows me to run a ZFS on Root in a mirror configuration on it. Using a script for this exact configuration based on this guide, which I had created previously, the installation itself was quite easy and straight forward. However, despite the script doing what it was supposed to do without any alarming error messages, ZFS was not able to import the root pool after selecting the boot option in GRUB, giving me the following error:
no pools available to import
Although I needed three days to find the solution, it is quite simple:
Add the vmd
kernel module to the MODULES
variable of your initramfs (/etc/mkinitcpio.conf
):
MODULES=(vmd zfs)
HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)
Why
I didn't do much research after the fact, but from what I can tell the issues is the UEFI configuration of this and other laptops from Asus and also Dell, maybe more. In most UEFIs you can configure the mode of your drives, f.ex. AHCI or RAID. This setting is not available on my laptop. The Intel Volume Management Device (vmd) Driver adds some magic to the kernel, which allows it to speak to the drive.