Remove the unsupported option:
qm set <vmid> --delete <option>Common: bios, efidisk0, usb0, hostpci0.
Specify a kernel via --args:
qm set <vmid> --args '-kernel /usr/share/pve-microvm/vmlinuz -append "console=ttyS0 root=/dev/vda rw"'- Ensure
console=ttyS0is in the kernel command line - Ensure
serial0: socketandvga: serial0are in the VM config - Use
qm terminal <vmid>(not noVNC) - Press Enter — the shell may be waiting for input
- Verify the rootfs has
/sbin/init(or useinit=/sbin/microvm-initin append) - Verify root device:
root=/dev/vdamatches the actual root disk - Verify ext4 is compiled into the kernel (not as a module)
- Debug: add
rdinit=/bin/shto kernel append to get a pre-init shell
- Check bridge exists:
brctl show - Check tap device:
ip link show tap<vmid>i0 - Inside guest:
ip link— may need DHCP or static config - Try:
udhcpc -i eth0(Alpine) ordhclient eth0(Debian)
ls -la /dev/kvm
modprobe kvm_intel # or kvm_amdFor nested VMs, enable nested virtualization on the outer hypervisor.
/usr/share/pve-microvm/pve-microvm-patch revert
/usr/share/pve-microvm/pve-microvm-patch applyapt update && apt install skopeo umoci qemu-utilsThe VM must exist first:
qm create <vmid> --machine microvm --memory 256
pve-oci-import --image alpine:3.21 --vmid <vmid>If virtio_net, virtio_console, or virtio_balloon aren't probing,
the kernel may have been built without these drivers. Check:
strings /usr/share/pve-microvm/vmlinuz | grep -c virtio_net
# Should be > 0If zero, rebuild the kernel — the PVE overlay in
kernel/pve-microvm-overlay.config forces these to =y.