I’m trying to install NixOS on Hetzner clound ARM VM, which uses QEMU. The installation succeeds, but when booting, I get waiting for device /dev/disk/by-partlabel/disk-_dev_sda-main to appear................. and the boot is stuck there.
I’m using disko for partitioning, and I do have the autogenerated hardware configuration. Both are here.
The disko config is imported as imports = [ (import ./disko.nix { inherit lib; disks = [ "/dev/sda" ]; }) ]; , and I also have fileSystems."/persist".neededForBoot = true; (used by impermanence).
Edit: I managed to open an interactive shell to try to debug. There, I can see there’s no /dev/disk/by-partlabel at all. There’s only /dev/disk/by-diskseq, which contains only the loop devices. Also no /dev/sda (even though my boot partition is /dev/sda1, so that was clearly read by the bootloader).
I’ve been trying to debug this, and I found that the driver used to read the disk is virtio-scsi. In the interactive shell I can enter after boot fails, lsmod doesn’t list this driver, and trying to modprobe virtio_scsi says it can’t be found.
However, it is right there in the boot.initrd.availableKernelModules list in the hardware-configuration.nix.
I’m not sure if that’s the right direction to go in…
It looks similar symptom-wise, but it’s not the same. I think (though I could be wrong) my issue is that the driver, virtio-scsi, is missing from the initrd, even though it should be added to boot.initrd.availableKernelModules.