OpenWrt in QEMU/Proxmox: ARM64 as QCOW2 disk not working

I want to create an ARM x64 OpenWRT VM in QEMU/KVM rather than the x86_64 variety (which I seem to be able to get to work much more easily). I want to work with ARM architectures, and I want a persistent filesystem on a virtual disk.

To those ends, I am attempting to use openwrt-armvirt-64-rootfs-ext4.img from OpenWRT 19.07 as the source firmware. I am able to convert the img file to qcow2 successfully with the following command:

  1. qemu-img convert -f raw -O qcow2 openwrt-armvirt-64-rootfs-ext4.img 19.07.qcow2

The resulting file checks out:

  1. qemu-img check 19.07.qcow2

  2. No errors were found on the image.

  3. 143/1664 = 8.59% allocated, 0.00% fragmented, 0.00% compressed clusters

  4. Image end offset: 9699328

  5. file 19.07.qcow2

  6. 19.07.qcow2: QEMU QCOW2 Image (v3), 109051904 bytes

However, the qcow2 virtual disk is not bootable, and I am having trouble finding any resources on how to make it bootable. Has anyone out there done this before successfully? The XML of the qcow2 disk in virt-manager shows (correctly) that it is qcow2; I am not sure what else to do. Any suggestions?

Can't find that rootfs on the page you are linking to. But I think you'll need to setup a bootloader. In x86_64 boot is standardized in bios or efi, but in Arm(64) that is not the case. So somehow you'll have to load&execute a bootloader, which is configured to load&execute the kernel and maybe initramfs and dts file from the virtualized harddisk.
U-boot is the most common bootloader, AFAIK.

2 Likes