Skip to content
  • Alexander Graf's avatar
    59f4d655
    hw/vmapple/vmapple: Add vmapple machine type · 59f4d655
    Alexander Graf authored and Philippe Mathieu-Daudé's avatar Philippe Mathieu-Daudé committed
    
    
    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: default avatarAlexander Graf <graf@amazon.com>
    Co-authored-by: default avatarPhil Dennis-Jordan <phil@philjordan.eu>
    Signed-off-by: default avatarPhil Dennis-Jordan <phil@philjordan.eu>
    Reviewed-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Tested-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Message-ID: <20241223221645.29911-15-phil@philjordan.eu>
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
    59f4d655
    hw/vmapple/vmapple: Add vmapple machine type
    Alexander Graf authored and Philippe Mathieu-Daudé's avatar Philippe Mathieu-Daudé committed
    
    
    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: default avatarAlexander Graf <graf@amazon.com>
    Co-authored-by: default avatarPhil Dennis-Jordan <phil@philjordan.eu>
    Signed-off-by: default avatarPhil Dennis-Jordan <phil@philjordan.eu>
    Reviewed-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Tested-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Message-ID: <20241223221645.29911-15-phil@philjordan.eu>
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
Loading