At this moment QEMU crashes spectacularly. Before launching the kernel, Windows CE bootloader disables the MMU. The first surprise came from the bootloader code. QEMU provides the very useful GDB interface (which can be activated with the "-s -S" switches) for this purpose. So, I decided to single-step the execution and see what happens. However, trying random changes until something works is actually quite a crappy approach. The first idea that comes to mind is of course to take the latest QEMU and see if it fixes anything. Needless to say, I made sure the images are placed into memory at the correct addresses but the code seemed to crash spontaneously and never got past enabling MMU. So I took the QEMU fork supporting MINI2440 and tried to adapt it to running the unmodified Windows Mobile images from Microsoft. So the choice of the platform seemed a no-brainer. Turns out, this is the same SoC that's used in OpenMoko so there is an old fork of QEMU with the support for most of the peripherals. It emulates a real board - MINI2440 based on Samsung S3C2440 SoC which is an ancient ARMv4 CPU. In order to run Windows CE on QEMU (or any OS for that matter) it would be necessary to either develop a Board Support Package with all the drivers for a specific virtual machine or take the opposite approach and emulate some machine for which there already exists a ROM image.įor Windows, there is the emulator developed by Microsoft which is unsurprisingly called just Device Emulator. Now since I've got some free time on my hands, I decided to finally get back to this project and cross it off my TODO list. However, I had to suspend it because I started working on two other challenges - running XNU on Xen (aka Virtu.al LLC) and later doing GSoC (running FreeBSD in ARM emulator). Initially I started working on it two years ago back in 2014 and the plan was to later run it in KVM on Cortex-A15 with Virtualization Extensions. I think it's a lovely OS with a long history and the project seemed like a nice tecnhical challenge. x86 host) $ sudo qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt -nographic -pflash flash0.img -pflash flash1.img -drive if=none,file=vivid-server-cloudimg-arm64-uefi1.One project I had in mind long time ago was getting Windows Mobile to run in QEMU. Additionally, you must use a 15.10 (wily) or newer cloud image for guests. Note: For GICv3 systems, such as Cavium ThunderX, you must use QEMU from Ubuntu 16.04 or newer, and pass "-M virt,gic-version=3". For accelerated VMs (arm64 host w/ KVM support) $ sudo qemu-system-aarch64 -enable-kvm -m 1024 -cpu host -M virt -nographic -pflash flash0.img -pflash flash1.img -drive if=none,file=vivid-server-cloudimg-arm64-uefi1.img,id=hd0 -device virtio-blk-device,drive=hd0 -netdev type=tap,id=net0 -device virtio-net-device,netdev=net0,mac=$randmac.Now you should be able to boot/ into a -arm64-uefi1.img type cloud image. $ dd if=/dev/zero of=flash1.img bs=1M count=64 $ dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=flash0.img conv=notrunc $ dd if=/dev/zero of=flash0.img bs=1M count=64 Two volumes are required, one static one for the UEFI firmware, and another dynamic one to store variables.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |