Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- check_sudo() {
- if [ "$EUID" -ne 0 ]; then
- echo "This script must be executed as root. Please run with sudo."
- exit 1
- fi
- }
- detach_gpu() {
- echo "Detaching GPU from host..."
- # Stop display manager
- systemctl stop display-manager
- # Unbind VTconsoles
- for F in /sys/class/vtconsole/vtcon*; do
- echo 0 > "$F/bind"
- done
- # Unbind EFI Framebuffer
- for F in /sys/bus/platform/drivers/efi-framebuffer/efi-framebuffer.*; do
- test ! -d "$F" && continue
- echo "$(basename "$F")" > /sys/bus/platform/drivers/efi-framebuffer/unbind
- done
- # Unload AMD kernel module
- lsof | grep amdgpu | awk '{print $2}' | xargs sudo kill -9
- fuser -k /dev/dri/card1
- modprobe -r amdgpu
- echo "Unbinding GPU from current driver..."
- echo "0000:0d:00.0" > /sys/bus/pci/devices/0000:0d:00.0/driver/unbind
- echo "Unbinding GPU audio from current driver..."
- echo "0000:0d:00.1" > /sys/bus/pci/devices/0000:0d:00.1/driver/unbind
- echo "Binding GPU to vfio-pci driver..."
- modprobe vendor-reset
- modprobe vfio-pci
- echo "1002 73ff" > /sys/bus/pci/drivers/vfio-pci/new_id
- echo "Binding GPU audio to vfio-pci driver..."
- echo "1002 ab28" > /sys/bus/pci/drivers/vfio-pci/new_id
- echo "Rescanning PCI bus..."
- echo 1 > /sys/bus/pci/rescan
- }
- check_sudo
- detach_gpu
- echo "Starting the macOS VM..."
- MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"
- ALLOCATED_RAM="8192" # MiB
- CPU_SOCKETS="1"
- CPU_CORES="4"
- CPU_THREADS="8"
- REPO_PATH="."
- OVMF_DIR="."
- GPU_ROM_FILE="./RX6600.rom"
- # shellcheck disable=SC2054
- args=(
- -enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
- -machine q35
- -device qemu-xhci,id=xhci
- -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0
- -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
- -device vfio-pci,host=0d:00.0,multifunction=on,x-vga=on,romfile="$GPU_ROM_FILE"
- -device vfio-pci,host=0d:00.1
- -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
- -drive if=pflash,format=raw,readonly=on,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd"
- -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1920x1080.fd"
- -smbios type=2
- -device ich9-intel-hda -device hda-duplex
- -device ich9-ahci,id=sata
- -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2"
- -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
- -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
- -monitor telnet:127.0.0.1:55555,server,nowait
- -monitor stdio
- -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
- )
- qemu-system-x86_64 "${args[@]}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement