2021-02-13 18:35:20 +05:30
#!/usr/bin/env bash
# Special thanks to:
# https://github.com/Leoyzen/KVM-Opencore
# https://github.com/thenickdude/KVM-Opencore/
# https://github.com/qemu/qemu/blob/master/docs/usb2.txt
#
# qemu-img create -f qcow2 mac_hdd_ng.img 128G
#
# echo 1 > /sys/module/kvm/parameters/ignore_msrs (this is required)
2023-12-12 12:16:41 +05:30
###############################################################################
2021-02-13 18:35:20 +05:30
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems!
2023-12-12 12:16:41 +05:30
###############################################################################
#
# Change `Penryn` to `Haswell-noTSX` in OpenCore-Boot.sh file for macOS Sonoma!
#
###############################################################################
2021-02-13 18:35:20 +05:30
2021-06-12 11:32:41 +05:30
MY_OPTIONS = "+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"
2021-02-13 18:35:20 +05:30
# This script works for Big Sur, Catalina, Mojave, and High Sierra. Tested with
2021-11-29 21:21:36 +05:30
# macOS 10.15.6, macOS 10.14.6, and macOS 10.13.6.
2021-02-13 18:35:20 +05:30
2022-04-28 12:22:01 +05:30
ALLOCATED_RAM = "4096" # MiB
2021-02-13 18:35:20 +05:30
CPU_SOCKETS = "1"
CPU_CORES = "2"
CPU_THREADS = "4"
REPO_PATH = "."
OVMF_DIR = "."
# shellcheck disable=SC2054
args = (
2026-01-26 10:40:41 +05:30
# -enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
-enable-kvm -m " $ALLOCATED_RAM " -cpu Skylake-Client,-hle,-rtm,kvm= on,vendor= GenuineIntel,+invtsc,vmware-cpuid-freq= on," $MY_OPTIONS " # ATTENTION: Enable this line for macOS Sequoia and Tahoe
2021-02-13 18:35:20 +05:30
-machine q35
2024-04-13 07:48:56 -04:00
-device qemu-xhci,id= xhci
-device usb-kbd,bus= xhci.0 -device usb-tablet,bus= xhci.0
2021-02-13 18:35:20 +05:30
-smp " $CPU_THREADS " ,cores= " $CPU_CORES " ,sockets= " $CPU_SOCKETS "
-device usb-ehci,id= ehci
# -device usb-kbd,bus=ehci.0
# -device usb-mouse,bus=ehci.0
2024-04-13 07:48:56 -04:00
# -device nec-usb-xhci,id=xhci
# -global nec-usb-xhci.msi=off
2023-04-08 06:50:53 +05:30
# -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
2022-01-23 12:34:13 +05:30
# -device usb-host,vendorid=0x8086,productid=0x0808 # 2 USD USB Sound Card
# -device usb-host,vendorid=0x1b3f,productid=0x2008 # Another 2 USD USB Sound Card
2021-02-13 18:35:20 +05:30
-device isa-applesmc,osk= "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
2026-01-26 10:40:41 +05:30
-drive if = pflash,format= raw,readonly= on,file= " $REPO_PATH / $OVMF_DIR /OVMF_CODE_4M.fd "
2023-04-08 06:50:53 +05:30
-drive if = pflash,format= raw,file= " $REPO_PATH / $OVMF_DIR /OVMF_VARS-1920x1080.fd "
2021-02-13 18:35:20 +05:30
-smbios type = 2
-device ich9-intel-hda -device hda-duplex
-device ich9-ahci,id= sata
2021-10-22 02:03:36 +02:00
-drive id = OpenCoreBoot,if= none,snapshot= on,format= qcow2,file= " $REPO_PATH /OpenCore/OpenCore.qcow2 "
2021-02-13 18:35:20 +05:30
-device ide-hd,bus= sata.2,drive= OpenCoreBoot
-device ide-hd,bus= sata.3,drive= InstallMedia
-drive id = InstallMedia,if= none,file= " $REPO_PATH /BaseSystem.img " ,format= raw
-drive id = MacHDD,if= none,file= " $REPO_PATH /mac_hdd_ng.img " ,format= qcow2
-device ide-hd,bus= sata.4,drive= MacHDD
2021-11-29 21:21:36 +05:30
# -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
2023-04-08 06:50:53 +05:30
-netdev user,id= net0,hostfwd= tcp::2222-:22 -device virtio-net-pci,netdev= net0,id= net0,mac= 52:54:00:c9:18:27
2022-04-28 12:22:01 +05:30
# -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27 # Note: Use this line for High Sierra
2021-02-13 18:35:20 +05:30
-monitor stdio
2023-04-08 06:50:53 +05:30
-device vmware-svga
2024-04-13 13:36:06 +02:00
# -spice port=5900,addr=127.0.0.1,disable-ticketing=on
2021-02-13 18:35:20 +05:30
)
qemu-system-x86_64 " ${ args [@] } "