Skip to content

Commit

Permalink
Batch Update 1 - August 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)
  • Loading branch information
kholia committed Aug 20, 2023
1 parent 1184c09 commit 308ff07
Show file tree
Hide file tree
Showing 66 changed files with 253 additions and 138 deletions.
Binary file modified OVMF_VARS-1920x1080.fd
Binary file not shown.
5 changes: 3 additions & 2 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 @@ -55,7 +56,7 @@ args=(
-netdev user,id=net0 -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.
32 changes: 13 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ 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 🎉
Expand Down Expand Up @@ -165,7 +167,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 +204,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 +231,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
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
65 changes: 62 additions & 3 deletions networking-qemu-kvm-howto.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,27 @@ MacOS.

To use this adapter, replace network_adapter with e1000-82545em

vmxnet3 - An alternative solution to e1000 is to use vmxnet3 instead. Unlike
the e1000, vmxnet3 is a paravirtualized NIC, which can allow for better
vmxnet3,virtio-net-pci - An alternative solution to e1000. Instead of emulating
the e1000, these are paravirtualized NICs, which can allow for better
performance (in theory). The only catch is that the you need to have a recent
version of MacOS (10.11 or later).

To use this adapter, replace network_adapter with vmxnet3
To use these adapters, replace network_adapter with vmxnet3 or virtio-net-pci.


SSH access in user mode
-----------------------

Although the IP address of the VM is not visible to the outside, it is possible
to use port forwarding to access the VM's ports from your host, eg the SSH port.
To achieve that:

- In MacOS, turn on SSH under System Preferences > Sharing > Remote Login.
- Modify the startup script to include `-netdev user,id=net0,hostfwd=tcp::10022-:22`
- Use `ssh localhost -p10022` to get in.

You can use the same for VNC.

-----------------------------------
Tap Networking (Better Performance)
-----------------------------------
Expand All @@ -62,6 +75,25 @@ virsh net-autostart default
Add "-netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27 \"
to your qemu-system-x86_64 command.


Using an rc.local startup script
--------------------------------

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.


QEMU networking tip
-------------------

Expand Down Expand Up @@ -96,3 +128,30 @@ to work, it needs to be setuid root. This can be accomplished with this command:

Note that this is sometimes viewed as a security hole. Be careful and understand
what you are doing before running this command.


-----------------------
Bridged Networking 2023
-----------------------

sudo mkdir -p /etc/qemu

sudo cp bridge.conf /etc/qemu

sudo chmod u+s /usr/lib/qemu/qemu-bridge-helper

sudo ip link add name br0 type bridge

sudo ip link set dev br0 up

sudo ip link set enx00e04c680a67 master br0 && sudo dhclient br0

$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.ead0ee60b7c1 yes enx00e04c680a67
tap0
Use the following network device in scripts:

-netdev bridge,id=net0,br=br0,"helper=/usr/lib/qemu/qemu-bridge-helper" -device virtio-net-pci,netdev=net0,id=net0,mac=00:16:CB:00:11:34

Also see https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html to tweak the config.plist file.
Loading

0 comments on commit 308ff07

Please sign in to comment.