OSX-KVM - October 2021 Batch Update #2

This commit is contained in:
Dhiru Kholia 2021-10-26 10:22:43 +05:30 committed by Dhiru Kholia
parent 26ce72f258
commit a9ef589cc2
7 changed files with 114 additions and 17 deletions

View file

@ -40,7 +40,7 @@ args=(
# -device usb-mouse,bus=ehci.0 # -device usb-mouse,bus=ehci.0
# -device nec-usb-xhci,id=xhci # -device nec-usb-xhci,id=xhci
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
-drive if=pflash,format=raw,readonly=true,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd" -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-1024x768.fd" -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.fd"
-smbios type=2 -smbios type=2
-device ich9-intel-hda -device hda-duplex -device ich9-intel-hda -device hda-duplex

View file

@ -7,7 +7,7 @@ Note: All blobs and resources included in this repository are re-derivable (all
instructions are included!). instructions are included!).
:green_heart: Looking for **commercial** support with this stuff? I am [available :green_heart: Looking for **commercial** support with this stuff? I am [available
over email](mailto:dhiru.kholia@gmail.com?subject=[GitHub]%20OSX-KVM%20Commercial%20Support%20Request&body=Hi%20-%20We%20are%20interested%20in%20purchasing%20commercial%20support%20options%20for%20your%20project.) for a chat for **commercial support options only**. over email](mailto:dhiru.kholia@gmail.com?subject=[GitHub]%20OSX-KVM%20Commercial%20Support%20Request&body=Hi%20-%20We%20are%20interested%20in%20purchasing%20commercial%20support%20options%20for%20your%20project.) for a chat for **commercial support options only**. Note: Project sponsors get access to the `Private OSX-KVM` repository, and direct support.
Working with `Proxmox` and macOS? See [Nick's blog for sure](https://www.nicksherlock.com/). Working with `Proxmox` and macOS? See [Nick's blog for sure](https://www.nicksherlock.com/).
@ -78,10 +78,11 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
This step may need to be adapted for your Linux distribution. This step may need to be adapted for your Linux distribution.
* Add user to the `kvm` group (might be needed). * Add user to the `kvm` and `libvirt` groups (might be needed).
``` ```
sudo usermod -aG kvm $(whoami) sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
``` ```
Note: Re-login after executing this command. Note: Re-login after executing this command.
@ -97,6 +98,14 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
cd OSX-KVM cd OSX-KVM
``` ```
Repository updates can be pulled via the following command:
```
git pull --rebase
```
This repository uses rebase based workflows heavily.
* Fetch macOS installer. * Fetch macOS installer.
``` ```
@ -106,7 +115,7 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
You can choose your desired macOS version here. After executing this step, You can choose your desired macOS version here. After executing this step,
you should have the `BaseSystem.dmg` file in the current folder. you should have the `BaseSystem.dmg` file in the current folder.
ATTENTION: Let the `Big Sur` setup sit at the `Country Selection` screen, and ATTENTION: Let `>= Big Sur` setup sit at the `Country Selection` screen, and
other similar places for a while if things are being slow. The initial macOS other similar places for a while if things are being slow. The initial macOS
setup wizard will eventually succeed. setup wizard will eventually succeed.
@ -116,10 +125,11 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
$ ./fetch-macOS-v2.py $ ./fetch-macOS-v2.py
1. High Sierra (10.13) 1. High Sierra (10.13)
2. Mojave (10.14) 2. Mojave (10.14)
3. Catalina (10.15) - RECOMMENDED 3. Catalina (10.15)
4. Latest (Big Sur - 11) 4. Big Sur (11.6) - RECOMMENDED
5. Monterey (latest)
Choose a product to download (1-4): 3 Choose a product to download (1-5):
``` ```
Note: Modern NVIDIA GPUs are supported on HighSierra but not on later Note: Modern NVIDIA GPUs are supported on HighSierra but not on later
@ -157,6 +167,8 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
- You are all set! 🙌 - You are all set! 🙌
- TIP: Using a non-APFS filesystem is recommended.
- (OPTIONAL) Use this macOS VM disk with libvirt (virt-manager / virsh stuff). - (OPTIONAL) Use this macOS VM disk with libvirt (virt-manager / virsh stuff).
- Edit `macOS-libvirt-Catalina.xml` file and change the various file paths (search - Edit `macOS-libvirt-Catalina.xml` file and change the various file paths (search
@ -184,9 +196,6 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
- Launch `virt-manager` and start the `macOS` virtual machine. - Launch `virt-manager` and start the `macOS` virtual machine.
Note: You may need to run `sudo ip link delete tap0` command before
`virt-manager` is able to start the `macOS` VM.
### Setting Expectations Right ### Setting Expectations Right
@ -195,7 +204,7 @@ for a variety of purposes (e.g. software builds, testing, reversing work), and
it may be all you need, along with some tweaks documented in this repository. it may be all you need, along with some tweaks documented in this repository.
However, such a system lacks graphical acceleration, a reliable sound sub-system, However, such a system lacks graphical acceleration, a reliable sound sub-system,
USB (3) functionality and other similar things. To enable these things, take a USB 3 functionality and other similar things. To enable these things, take a
look at our [notes](notes.md). We would like to resume our testing and look at our [notes](notes.md). We would like to resume our testing and
documentation work around this area. Please [reach out to us](mailto:dhiru.kholia@gmail.com?subject=[GitHub]%20OSX-KVM%20Funding%20Support) documentation work around this area. Please [reach out to us](mailto:dhiru.kholia@gmail.com?subject=[GitHub]%20OSX-KVM%20Funding%20Support)
if you are able to fund this area of work. if you are able to fund this area of work.
@ -245,6 +254,12 @@ Gabriel Somlo also has [some thoughts](http://www.contrib.andrew.cmu.edu/~somlo/
You may also find [this 'Announcing Amazon EC2 Mac instances for macOS' article](https://aws.amazon.com/about-aws/whats-new/2020/11/announcing-amazon-ec2-mac-instances-for-macos/ You may also find [this 'Announcing Amazon EC2 Mac instances for macOS' article](https://aws.amazon.com/about-aws/whats-new/2020/11/announcing-amazon-ec2-mac-instances-for-macos/
) interesting. ) interesting.
Note: It is your responsibility to understand, and accept (or not accept) the
Apple EULA.
Note: This is not legal advice, so please make the proper assessments yourself
and discuss with your lawyers if you have any concerns (Text credit: Dortania)
### Motivation ### Motivation

View file

@ -5,3 +5,11 @@
* https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/ * https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/
* https://github.com/foxlet/macOS-Simple-KVM * https://github.com/foxlet/macOS-Simple-KVM
* https://support.apple.com/en-us/HT211683 (How to get old versions of macOS)
* https://github.com/sickcodes/Docker-OSX/issues/341#issuecomment-919913745 (awesome qemu automation)
* https://github.com/ofawx/VmAssetCacheEnable
* https://dortania.github.io/OpenCore-Install-Guide/troubleshooting/extended/post-issues.html

60
boot-linux-for-debugging.sh Executable file
View file

@ -0,0 +1,60 @@
#!/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)
############################################################################
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems!
############################################################################
MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"
# This script works for Big Sur, Catalina, Mojave, and High Sierra. Tested with
# macOS 10.15.6, macOS 10.14.6, and macOS 10.13.6
ALLOCATED_RAM="3072" # MiB
CPU_SOCKETS="1"
CPU_CORES="2"
CPU_THREADS="4"
REPO_PATH="."
OVMF_DIR="."
# This causes high cpu usage on the *host* side
# qemu-system-x86_64 -enable-kvm -m 3072 -cpu Penryn,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,hypervisor=off,vmx=on,kvm=off,$MY_OPTIONS\
# shellcheck disable=SC2054
args=(
-enable-kvm -m "$ALLOCATED_RAM" -cpu host,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
-machine q35
-usb -device usb-kbd -device usb-tablet
-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
# -device nec-usb-xhci,id=xhci
-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-1024x768.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.3,drive=OpenCoreBoot
-device ide-hd,bus=sata.2,drive=InstallMedia
-drive id=InstallMedia,if=none,file="$REPO_PATH/linux.iso",format=raw # archlinux-2021.10.01-x86_64.iso works nicely!
-drive id=MacHDD,if=none,file="$REPO_PATH/linux_hdd.img",format=qcow2
-device ide-hd,bus=sata.4,drive=MacHDD
# -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-netdev user,id=net0 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-monitor stdio
-device VGA,vgamem_mb=128
)
qemu-system-x86_64 "${args[@]}"

View file

@ -41,15 +41,22 @@ args=(
-smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS" -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
-device usb-ehci,id=ehci -device usb-ehci,id=ehci
-vga none -vga none
# 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef)
# Subsystem: Sapphire Technology Limited Nitro+ Radeon RX 570/580/590 [1da2:e366]
# 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
# Subsystem: Sapphire Technology Limited Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1da2:aaf0]
-device vfio-pci,host=01:00.0,multifunction=on -device vfio-pci,host=01:00.0,multifunction=on
-device vfio-pci,host=01:00.1 -device vfio-pci,host=01:00.1
# ASMedia ASM1142 USB 3.1 Host Controller (comment out as needed)
# 03:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242]
-device vfio-pci,host=03:00.0,bus=pcie.0
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
-drive if=pflash,format=raw,readonly,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd" -drive if=pflash,format=raw,readonly,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd"
-drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.fd" -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.fd"
-smbios type=2 -smbios type=2
-device ich9-intel-hda -device hda-duplex -device ich9-intel-hda -device hda-duplex
-device ich9-ahci,id=sata -device ich9-ahci,id=sata
# -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2" -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.2,drive=OpenCoreBoot
-device ide-hd,bus=sata.3,drive=InstallMedia -device ide-hd,bus=sata.3,drive=InstallMedia
-drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw -drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw

View file

@ -456,12 +456,13 @@ def main():
return action_guess(args) return action_guess(args)
# No action specified, so present a download menu instead # No action specified, so present a download menu instead
# https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macrecovery/boards.json
products = [ products = [
{"name": "High Sierra (10.13)", "b": "Mac-7BA5B2D9E42DDD94", "m": "00000000000J80300"}, {"name": "High Sierra (10.13)", "b": "Mac-7BA5B2D9E42DDD94", "m": "00000000000J80300"},
{"name": "Mojave (10.14)", "b": "Mac-7BA5B2DFE22DDD8C", "m": "00000000000KXPG00"}, {"name": "Mojave (10.14)", "b": "Mac-7BA5B2DFE22DDD8C", "m": "00000000000KXPG00"},
{"name": "Catalina (10.15) - RECOMMENDED", "b": "Mac-00BE6ED71E35EB86", "m": "00000000000000000"}, {"name": "Catalina (10.15)", "b": "Mac-00BE6ED71E35EB86", "m": "00000000000000000"},
# {"name": "Latest (Big Sur - 11)", "b": "Mac-E43C1C25D4880AD6", "m": "00000000000000000", "os_type": "latest"} {"name": "Big Sur (11.6) - RECOMMENDED", "b": "Mac-2BD1B31983FE1663", "m": "00000000000000000"},
{"name": "Latest (Big Sur - 11)", "b": "Mac-E43C1C25D4880AD6", "m": "00000000000000000", "os_type": "default"} {"name": "Monterey (latest)", "b": "Mac-7BA5B2D9E42DDD94", "m": "00000000000000000", "os_type": "latest"}
] ]
for index, product in enumerate(products): for index, product in enumerate(products):

View file

@ -158,6 +158,8 @@ AMD RX 570 GPU (May 2021).
``` ```
@kvm soft memlock unlimited @kvm soft memlock unlimited
@kvm hard memlock unlimited @kvm hard memlock unlimited
@libvirt soft memlock unlimited
@libvirt hard memlock unlimited
``` ```
Thanks to `Heiko Sieger` for this solution. Thanks to `Heiko Sieger` for this solution.
@ -168,6 +170,10 @@ AMD RX 570 GPU (May 2021).
* To reuse the keyboard and mouse devices from the host, setup "Automatic * To reuse the keyboard and mouse devices from the host, setup "Automatic
login" in System Preferences in macOS and configure Synergy software. login" in System Preferences in macOS and configure Synergy software.
UPDATE: Project sponsors get access to the `Private OSX-KVM repository`, and
direct support. This private repository has a playbook to automate 95% of this
work in a rugged, consistent manner.
### USB passthrough notes ### USB passthrough notes
@ -209,7 +215,7 @@ These steps will need to be adapted for your particular setup.
$ scripts/vfio-group.sh 13 $ scripts/vfio-group.sh 13
``` ```
* Add `-device vfio-pci,host=03:00.0,bus=pcie.0 \` line to `boot-passthrough.sh`. * Add `-device vfio-pci,host=03:00.0,bus=pcie.0` line to `boot-passthrough.sh`.
* Boot the VM, and devices attached to the ASMedia USB controller should just work under macOS. * Boot the VM, and devices attached to the ASMedia USB controller should just work under macOS.