qemu/docs/system/arm
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
..
aspeed.rst docs/system/arm/aspeed: Remove tacoma-bmc from the documentation 2025-01-27 09:38:15 +01:00
b-l475e-iot01a.rst hw/display : Add device DM163 2024-04-30 16:02:43 +01:00
bananapi_m2u.rst hw/arm: Add watchdog timer to Allwinner H40 and Bananapi board 2024-01-26 11:30:47 +00:00
collie.rst docs/system: Briefly document collie board 2020-07-20 11:35:17 +01:00
cpu-features.rst target/arm: change default pauth algorithm to impdef 2025-01-13 12:35:34 +00:00
cubieboard.rst hw/arm: Add SPI to Allwinner A10 2024-10-15 15:16:17 +01:00
digic.rst docs/system: Briefly document canon-a1100 board 2020-07-20 11:35:17 +01:00
emcraft-sf2.rst docs: Add skeletal documentation of the emcraft-sf2 2021-07-18 10:59:47 +01:00
emulation.rst target/arm: Enable FEAT_RPRES for -cpu max 2025-02-11 16:22:07 +00:00
exynos.rst docs/system/arm: Add placeholder doc for exynos4 boards 2024-10-29 15:04:46 +00:00
fby35.rst docs/system/arm/fby35: document execute-in-place property 2024-12-13 15:36:27 +00:00
highbank.rst docs: Add skeletal documentation of highbank and midway 2021-07-18 10:59:47 +01:00
imx8mp-evk.rst hw/arm/fsl-imx8mp: Add USB support 2025-02-25 17:12:18 +00:00
imx25-pdk.rst docs: Add documentation of Arm 'imx25-pdk' board 2021-08-02 11:42:38 +01:00
integratorcp.rst docs/system: Add 'Arm' to the Integrator/CP document title 2020-05-21 20:00:18 +01:00
kzm.rst docs: Add documentation of Arm 'kzm' board 2021-08-02 11:42:38 +01:00
mcimx6ul-evk.rst docs/system/arm: Add placeholder docs for mcimx6ul-evk and mcimx7d-sabre 2024-10-29 15:04:47 +00:00
mcimx7d-sabre.rst docs/system/arm: Add placeholder docs for mcimx6ul-evk and mcimx7d-sabre 2024-10-29 15:04:47 +00:00
mps2.rst docs: Add documentation for the mps3-an536 board 2024-02-15 14:32:39 +00:00
musca.rst docs/system: Document Musca boards 2020-05-21 20:00:18 +01:00
musicpal.rst docs: Be consistent about capitalization of 'Arm' 2020-03-12 11:20:20 +00:00
nrf.rst docs/system: arm: Add nRF boards description 2021-06-24 14:58:48 +01:00
nuvoton.rst docs/system/arm: Add Description for NPCM8XX SoC 2025-02-20 15:22:22 +00:00
orangepi.rst docs/system/arm/orangepi: update links 2024-12-13 15:36:27 +00:00
raspi.rst docs/system: Remove ADC from raspi documentation 2024-05-28 14:20:48 +01:00
realview.rst docs: Be consistent about capitalization of 'Arm' 2020-03-12 11:20:20 +00:00
sabrelite.rst arm: Consistently use "Cortex-Axx", not "Cortex Axx" 2021-06-03 16:43:25 +01:00
sbsa.rst hw/arm/sbsa-ref: Enable CPU cluster on ARM sbsa machine 2024-06-21 16:24:46 +01:00
stellaris.rst docs/system: Split target-arm.rst into sub-documents 2020-03-12 11:20:20 +00:00
stm32.rst docs/system/arm/stm32: List olimex-stm32-h405 in document title 2024-10-29 15:04:46 +00:00
sx1.rst docs: Be consistent about capitalization of 'Arm' 2020-03-12 11:20:20 +00:00
versatile.rst docs/system: document an example booting the versatilepb machine 2021-02-08 10:55:20 +00:00
vexpress.rst hw/arm/vexpress-a9: Remove useless mapping of RAM at address 0 2023-11-06 15:00:29 +00:00
virt.rst hw/arm/virt: Support larger highmem MMIO regions 2025-02-24 15:03:42 +00:00
vmapple.rst hw/vmapple/vmapple: Add vmapple machine type 2025-03-04 14:45:34 +01:00
xenpvh.rst docs: clean-up the xenpvh documentation 2023-12-12 08:02:39 -05:00
xlnx-versal-virt.rst docs/system/arm/xlnx-versal-virt: document ospi-flash property 2024-12-13 15:36:27 +00:00
xlnx-zcu102.rst docs/system/arm: Add placeholder doc for xlnx-zcu102 board 2024-10-29 15:04:46 +00:00
xlnx-zynq.rst docs/system/arm: Add a doc for zynq board 2024-07-01 15:40:54 +01:00