Booting Fedora 21 ARM with QEMU and U-Boot
Running Fedora ARM with qemu is a bit of a pain because you need to pull the kernel and initrd out of the disk image and manually pass them to qemu; you can't just point qemu at the disk image and expect it to boot. The latter is how x86 qemu handles it (via a bundles seabios build).
On physical arm hardware, the bit that typically handles fetching the kernel/initrd from disk is U-Boot. However there are no U-Boot builds shipped with qemu for us to take advantage of.
Well that's changed a bit now. I was talking to Gerd about this at KVM Forum last month, and after some tinkering he got a working U-Boot build for the Versatile Express board that qemu emulates.
Steps to use it:
- Grab a Fedora 21 ARM image (I used the F21 beta 'Minimal' image from here)
- Enable Gerd's upstream firmware repo
u-boot.git-arm(this just installs some binaries in /usr/share, doesn't mess with any host boot config)
To use it with libvirt, you can do:
sudo virt-install --name f21-arm-a9-uboot --ram 512 --arch armv7l --machine vexpress-a9 --os-variant fedora21 --boot kernel=/usr/share/u-boot.git/arm/vexpress-a9/u-boot --disk Fedora-Minimal-armhfp-21_Beta-1-sda.raw
For straight QEMU, you can do:
qemu-system-arm -machine vexpress-a9 -m 512 -nographic -kernel /usr/share/u-boot.git/arm/vexpress-a9/u-boot -sd Fedora-Minimal-armhfp-21_Beta-1-sda.raw