qemu/contrib
Alexander Graf 59f4d65584 hw/vmapple/vmapple: Add vmapple machine type
Apple defines a new "vmapple" machine type as part of its proprietary
macOS Virtualization.Framework vmm. This machine type is similar to the
virt one, but with subtle differences in base devices, a few special
vmapple device additions and a vastly different boot chain.

This patch reimplements this machine type in QEMU. To use it, you
have to have a readily installed version of macOS for VMApple,
run on macOS with -accel hvf, pass the Virtualization.Framework
boot rom (AVPBooter) in via -bios, pass the aux and root volume as pflash
and pass aux and root volume as virtio drives. In addition, you also
need to find the machine UUID and pass that as -M vmapple,uuid= parameter:

$ qemu-system-aarch64 -accel hvf -M vmapple,uuid=0x1234 -m 4G \
    -bios /System/Library/Frameworks/Virtualization.framework/Versions/A/Resources/AVPBooter.vmapple2.bin
    -drive file=aux,if=pflash,format=raw \
    -drive file=root,if=pflash,format=raw \
    -drive file=aux,if=none,id=aux,format=raw \
    -device vmapple-virtio-blk-pci,variant=aux,drive=aux \
    -drive file=root,if=none,id=root,format=raw \
    -device vmapple-virtio-blk-pci,variant=root,drive=root

With all these in place, you should be able to see macOS booting
successfully.

Known issues:
 - Currently only macOS 12 guests are supported. The boot process for
   13+ will need further investigation and adjustment.

Signed-off-by: Alexander Graf <graf@amazon.com>
Co-authored-by: Phil Dennis-Jordan <phil@philjordan.eu>
Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-ID: <20241223221645.29911-15-phil@philjordan.eu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2025-03-04 14:45:34 +01:00
..
elf2dmp contrib/elf2dmp: Ensure phdrs fit in file 2024-03-11 17:06:27 +00:00
gitdm contrib/gitdm: add Daynix to domain-map 2023-11-08 15:15:23 +00:00
ivshmem-client configure, meson: rename targetos to host_os 2023-12-31 09:11:29 +01:00
ivshmem-server configure, meson: rename targetos to host_os 2023-12-31 09:11:29 +01:00
plugins plugins: fix -Werror=maybe-uninitialized false-positive 2025-02-03 21:16:07 +04:00
systemd tools: build qemu-vmsr-helper 2024-07-22 13:50:21 +02:00
vhost-user-blk contrib/vhost-user-blk: fix overflowing expression 2024-07-21 14:45:56 -04:00
vhost-user-gpu virtio-gpu: Correct virgl_renderer_resource_get_info() error check 2024-02-14 06:09:33 -05:00
vhost-user-input contrib/vhost-user-*: use QEMU bswap helper functions 2024-07-02 09:27:56 -04:00
vhost-user-scsi configure, meson: rename targetos to host_os 2023-12-31 09:11:29 +01:00
vmapple hw/vmapple/vmapple: Add vmapple machine type 2025-03-04 14:45:34 +01:00