You are not logged in.

#1 2026-03-08 23:16:05

prof_peggy
Member
Registered: 2024-01-24
Posts: 4

qemu-system-aarch64 will not boot guest OS

I'll preface by saying I am not very experienced with qemu, and I'm finding the documentation a little difficult to navigate and understand. I'm currently trying to run a raspberry pi OS (Alpine) in an emulated environment, so I can mess around with software configuration for a personal chat server before I go out and buy anything. For the past couple days though I've been having trouble figuring out how to get qemu-system-aarch64 to boot anything at all, and I'm really not sure why.

Here's the last config I tried to boot qemu with

$ qemu-system-aarch64 -bios /usr/share/edk2/aarch64/QEMU_EFI.fd -M virt -m 2048 -nic user -cdrom alpine/alpine-virt-3.23.3-aarch64.iso -drive file=qemu/random_img.qcow2

(This is alpine-virt and not alpine-rpi, I get the same outcome with alpine-rpi and alpine-standard though)

(random_img is an empty 8G qcow volume)

(I do have edk2-aarch64 installed, I'm specifying a hard path to what I think is the bios firmware ROM, and I'm not actually sure if this is the right way to do it, I've tried using QEMU_CODE.fd or just not specifying and I get the same results)

Instead of just going ahead and booting from the iso, I get dropped into the qemu monitor (presumably, I could boot from this, but I don't know anything about how to use this interface and in principle I should be able to specify everything I need to just boot from the shell). If I try to specify

-boot once=d

I get

qemu-system-aarch64: no function defined to set boot device list for this architecture

which seems to be because specifying boot order is only supported on x86. Likewise,

-boot menu=on

does nothing because it is not supported on the guest architecture.

Using virt-manager goes a little differently, I do get a boot menu with default config for aarch64 virt, but then when I try to boot the guest OS (this is either for alpine-virt or alpine-standard), the boot process hangs, displaying only

Booting: `linux-virt`

(alpine-virt) or

Booting: `linux-lts`

(alpine-standard), although sometimes it doesn't even get that far, and I just see the VM hanging on a cursor. There is no output on the serial console. This is distinct from the raspberry pi iso, where I just get "no bootable media found".

For comparison, using an x86 alpine image, either virt or standard, boots immediately within seconds. I'd expect an aarch64 image to be slower because it's running through hardware emulation, but it hangs completely, I can see the CPU monitor ramp up for a bit and then drop, and there's no change to the output.

For comparison, I tried the Arch Linux ARM raspberry pi tarball, and it behaves like the Alpine iso (no bootable device). Similar with the generic aarch64 tarball. This one might be on me, as all I did was decompress the tarball into a folder and use mkisofs to make a disk image with it, I might be misconfiguring the directory structure or I might be missing something to make it bootable. It's a similar story with the alpine raspberry pi image, I need to get it on a disk image to boot it on the VM, but it's just distributed as a tarball. One way or the other though I'm not able to boot any other aarch64 OS so I'm not confident that the raspberry pi OS is going to be different even if I do get the config right.

I have thus far found things very confusing, and I'm not sure where to even begin diagnosing the issue. I'm wondering if there's something I haven't installed? If possible, I would like to just be able to use virt-manager, but so long as I can get it working I'm fine whether or not I get to use the graphical app. If someone could explain to me a little bit how qemu works and why things might be going wrong, I would be immensely grateful.

Thanks for any help smile

Last edited by prof_peggy (2026-03-08 23:17:46)

Offline

Board footer

Powered by FluxBB