Skip to content

Commit

Permalink
Batch Update 1 - September 2023
Browse files Browse the repository at this point in the history
Changes:

- Update to OpenCore 0.9.1

- Switch around the emulated video device (required for Ventura)

- Change default resolution to 1920x1080

- Include ventura in shortname CLI help

- Add notes on 'bridged networking'

- Better networking documentation (thomaspaulb)

- Support for offline installations (kwadwokyeremeh)
  • Loading branch information
kholia committed Sep 10, 2023
1 parent 1184c09 commit ecc5524
Show file tree
Hide file tree
Showing 69 changed files with 326 additions and 167 deletions.
Binary file modified OVMF_VARS-1920x1080.fd
Binary file not shown.
7 changes: 4 additions & 3 deletions OpenCore-Boot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ args=(
# -device usb-mouse,bus=ehci.0
-device nec-usb-xhci,id=xhci
-global nec-usb-xhci.msi=off
# -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
# -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
-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"
-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
Expand All @@ -52,10 +53,10 @@ args=(
-drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
-device ide-hd,bus=sata.4,drive=MacHDD
# -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
-netdev user,id=net0 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
# -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27 # Note: Use this line for High Sierra
-monitor stdio
-device VGA,vgamem_mb=128
-device vmware-svga
)

qemu-system-x86_64 "${args[@]}"
1 change: 1 addition & 0 deletions OpenCore/EFI/BOOT/.contentFlavour
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
OpenCore
1 change: 1 addition & 0 deletions OpenCore/EFI/BOOT/.contentVisibility
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Disabled
Binary file modified OpenCore/EFI/BOOT/BOOTx64.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/ArpDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/AudioDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/BiosVideo.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/CrScreenshotDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Dhcp4Dxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/DnsDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/DpcDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Ext4Dxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/HiiDatabase.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/HttpBootDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/HttpDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/HttpUtilitiesDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Ip4Dxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/MnpDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/NvmExpressDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenCanopy.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenHfsPlus.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenLinuxBoot.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenNtfsDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenPartitionDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenRuntime.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenUsbKbDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/OpenVariableRuntimeDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Ps2KeyboardDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Ps2MouseDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/ResetNvramEntry.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/SnpDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/TcpDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/ToggleSipEntry.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/Udp4Dxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/UsbMouseDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Drivers/XhciDxe.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/OpenCore.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/BootKicker.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/ChipTune.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/CleanNvram.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/ControlMsrE2.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/CsrUtil.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/GopStop.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/KeyTester.efi
Binary file not shown.
Binary file added OpenCore/EFI/OC/Tools/ListPartitions.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/MmapDump.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/OpenControl.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/OpenShell.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/ResetSystem.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/RtcRw.efi
Binary file not shown.
Binary file modified OpenCore/EFI/OC/Tools/TpmInfo.efi
Binary file not shown.
Binary file modified OpenCore/OpenCore.qcow2
Binary file not shown.
91 changes: 44 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ instructions are included!).
: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**. Note: Project sponsors get access to the `Private OSX-KVM` repository, and direct support.

Struggling with `Content Caching` stuff? We can help.

Working with `Proxmox` and macOS? See [Nick's blog for sure](https://www.nicksherlock.com/).

Yes, we support offline macOS installations now 🎉
Yes, we support offline macOS installations now - see [this document](./run_offline.md) 🎉


### Contributing Back
Expand Down Expand Up @@ -51,43 +53,22 @@ help (pull-requests!) with the following work items:

* A CPU with AVX2 support is required for >= macOS Mojave

Note: Older AMD CPU(s) are known to be problematic. AMD FX-8350 works but
Phenom II X3 720 does not. Ryzen processors work just fine.
Note: Older AMD CPU(s) are known to be problematic but modern AMD Ryzen
processors work just fine.


### Installation Preparation

* KVM may need the following tweak on the host machine to work.

```
echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs
```

To make this change permanent, you may use the following command.

```
sudo cp kvm.conf /etc/modprobe.d/kvm.conf # for intel boxes only, after cloning the repo below
```

* Install QEMU and other packages.

```
sudo apt-get install qemu uml-utilities virt-manager git \
wget libguestfs-tools p7zip-full make dmg2img -y
wget libguestfs-tools p7zip-full make dmg2img tesseract-ocr \
tesseract-ocr-eng genisoimage -y
```

This step may need to be adapted for your Linux distribution.

* Add user to the `kvm` and `libvirt` groups (might be needed).

```
sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)
```

Note: Re-login after executing this command.

* Clone this repository on your QEMU system. Files from this repository are
used in the following steps.

Expand All @@ -107,6 +88,30 @@ Phenom II X3 720 does not. Ryzen processors work just fine.

This repository uses rebase based workflows heavily.

* KVM may need the following tweak on the host machine to work.

```
sudo modprobe kvm; echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs
```

To make this change permanent, you may use the following command.

```
sudo cp kvm.conf /etc/modprobe.d/kvm.conf # for intel boxes only
sudo cp kvm_amd.conf /etc/modprobe.d/kvm.conf # for amd boxes only
```

* Add user to the `kvm` and `libvirt` groups (might be needed).

```
sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)
```

Note: Re-login after executing this command.

* Fetch macOS installer.

```
Expand All @@ -127,9 +132,9 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
1. High Sierra (10.13)
2. Mojave (10.14)
3. Catalina (10.15)
4. Big Sur (11.7) - RECOMMENDED
4. Big Sur (11.7)
5. Monterey (12.6)
6. Ventura (13)
6. Ventura (13) - RECOMMENDED
Choose a product to download (1-6): 4
```
Expand Down Expand Up @@ -165,7 +170,7 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
./OpenCore-Boot.sh
```

Note: This same script works for Big Sur, Catalina, Mojave, and High Sierra.
Note: This same script works for all recent macOS versions.

- Use the `Disk Utility` tool within the macOS installer to partition, and
format the virtual disk attached to the macOS VM.
Expand Down Expand Up @@ -202,6 +207,15 @@ Phenom II X3 720 does not. Ryzen processors work just fine.
- Launch `virt-manager` and start the `macOS` virtual machine.


### Headless macOS

- Use the provided [boot-macOS-headless.sh](./boot-macOS-headless.sh) script.

```
./boot-macOS-headless.sh
```


### Setting Expectations Right

Nice job on setting up a `Virtual Hackintosh` system! Such a system can be used
Expand All @@ -220,24 +234,7 @@ work, patience, and a bit of luck (perhaps?).

### Post-Installation

* See [networking notes](networking-qemu-kvm-howto.txt) to setup guest networking.

I have the following commands present in `/etc/rc.local`.

```
#!/usr/bin/env bash
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up promisc on
sudo ip link set dev virbr0 up
sudo ip link set dev tap0 master virbr0
```

This has been enough for me so far.

Note: You may need to enable the `rc.local` functionality manually on modern
Ubuntu versions. Check out the [notes](notes.md) included in this repository
for details.
* See [networking notes](networking-qemu-kvm-howto.txt) on how to setup networking in your VM, outbound and also inbound for remote access to your VM via SSH, VNC, etc.

* To passthrough GPUs and other devices, see [these notes](notes.md#gpu-passthrough-notes).

Expand Down
34 changes: 17 additions & 17 deletions boot-macOS-headless.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,49 +23,49 @@
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems!
############################################################################

# Changelog:
# - Add support for 'savevm'
# - Fix cpuid related warning on EPYC
# - Fix 'savevm' support

MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"

# This script works for Catalina as well as Mojave. Tested with macOS 10.14.6 and macOS 10.15.6.
# 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
ALLOCATED_RAM="7192" # MiB
CPU_SOCKETS="1"
CPU_CORES="2"
CPU_THREADS="4"

REPO_PATH="."
OVMF_DIR="."

# for snapshots
export TMPDIR=$PWD

# shellcheck disable=SC2054
args=(
-enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,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
-global nec-usb-xhci.msi=off
-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
# -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
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
-drive if=pflash,format=raw,snapshot=off,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd"
-drive if=pflash,format=raw,snapshot=on,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.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-1920x1080.fd"
-smbios type=2
-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,snapshot=on,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
-drive id=MacHDD,if=none,snapshot=off,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
-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 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-netdev user,id=net0,hostfwd=tcp::2222-:22 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-monitor stdio
-vga vmware
-device vmware-svga
-display none
-vnc 0.0.0.0:1,password -k en-us
-vnc 0.0.0.0:1,password=on -k en-us
)

qemu-system-x86_64 "${args[@]}"
2 changes: 1 addition & 1 deletion bridge.conf
Original file line number Diff line number Diff line change
@@ -1 +1 @@
allow virbr0
allow br0
76 changes: 76 additions & 0 deletions customized/boot-macOS-headless.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/usr/bin/env bash

# https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/connecting-to-mac/

# 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 | sudo tee -a /sys/module/kvm/parameters/ignore_msrs # this is required
#
# Usage:
#
# $ boot-macOS-headless.sh
#
# (qemu) change vnc password
# Password: ********
#
# Note: Using RealVNC client, connect to `<localhost:5901>`.
# E.g. `vncviewer localhost:5901`
#
# If using Nested-KVM (running macOS guest under a Ubuntu guest), use socat
# and/or bridged network to exposed the macOS ports.

############################################################################
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems!
############################################################################

MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+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="4096" # MiB
CPU_SOCKETS="1"
CPU_CORES="2"
CPU_THREADS="4"

REPO_PATH="."
OVMF_DIR="."

# shellcheck disable=SC2054
args=(
-enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,kvm=on,vendor=GenuineIntel,vmware-cpuid-freq=on,"$MY_OPTIONS"
-machine q35
-usb -device usb-kbd -device usb-tablet
-smp 2
-device usb-ehci,id=ehci
# -device usb-kbd,bus=ehci.0
# -device usb-mouse,bus=ehci.0
-device nec-usb-xhci,id=xhci
-global nec-usb-xhci.msi=off
# -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
-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-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
# Note: Shift the host's ssh port some somewhere else!
-netdev user,id=net0,hostfwd=tcp::22-:22 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-monitor stdio
-device vmware-svga
-display none
-vnc 0.0.0.0:1,password=on -k en-us
)

qemu-system-x86_64 "${args[@]}"
2 changes: 1 addition & 1 deletion fetch-macOS-v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ def main():
help='use specified os type, defaults to default ' + MLB_ZERO)
parser.add_argument('-diag', '--diagnostics', action='store_true', help='download diagnostics image')
parser.add_argument('-s', '--shortname', type=str, default='',
help='available options: high-sierra, mojave, catalina, big-sur, monterey')
help='available options: high-sierra, mojave, catalina, big-sur, monterey, ventura')
parser.add_argument('-v', '--verbose', action='store_true', help='print debug information')
parser.add_argument('-db', '--board-db', type=str, default=os.path.join(SELF_DIR, 'boards.json'),
help='use custom board list for checking, defaults to boards.json')
Expand Down
2 changes: 2 additions & 0 deletions kvm_amd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
options kvm_amd nested=1
options kvm ignore_msrs=1 report_ignored_msrs=0
4 changes: 2 additions & 2 deletions macOS-libvirt-Catalina.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
<type arch='x86_64' machine='pc-q35-4.2'>hvm</type>
<!-- We don't need patched OVMF anymore when using latest OpenCore, stock one is okay -->
<loader readonly='yes' type='pflash'>/home/CHANGEME/OSX-KVM/OVMF_CODE.fd</loader>
<nvram>/home/CHANGEME/OSX-KVM/OVMF_VARS-1024x768.fd</nvram>
<nvram>/home/CHANGEME/OSX-KVM/OVMF_VARS.fd</nvram>
</os>
<features>
<acpi/>
Expand Down Expand Up @@ -161,7 +161,7 @@
<listen type='address'/>
</graphics>
<video>
<model type="vga" vram="65536" heads="1" primary="yes"/>
<model type="vmvga" vram="131072" heads="1" primary="yes"/>
</video>
<!-- If you wanna passthrough GPU, make sure the gfx and audio are in the same bus (like 0x01) but different function (0x00 and 0x01)-->
<!-- <hostdev mode='subsystem' type='pci' managed='yes'>
Expand Down
Loading

0 comments on commit ecc5524

Please sign in to comment.