2021-02-13 07:05:20 -06:00
<?xml version='1.0' encoding='UTF-8'?>
<domain type= 'kvm' xmlns:qemu= 'http://libvirt.org/schemas/domain/qemu/1.0' >
<!--
macOS libvirt XML configuration.
Run "virt-xml-validate macOS-libvirt-Catalina.xml" to validate this file.
To install this file, you may place it at ~/.config/libvirt/qemu/
and run: virsh define macOS-libvirt.xml.
This configuration has been tested in Ubuntu 20.04 with stock QEMU-KVM.
Move/rename images and loader/nvmram files and paths as you wish.
!!! Don't forget to replace CHANGEME with your values !!!
Adjust memory and currentMemory to 3145728 if you want only 3 GiB.
Consider removing some cpu features if your hardware lacks support.
Replace spice with vnc if you prefer it.
2021-06-12 01:02:41 -05:00
Current network configuration is a local bridge (192.168.12x.x).
2021-02-13 07:05:20 -06:00
Change it to if you prefer a public bridge instead:
Change interface to <interface type= 'user' >
and remove the <source bridge= 'virbr0' />
Or use virt-manager to edit this line instead of virsh edit.
Note: Default configuration caused severe clock problems
under Fedora 27 w/ i7-5820K. This is because Darwin uses
tsc (time since last tick) for time, and for me did not
fall back to rtc in the event of a clock mismatch with
libvirt's default time source. Therefore we must explicitly
give the clock a tsc timer for kvm to pass to the guest.
See comments on the <kvm > and <clock > attributes.
-->
<name > macOS</name>
<uuid > 2aca0dd6-cec9-4717-9ab2-0b7b13d111c3</uuid>
<title > macOS</title>
<memory unit= 'KiB' > 4194304</memory>
<currentMemory unit= 'KiB' > 4194304</currentMemory>
<vcpu placement= 'static' > 4</vcpu>
<os >
<type arch= 'x86_64' machine= 'pc-q35-4.2' > hvm</type>
<!-- We don't need patched OVMF anymore when using latest OpenCore, stock one is okay -->
<loader readonly= 'yes' type= 'pflash' > /home/CHANGEME/OSX-KVM/OVMF_CODE.fd</loader>
2023-04-07 20:20:53 -05:00
<nvram > /home/CHANGEME/OSX-KVM/OVMF_VARS.fd</nvram>
2021-02-13 07:05:20 -06:00
</os>
<features >
<acpi />
<apic />
</features>
<clock offset= 'utc' >
<timer name= 'rtc' tickpolicy= 'catchup' />
<timer name= 'pit' tickpolicy= 'delay' />
<timer name= 'hpet' present= 'no' />
</clock>
<on_poweroff > destroy</on_poweroff>
<on_reboot > restart</on_reboot>
<on_crash > restart</on_crash>
<devices >
<emulator > /usr/bin/qemu-system-x86_64</emulator>
<disk type= 'file' device= 'disk' >
<driver name= 'qemu' type= 'qcow2' cache= 'writeback' io= 'threads' />
2021-10-21 19:03:36 -05:00
<source file= '/home/CHANGEME/OSX-KVM/OpenCore/OpenCore.qcow2' />
2021-02-13 07:05:20 -06:00
<target dev= 'sda' bus= 'sata' />
<boot order= '2' />
<address type= 'drive' controller= '0' bus= '0' target= '0' unit= '0' />
</disk>
<disk type= 'file' device= 'disk' >
<driver name= 'qemu' type= 'qcow2' cache= 'writeback' io= 'threads' />
<source file= '/home/CHANGEME/OSX-KVM/mac_hdd_ng.img' />
<target dev= 'sdb' bus= 'sata' />
<boot order= '1' />
<address type= 'drive' controller= '0' bus= '0' target= '0' unit= '1' />
</disk>
<disk type= "file" device= "disk" >
<driver name= "qemu" type= "raw" cache= "writeback" />
<source file= "/home/CHANGEME/OSX-KVM/BaseSystem.img" />
<target dev= "sdc" bus= "sata" />
<boot order= "3" />
<address type= "drive" controller= "0" bus= "0" target= "0" unit= "2" />
</disk>
<controller type= 'sata' index= '0' >
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x1f' function= '0x2' />
</controller>
<controller type= 'pci' index= '0' model= 'pcie-root' />
<controller type= 'pci' index= '1' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '1' port= '0x8' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x0' multifunction= 'on' />
</controller>
<controller type= 'pci' index= '2' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '2' port= '0x9' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x1' />
</controller>
<controller type= 'pci' index= '3' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '3' port= '0xa' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x2' />
</controller>
<controller type= 'pci' index= '4' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '4' port= '0xb' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x3' />
</controller>
<controller type= 'pci' index= '5' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '5' port= '0xc' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x4' />
</controller>
<controller type= 'pci' index= '6' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '6' port= '0xd' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x5' />
</controller>
<controller type= 'pci' index= '7' model= 'pcie-root-port' >
<model name= 'pcie-root-port' />
<target chassis= '7' port= '0xe' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x01' function= '0x6' />
</controller>
<controller type= 'virtio-serial' index= '0' >
<address type= 'pci' domain= '0x0000' bus= '0x02' slot= '0x00' function= '0x0' />
</controller>
<controller type= 'usb' index= '0' model= 'ich9-ehci1' >
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x07' function= '0x7' />
</controller>
<controller type= 'usb' index= '0' model= 'ich9-uhci1' >
<master startport= '0' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x07' function= '0x0' multifunction= 'on' />
</controller>
<controller type= 'usb' index= '0' model= 'ich9-uhci2' >
<master startport= '2' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x07' function= '0x1' />
</controller>
<controller type= 'usb' index= '0' model= 'ich9-uhci3' >
<master startport= '4' />
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x07' function= '0x2' />
</controller>
<!-- Make sure you put your nic in bus 0x0 and slot 0x0y(y is numeric), this will make nic built - in and apple - store work -->
2021-10-21 19:03:36 -05:00
<interface type= "bridge" >
<mac address= "52:54:00:e6:85:40" />
<source bridge= "virbr0" />
<model type= "vmxnet3" />
<address type= "pci" domain= "0x0000" bus= "0x00" slot= "0x00" function= "0x0" />
2021-02-13 07:05:20 -06:00
</interface>
<serial type= 'pty' >
<target type= 'isa-serial' port= '0' >
<model name= 'isa-serial' />
</target>
</serial>
<console type= 'pty' >
<target type= 'serial' port= '0' />
</console>
<channel type= 'unix' >
<target type= 'virtio' name= 'org.qemu.guest_agent.0' />
<address type= 'virtio-serial' controller= '0' bus= '0' port= '1' />
</channel>
<graphics type= 'spice' autoport= 'yes' >
<listen type= 'address' />
</graphics>
<video >
2023-12-12 00:46:41 -06:00
<model type= "virtio" heads= "1" primary= "yes" />
2021-02-13 07:05:20 -06:00
</video>
<!-- If you wanna passthrough GPU, make sure the gfx and audio are in the same bus (like 0x01) but different function (0x00 and 0x01) -->
<!-- <hostdev mode='subsystem' type='pci' managed='yes'>
<driver name= 'vfio' />
<source >
<address domain= '0x0000' bus= '0x2d' slot= '0x00' function= '0x0' />
</source>
<rom file= '/mnt/disks/backups/BIOS/RX580/Ellesmere.rom' />
<address type= 'pci' domain= '0x0000' bus= '0x01' slot= '0x00' function= '0x0' multifunction= 'on' />
</hostdev>
<hostdev mode= 'subsystem' type= 'pci' managed= 'yes' >
<driver name= 'vfio' />
<source >
<address domain= '0x0000' bus= '0x2d' slot= '0x00' function= '0x1' />
</source>
<address type= 'pci' domain= '0x0000' bus= '0x01' slot= '0x00' function= '0x1' />
</hostdev> -->
<!-- If you wanna passthrough onboard audio(like 30:00.4), make sure you put it in bus 0x00 and slot 0x0y(y is numeric), otherwise AppleALC won't recognized it -->
<!-- <hostdev mode='subsystem' type='pci' managed='yes'>
<driver name= 'vfio' />
<source >
<address domain= '0x0000' bus= '0x30' slot= '0x00' function= '0x4' />
</source>
<address type= 'pci' domain= '0x0000' bus= '0x00' slot= '0x08' function= '0x0' />
</hostdev> -->
<memballoon model= 'none' />
</devices>
<!-- Note: Enable the next line when SELinux is enabled -->
<!-- seclabel type='dynamic' model='selinux' relabel='yes'/> -->
<qemu:commandline >
<qemu:arg value= '-device' />
<qemu:arg value= 'isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc' />
<qemu:arg value= '-smbios' />
<qemu:arg value= 'type=2' />
2022-04-28 01:52:01 -05:00
<qemu:arg value= '-usb' />
2021-02-13 07:05:20 -06:00
<qemu:arg value= '-device' />
<qemu:arg value= 'usb-tablet' />
<qemu:arg value= '-device' />
<qemu:arg value= 'usb-kbd' />
<qemu:arg value= '-cpu' />
2021-06-12 01:02:41 -05:00
<qemu:arg value= 'Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check' />
2021-02-13 07:05:20 -06:00
<!-- <qemu:arg value='Penryn,vendor=GenuineIntel,+hypervisor,+invtsc,kvm=on,+fma,+avx,+avx2,+aes,+ssse3,+sse4_2,+popcnt,+sse4a,+bmi1,+bmi2'/> -->
<!-- If you wanna use cpu host - passthrough mode, uncomments below -->
<!-- <qemu:arg value='host,vendor=GenuineIntel,+hypervisor,+invtsc,kvm=on,+fma,+avx,+avx2,+aes,+ssse3,+sse4_2,+popcnt,+sse4a,+bmi1,+bmi2'/> -->
<!-- If you wanna use cpu emulating mode like Skylake - Server, uncomments below -->
<!-- <qemu:arg value='Skylake - Server,vendor=GenuineIntel,+hypervisor,+invtsc,kvm=on,+fma,+avx,+avx2,+aes,+ssse3,+sse4_2,+popcnt,+sse4a,+bmi1,+bmi2'/> -->
</qemu:commandline>
</domain>