qemu/docs/system
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
..
arm hw/vmapple/vmapple: Add vmapple machine type 2025-03-04 14:45:34 +01:00
devices hw/nvme: Add OCP SMART / Health Information Extended Log Page 2025-02-25 12:27:21 +01:00
i386 docs/nitro-enclave: Clarify Enclave and Firecracker relationship 2025-01-13 17:16:04 +01:00
loongarch roms: Support compile the efi bios for loongarch 2024-09-17 10:26:26 +02:00
openrisc
ppc ppc/pseries: Add Power11 cpu type 2024-11-04 09:12:47 +10:00
riscv hw/riscv: Add Microblaze V generic board 2024-12-20 11:22:47 +10:00
s390x docs/system/s390x/bootdevices: Update loadparm documentation 2024-11-18 10:54:42 +01:00
authz.rst
barrier.rst
bootindex.rst docs/system/bootindex: Make it clear that s390x can also boot from virtio-net 2024-11-18 10:54:42 +01:00
confidential-guest-support.rst
cpu-hotplug.rst docs/system/cpu-hotplug: Update example's socket-id/core-id 2024-10-29 15:04:46 +00:00
cpu-models-mips.rst.inc
cpu-models-x86-abi.csv
cpu-models-x86.rst.inc docs: Add GNR, SRF and CWF CPU models 2025-01-23 11:50:53 +01:00
device-emulation.rst hw/misc/ivshmem-flat: Add ivshmem-flat device 2024-12-31 21:21:27 +01:00
device-url-syntax.rst.inc
gdb.rst
generic-loader.rst
guest-loader.rst
images.rst docs: add a glossary 2025-01-17 10:45:54 +00:00
index.rst Revert "docs: Document composable SR-IOV device" 2024-08-01 04:32:00 -04:00
introduction.rst target/arm: change default pauth algorithm to impdef 2025-01-13 12:35:34 +00:00
invocation.rst
keys.rst
keys.rst.inc
linuxboot.rst
managed-startup.rst
monitor.rst
multi-process.rst
mux-chardev.rst
mux-chardev.rst.inc
pr-manager.rst
qemu-block-drivers.rst
qemu-block-drivers.rst.inc docs/devel: add a codebase section 2025-01-17 10:45:49 +00:00
qemu-cpu-models.rst
qemu-manpage.rst
replay.rst
secrets.rst
security.rst
target-arm.rst hw/vmapple/vmapple: Add vmapple machine type 2025-03-04 14:45:34 +01:00
target-avr.rst
target-i386-desc.rst.inc docs: i386: pc: Avoid mentioning limit of maximum vCPUs 2024-06-08 10:33:38 +02:00
target-i386.rst docs/nitro-enclave: Documentation for nitro-enclave machine type 2024-10-31 18:28:33 +01:00
target-m68k.rst
target-mips.rst
target-openrisc.rst
target-ppc.rst
target-riscv.rst hw/riscv: Add Microblaze V generic board 2024-12-20 11:22:47 +10:00
target-rx.rst
target-s390x.rst
target-sparc.rst
target-sparc64.rst
target-xtensa.rst
targets.rst
tls.rst
virtio-net-failover.rst
vm-templating.rst
vnc-security.rst