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:
parent
88154b5bac
commit
687fa91e14
28 changed files with 996 additions and 73 deletions
1
99-usb-disk.rules
Normal file
1
99-usb-disk.rules
Normal file
|
@ -0,0 +1 @@
|
|||
SUBSYSTEM=="usb", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", MODE="0666"
|
BIN
OVMF_CODE.fd
BIN
OVMF_CODE.fd
Binary file not shown.
Binary file not shown.
BIN
OVMF_VARS.fd
Normal file
BIN
OVMF_VARS.fd
Normal file
Binary file not shown.
BIN
OpenCore/EFI/OC/Drivers/BiosVideo.efi
Normal file
BIN
OpenCore/EFI/OC/Drivers/BiosVideo.efi
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
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.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>
|
||||
|
|
Binary file not shown.
|
@ -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.
Binary file not shown.
|
@ -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>
|
||||
|
|
BIN
backups/OVMF_CODE.fd
Normal file
BIN
backups/OVMF_CODE.fd
Normal file
Binary file not shown.
70
boot-passthrough-windows.sh
Executable file
70
boot-passthrough-windows.sh
Executable 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
boot-windows.sh
Executable file
63
boot-windows.sh
Executable 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[@]}"
|
23
notes.md
23
notes.md
|
@ -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:
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit dcf5032351154034e7c8ef6fd15674b1c71e3d92
|
||||
Subproject commit 29b23910e5ebb6347fd287776fe79508cbbc1bfe
|
Loading…
Reference in a new issue