Fuselage
Fuselage is a way to run Windows, Linux and Android on the new Apple Silicon Macs; based on QEMU. Currently, it runs under Rosetta 2 to achieve full, x86_64 Windows 10 or Linux. Rosetta 2, however, doesn't support hardware accelerated VMs, and uses TCG, or Tiny Code Generator to emulate all the devices. However, the new M1 Macs are speedy! Once I tried this project on a locked Chromebook with a Core i3 8130u (low power), and Windows with TCG functioned fine for office use! It supports a wide range of devices emulated on the system, such as
- Wifi / Ethernet
- Intel HD Audio
- Clock / time passthrough
- Fast! VirtIO storage (note: this may be bottlenecked by TCG)
- An XHCI USB 3.0 Controller which emulates a seamless USB Mouse / Keyboard
- Virtio VGA / Display
- A Q35 (PCIE) Machine that's open to USB Passthrough, such as passing through webcams and external kb/mice. It can also passthrough a whole, thunderbolt 3 NVMe SSD (GPU Passthrough may not be feasible given the limits of a non-hw-accelerated virtual machine)
- Utilizes all cores to the user's choice
- Customizable Ram (dual stick can be enabled but adds extra-overhead to emulate)
Well, I've been studying ARM64 virtualization on QEMU on a Raspberry Pi 4 for about two months
and have achieved that. Eventually the scope of the project will be to natively run Windows on Arm or Linux virtualized, with hardware acceleration. A TLDR; of the video is that hw-accelerated virtual machines, on ARM, aren't a slouch. I ran it on a Raspberry Pi 4 with a slow SD Card with 4 gigabytes of host ram and 2 gigabytes of guest (windows 10) ram. It still performed fine, to be honest. Gaming on it may not be applicable, because although the host GPU of the new Apple Silicon Macs are fast, ARM devices lack a memory bar, so we can't attach desktop GPUs. However, QXL, a partially accelerated display device is in the works to support arm and so is the Virtio VGA, which should bring graphics acceleration to some part of the VM.
The eventual scope of this project is to cover Arm64 hosts using TCG to run x86_64 Windows, Arm64 hosts using HVF (hw-accelerated) to virtualize Windows on Arm or Linux and lastly a Rosetta 2 host to virtualize a TCG (no hw-acceleration) x86_64 system.
However, it takes quite a bit of time and effort to maintain and actively develop pretty much a virtual machine in an emulator. If you want to help me beta test Fuselage free-of-charge, shoot me an email at legendous@outlook.com. However, if you would like to contribute to the project and support the development you can buy it.
• The x86_64 Fuselage Binary running under Rosetta that virtualizes Linux and Windows. You also get an instruction PDF included in the zip file.