loading 'VIRT' kernel in qemu
Jason Harmening
jason.harmening at gmail.com
Tue Dec 27 21:48:22 UTC 2016
Hi everyone,
I'm making some tweaks to the armv6 pmap to mirror some recent i386
changes. I don't have arm hardware readily available, so I thought I'd
give qemu a whirl instead of asking other people to test my changes for
me. Since I need SMP but don't need any specific peripheral hw, the 'VIRT'
kernel seems like my best bet.
I've successfully booted mips[64] under qemu, so naively starting out w/
the same steps I use for mips:
1). build armv6 world and VIRT kernel, install world to temp directory
2). use makefs(8) to build a 4GB (little endian) fs image from temp dir
3). Run qemu:
qemu-system-arm -M virt -kernel <VIRT kernel binary> -hda <fs image>
-nographic -m 1024
...fails immediately:
qemu: fatal: Trying to execute code outside RAM or ROM at 0xc1000100
R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=c1000100
hmm, looks pretty close to KERNVIRTADDR.
Most online docs for qemu-system-arm seem to assume a prebuilt linux kernel
and initrd, the rest are...fragmented-to-nonexistent. I've seen a few
hints that I might need to wrap the kernel image up along w/ u-boot, but
the u-boot images seem to be very SoC-specific.
Any help would be much appreciated, sorry for the n00b question.
Thanks,
Jason
More information about the freebsd-arm
mailing list