OSX-KVM - January 2022 Batch Update #1

Changes:

- Add support for Windows ;)

- Update OVMF bits (https://github.com/retrage/edk2-nightly)

- Update OpenCore to 0.7.6 (via Nick)
This commit is contained in:
Dhiru Kholia
2022-01-06 13:40:19 +05:30
committed by Dhiru Kholia
parent 88154b5bac
commit 687fa91e14
28 changed files with 996 additions and 73 deletions
+1
View File
@@ -0,0 +1 @@
SUBSYSTEM=="usb", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", MODE="0666"
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>19H1323</string>
<string>19H1519</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
@@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.5.6</string>
<string>1.5.8</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
@@ -25,23 +25,23 @@
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1.5.6</string>
<string>1.5.8</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>12B45b</string>
<string>12D4e</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>11.0</string>
<string>11.1</string>
<key>DTSDKBuild</key>
<string>20A2408</string>
<string>20C63</string>
<key>DTSDKName</key>
<string>macosx11.0</string>
<string>macosx11.1</string>
<key>DTXcode</key>
<string>1220</string>
<string>1240</string>
<key>DTXcodeBuild</key>
<string>12B45b</string>
<string>12D4e</string>
<key>IOKitPersonalities</key>
<dict>
<key>as.vit9696.Lilu</key>
Binary file not shown.
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>19H1323</string>
<string>19H1519</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
@@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.2.7</string>
<string>1.2.8</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
@@ -25,23 +25,23 @@
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1.2.7</string>
<string>1.2.8</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>12B45b</string>
<string>12D4e</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>11.0</string>
<string>11.1</string>
<key>DTSDKBuild</key>
<string>20A2408</string>
<string>20C63</string>
<key>DTSDKName</key>
<string>macosx11.0</string>
<string>macosx11.1</string>
<key>DTXcode</key>
<string>1220</string>
<string>1240</string>
<key>DTXcodeBuild</key>
<string>12B45b</string>
<string>12D4e</string>
<key>IOKitPersonalities</key>
<dict>
<key>as.vit9696.VirtualSMC</key>
@@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.5.4</string>
<string>1.5.5</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
@@ -25,7 +25,7 @@
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1.5.4</string>
<string>1.5.5</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+14 -7
View File
@@ -307,6 +307,8 @@
<integer>0</integer>
<key>RebuildAppleMemoryMap</key>
<false/>
<key>ResizeAppleGpuBars</key>
<integer>-1</integer>
<key>SetupVirtualMap</key>
<false/>
<key>SignalAppleOS</key>
@@ -873,7 +875,7 @@
<key>Arguments</key>
<string></string>
<key>Auxiliary</key>
<false/>
<true/>
<key>Comment</key>
<string>Not signed for security reasons</string>
<key>Enabled</key>
@@ -939,8 +941,6 @@
<dict>
<key>DefaultBackgroundColor</key>
<data>AAAAAA==</data>
<key>UIScale</key>
<data>AQ==</data>
</dict>
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
@@ -969,7 +969,6 @@
<dict>
<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
<array>
<string>UIScale</string>
<string>DefaultBackgroundColor</string>
</array>
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
@@ -1134,7 +1133,7 @@
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenRuntime.efi</string>
<string>OpenRuntime.efi</string>
</dict>
<dict>
<key>Arguments</key>
@@ -1144,7 +1143,7 @@
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenCanopy.efi</string>
<string>OpenCanopy.efi</string>
</dict>
<dict>
<key>Arguments</key>
@@ -1164,7 +1163,7 @@
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenPartitionDxe.efi</string>
<string>OpenPartitionDxe.efi</string>
</dict>
<dict>
<key>Arguments</key>
@@ -1312,6 +1311,8 @@
<false/>
<key>ProvideConsoleGop</key>
<true/>
<key>ReconnectGraphicsOnConnect</key>
<false/>
<key>ReconnectOnResChange</key>
<false/>
<key>ReplaceTabWithSpace</key>
@@ -1322,6 +1323,8 @@
<false/>
<key>TextRenderer</key>
<string>BuiltinGraphics</string>
<key>UIScale</key>
<integer>0</integer>
<key>UgaPassThrough</key>
<false/>
</dict>
@@ -1372,6 +1375,8 @@
<false/>
<key>EnableVectorAcceleration</key>
<true/>
<key>EnableVmx</key>
<false/>
<key>ExitBootServicesDelay</key>
<integer>0</integer>
<key>ForceOcWriteFlash</key>
@@ -1386,6 +1391,8 @@
<false/>
<key>RequestBootVarRouting</key>
<true/>
<key>ResizeGpuBars</key>
<integer>-1</integer>
<key>TscSyncTimeout</key>
<integer>0</integer>
<key>UnblockFsConnect</key>
Binary file not shown.
+70
View File
@@ -0,0 +1,70 @@
#!/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 windows_hdd.img 512G
#
# echo 1 > /sys/module/kvm/parameters/ignore_msrs (this is required)
#
# wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.208-1/virtio-win-0.1.208.iso
#
# GPU passthrough is terrible with AMD cards which suffer from the "AMD reset
# bug". NVIDIA cards work very well with Windows VMs.
############################################################################
# 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="2"
REPO_PATH="."
OVMF_DIR="."
# Note: This script assumes that you are doing CPU + GPU passthrough. This
# script will need to be modified for your specific needs!
#
# We recommend doing the initial macOS installation without using passthrough
# stuff. In other words, don't use this script for the initial macOS
# installation.
# shellcheck disable=SC2054
args=(
-enable-kvm -m "$ALLOCATED_RAM" -cpu host,kvm=on,+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
-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,romfile=gpu_original_bios.bin
-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
-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 file="$REPO_PATH/windows.iso",media=cdrom # Win10_21H2_English_x64.iso from Microsoft works great
-drive file="$REPO_PATH/virtio-win-0.1.208.iso",media=cdrom
-drive if=virtio,index=0,file="$REPO_PATH/windows_hdd.img",format=qcow2
# -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000e,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-netdev user,id=net0 -device e1000e,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-monitor stdio
-display none
)
qemu-system-x86_64 "${args[@]}"
+63
View File
@@ -0,0 +1,63 @@
#!/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 windows_hdd.img 512G
#
# echo 1 > /sys/module/kvm/parameters/ignore_msrs (this is required)
#
# wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.208-1/virtio-win-0.1.208.iso
#
# https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md
# https://www.spice-space.org/download/windows/qxl-wddm-dod/qxl-wddm-dod-0.21/
#
# Pass the SSD (USB disk) to the VM:
# (qemu) device_add usb-host,vendorid=0x174c,productid=0x55aa
############################################################################
# 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="8192" # MiB
CPU_SOCKETS="1"
CPU_CORES="16"
CPU_THREADS="16"
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,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
-machine q35
-smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
-device qemu-xhci
-device usb-kbd
-device usb-tablet
-device ich9-intel-hda -device hda-duplex
-boot d
-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 file="$REPO_PATH/windows.iso",media=cdrom # Win10_21H2_English_x64.iso from Microsoft works great
-drive file="$REPO_PATH/virtio-win-0.1.208.iso",media=cdrom
-drive if=virtio,index=0,file="$REPO_PATH/windows_hdd.img",format=qcow2
# -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000e,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-netdev user,id=net0 -device e1000e,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-monitor stdio
-vga qxl
# https://www.kraxel.org/blog/2021/05/qemu-cut-paste/
# https://wiki.gentoo.org/wiki/QEMU/Windows_guest
)
qemu-system-x86_64 "${args[@]}"
+19 -4
View File
@@ -100,10 +100,13 @@ AMD RX 570 GPU (May 2021).
$ sudo update-initramfs -k all -u
```
* In the BIOS setup, set the `Primary Display` to `IGFX` (onboard graphics).
* In the BIOS setup, set the `Primary Display` to `IGFX` (aka CPU graphics / onboard graphics).
* Verify that the IOMMU is enabled, and `vfio-pci` is working as expected.
Verify that the expected devices are using `vfio-pci` as their kernel driver
Tip: Update the BIOS!
* Verify that the IOMMU ("VT-d" for Intel) is enabled, and `vfio-pci` is
working as expected. Verify that the expected devices are using `vfio-pci` as
their kernel driver.
```
$ dmesg | grep -i iommu
@@ -178,11 +181,12 @@ monitor).
Tested GPUs: ZOTAC GeForce GT 710 DDR3 (<= Big Sur), Sapphire Radeon RX 570.
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.
[Link to a list of supported GPUs](https://dortania.github.io/GPU-Buyers-Guide/modern-gpus/amd-gpu.html).
### USB passthrough notes
@@ -228,6 +232,8 @@ These steps will need to be adapted for your particular setup.
* Boot the VM, and devices attached to the ASMedia USB controller should just work under macOS.
[Here is a link to a list of recommended USB PCIe cards](http://blog.greggant.com/posts/2018/05/07/definitive-mac-pro-upgrade-guide.html).
### Synergy Notes
@@ -663,6 +669,15 @@ The `-smp line` should read something like the following:
Check out [this Dortania article on this topic](https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html#using-gensmbios).
### Fix 'guest boots to UEFI shell' problem
Use a fresh copy of the `OVMF_VARS-1024x768.fd` file.
```
git checkout OVMF_VARS-1024x768.fd
```
### Enable rc.local functionality on moden Ubuntu versions
Create `/etc/rc.local` file with the following content, if it doesn't exist: