Mkinitcpio new hooks not booting VM

I have spent 2 hours yesterday and 2 today trying to figure out why I can’t boot the new format. My host on the testing branch went through this pacdiff like nothing. But there’s something different with my VM, which also runs Snapper.

On boot with the new hooks it just says:

[  OK  ] Finished Load Kernel Modules
[   ***] A start job is running for /dev/disk/by-uuid/xxxx-xxxxx-xxxx (15min 3s / no limit)

I waited over 15 min. And that UUID doesn’t even exist to my knowledge..

My VM is much more simple than my host!

lsblk -f
NAME   FSTYPE  FSVER            LABEL              UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sr0    iso9660 Joliet Extension MANJARO_XFCE_25010 2025-10-13-14-42-10-00                              
vda                                                                                                    
├─vda1 vfat    FAT32                               5BEB-20F3                             299.1M     0% /boot/efi
├─vda2 btrfs                                       751920f1-5f97-449d-8dd2-10187991b13b  178.4G    26% /home/.snapshots
│                                                                                                      /home
│                                                                                                      /var/cache
│                                                                                                      /.snapshots
│                                                                                                      /var/log
│                                                                                                      /
└─vda3 swap    1                swap               a9ddc99c-63fa-454f-9692-a5d3bb0e961a                [SWAP]

Most of the time was trying different combinations and order of the hooks. (At least 3 dozen, which takes a long time, as you have to chroot in to fix it every time.)

I tried different combos based on @Aragorn’s post: [Unstable Update] November 2025 - #29 by Aragorn

But nothing worked with the systemd hook, and I seem to have to have udev?

/etc/mkinitcpio.conf


This doesn’t work..

HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)

Works

HOOKS=(base udev autodetect microcode modconf kms keyboard consolefont block filesystems fsck)

(Obviously running mkinitcpio -P; update-grub after.)

Basically you are saying the systemd hook does not work with btrfs. Which is strange.
Is there an encryption. Because if it does, you need one more hook!

Not saying that. It works fine with btrfs on my host system. (And no encryption.)

I am stumped. Anyone else using virtio disks with this?

try removing “base” also if you want systemd init (base is optional/redundant). the arch VM i’m running has these hooks

HOOKS=(systemd autodetect microcode modconf kms keyboard block filesystems fsck)

That was actually the first one I tried! (After the pacnew version didn’t work.)

The referring post says base is only needed for the rescue shell, that’s disabled by default.

It was just a resume=xxxxxxxx-xxxx-xxxx-xxxx-xxxx kernel parameter to a UUID that didn’t exist. Nothing VM or Snapper related.

It would boot before with a bad resume parameter. But the systemd hook will not boot your system with one.

You will just get this for at least 15min (maybe eternity).

Fix:

Edit: /etc/default/grub


Find the line:

GRUB_CMDLINE_LINUX_DEFAULT="nosplash resume=xxxx-xx-xxxx dev.log_priority=3 fbdev=1 "

Fix the resume UUID, or take out the resume parameter completely. And of course, run:

sudo update-grub

I feel a little dumb for missing this one. But this may catch other people off guard too. I never use resume (especially in a guest), but the installer put it there. I’ve done a restore from scratch since.

3 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.