Markus' Blog

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.

Markus Ressel
Software Engineer, Germany