some QEMU success in running armv7
- Reply: Mario Marietto : "Re: some QEMU success in running armv7"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 19 May 2023 02:49:03 UTC
Just f.y.i. - here's the steps I was able to deduce today to get FreeBSD armv7 running under qemu... just in case someone goes looking for this... (I was doing this on a FreeBSD 12.3-RELEASE x86_64 system.) 1. Retrieve the armv7 image from: fetch https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img.xz and unzip it. This is an actual hard-drive image of a working system. 2. Assuming the qemu port has been installed - this command starts that system qemu-system-arm -M virt -m 512m -nographic \ -bios edk2-arm-code.fd \ -hda FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img the existing terminal will be the console. There is no networking. There root user's password is 'root'. Unfortunately this doesn't provide networking in the guest. This compilation of QEMU also doesn't support the "-netdev user" mode of networking so I can't take advantage of that. (The FreeBSD 12.3 host is using QEMU emulator version 7.2.0 - from just the pkg install.) However, I found that using this option on qemu: -nic tap,ifname=tap7,script=no,downscript=no got it to use the tap interface on the host to emulate the virtio device to the guest. I also found this discussion regarding alignment issues in the virtio driver in armv7: https://forums.freebsd.org/threads/kernel-panic-on-armv7-with-qemu.89016/#post-610281 that resulted in PR 271288. Apparently it's because of newer versions of QEMU doing a better job at reporting unaligned memory accesses in the guest for the armv7 "ldm" instruction. When I use the tap interface, I did get the exact panic mentioned in the forum and the PR. I did find that specifying the rtl8139 device worked around the panic with the QEMU option: -nic tap,ifname=tap7,script=no,downscript=no,model=rtl8139 by the way - tap7 happens to be a tap device I'd already configured on the host FreeBSD 12.3 system - if you're doing this yourself, it will likely need to be a different tap device, see this write-up for info about how to configure a tap + bridge on your FreeBSD host: http://bsdwiki.reedmedia.net/wiki/networking_qemu_virtual_bsd_systems.html So - it seems a newer version of the armv7 kernel with the patch applied will fix the virtio driver problem, until then, model=rtl8139 works around it and I have networking and everything! - Dave R. - -- rivers@dignus.com Work: (919) 676-0847 Get your mainframe programming tools at http://www.dignus.com