Installing macOS 13 Ventura on Proxmox 7.2

This tutorial for installing macOS 13 Ventura has been adapted for Proxmox from Kholia’s OSX-KVM project and Leoyzen’s OpenCore configuration for KVM. You can get the full sourcecode of my OpenCore release on my GitHub here.

Requirements

I’ll assume you already have Proxmox 7.2 installed. You also need a real Mac available in order to build the installer and fetch the OSK key.

Ventura now requires that your CPU has support for AVX2, so for Intel your CPU would have to be at least as new as Haswell. However, I have added the CryptexFixup kext to work around this restriction and allow Ventura to be used even on CPUs that don’t have AVX2 support (and merely support SSE 4.2 and AVX1). Note that the AMD graphics card drivers won’t work in this situation, and other apps that assume AVX2 is present could break too! Please see the CryptexFixup readme for details.

Modern AMD CPUs also support AVX2 and should work with this guide.

Since Monterey, your host must have a working TSC (timestamp counter), because otherwise if you give the VM more than one core, macOS will observe the skew between cores and panic when it sees time ticking backwards. To check this, on Proxmox run:

dmesg | grep -i -e tsc -e clocksource

On a working host you’ll see:

tsc: Refined TSC clocksource calibration: 3399.998 MHz
clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x31024cfe468, max_idle_ns: 440795307017 ns
clocksource: Switched to clocksource tsc

On a broken host you’ll see:

TSC synchronization [CPU#0 -> CPU#1]:
Measured 3358870891203288 cycles TSC warp between CPUs, turning off TSC clock.
tsc: Marking TSC unstable due to check_tsc_sync_source failed
clocksource: Switched to clocksource hpet
kvm: SMP vm created on host with unstable TSC; guest TSC will not be reliable

If you have a broken TSC, this is a possible workaround. Sometimes you can simply power-cycle the host to resync the TSCs (especially if your server has a high uptime).

First step: Create an installation ISO

Download my copy of the OSX-KVM repository using the download button, and unzip it:

https://github.com/thenickdude/OSX-KVM

First we need to install some build requirements. If you will be building the installer ISO on macOS, open up the Terminal and run this command to install the commandline tools:

xcode-select --install

If you’re building the ISO on Linux, you instead need to run this command (these are the package names for Ubuntu or similar distributions, they may need adjustment on other distributions):

sudo apt install qemu-utils make

Now in the Terminal, from the root of OSX-KVM, run:

cd scripts/ventura
make Ventura-recovery.img

This will download the Ventura installer from Apple’s software distribution servers and build a Ventura-recovery.img file for you. Upload this file to your Proxmox’s ISO store directory (typically /var/lib/vz/template/iso). Although we’re putting it in the ISO directory so that we can use it with Proxmox’s ISO picker later, this a raw disk image rather than a true ISO.

If you’re building the installer on macOS, you can build a full installer instead of just a recovery, which will mean that macOS won’t have to download Ventura files during installation, and so won’t require an Internet connection. Simply ask it to build Ventura-full.img instead:

cd scripts/ventura
make Ventura-full.img

This option is not available when building the installer on Linux.

Prepare an OpenCore image

Download the OpenCore.iso.gz file from the newest release in my repository (you need v19 or newer), double click it to unpack it, and upload it to Proxmox’s ISO store at /var/lib/vz/template/iso. Although it has a .iso file extension, this is actually a hard disk image.

Fetch the OSK authentication key

macOS checks that it is running on real Mac hardware, and refuses to boot on third-party hardware. You can get around this by reading an authentication key out of your real Mac hardware (the OSK key). Save the first block of C code from this page as smc_read.c. In a command prompt, change into the same directory as that file and run:

xcode-select --install # If you don't already have gcc
gcc -o smc_read smc_read.c -framework IOKit
./smc_read

It’ll print out the 64 character OSK for you. Make a note of it.

Every Mac uses the same OSK, so don’t be surprised that it doesn’t look like a random string!

Create the VM

From the Proxmox web UI, create a new virtual machine as shown below.

In the Options page for the VM, ensure that “use tablet for pointer” is set to “Yes” (this is the default).

In the Hardware page for the VM, add a second DVD drive at IDE0, set it to use your Ventura-full.img.

Don’t try to start the VM just yet. First, SSH into your Proxmox server so we can make some edits to the configuration files.

Edit /etc/pve/qemu-server/YOUR-VM-ID-HERE.conf (e.g. with nano or vim). Add this line, being sure to substitute the OSK you extracted earlier into the right place:

args: -device isa-applesmc,osk="THE-OSK-YOU-EXTRACTED-GOES-HERE" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on

A USB keyboard is added here because macOS doesn’t support QEMU’s default PS/2 keyboard. MSI has been disabled for the USB controller to fix QEMU panics when USB 3 devices are passed through. ACPI PCIe hotplug support has been disabled to fix VMs with passthrough devices.

Ensure the args are all on a single line!

You can remove the “+invtsc” feature from the -cpu list if your CPU doesn’t support it, or if you want to be able to migrate a running VM between Proxmox nodes.

On AMD you may find that the installer reboots while loading, or the loading bar doesn’t appear, if so replace “-cpu host” with “-cpu Haswell-noTSX” (I had to do this on AMD EPYC 7R13).

Now find the lines that define the two “ISOs” (ide0 and ide2), and remove the “,media=cdrom” part from them. Add “,cache=unsafe” in its place. This will treat these as hard disks rather than DVD drives.

Save your changes, return to the Options tab, and change the boot order to put IDE2 (the OpenCore image) first. Your final VM configuration file should resemble this:

agent: 1
args: -device isa-applesmc,osk="..." -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
balloon: 0
bios: ovmf
boot: order=ide2;virtio0
cores: 4
cpu: Haswell
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
ide0: local:iso/Ventura-full.img,cache=unsafe,size=14G
ide2: local:iso/OpenCore-v18.iso,cache=unsafe,size=150M
machine: q35
memory: 4096
meta: creation-qemu=6.2.0,ctime=1655001118
name: macos-ventura
net0: virtio=...,bridge=vmbr0,firewall=1
numa: 0
ostype: other
scsihw: virtio-scsi-single
smbios1: uuid=...
sockets: 1
vga: vmware
virtio0: local-lvm:vm-100-disk-1,cache=unsafe,discard=on,iothread=1,size=64G
vmgenid: ...

Configure Proxmox

On Proxmox, run “echo 1 > /sys/module/kvm/parameters/ignore_msrs” to avoid a bootloop during macOS boot. To make this change persist across Proxmox reboots, run:

echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u

Install Ventura

Now start up your VM, it should boot to the OpenCore boot picker:

Press enter to boot the “Install macOS 13 Ventura” entry and the installer should appear. (If your keyboard isn’t working, leave the Proxmox Console page and re-enter it)

OpenCore’s “OpenCanopy” boot picker

Our virtual hard drive needs to be erased/formatted before we can install to it, so select the Disk Utility option. Follow the steps below to format the disk:

Now you can quit Disk Utility from the top menu (Disk Utility > Quit Disk Utility), and we’re ready to begin installation!

After the first stage of installation, the VM will reboot a couple of times in quick succession, and each time you must manually pick the “macOS Installer” entry (the second one here, with the hard disk icon) to continue installation. It will not be selected for you automatically:

If your keyboard isn’t responding on this screen, exit the Console tab in Proxmox and re-enter it. If you get a “prohibited” sign like this appearing, hit the Reset button on the VM to try again:

Now the installation is nearly complete and the macOS Installer entry disappears, so pick the name of your main disk to boot instead (mine’s called Main).

It’ll reboot a couple more times, so just keep picking the “Main” entry until you finally boot into Ventura!

Answer the initial install questions, and you’ll be logged on! Note that you will want to hold off on logging into your Apple ID until you’ve configured your Mac’s serial number in OpenCore (because otherwise a Mac with the default shared serial number in my OpenCore image will be added to your Apple ID).

It works!

Note that it will be really sluggish for a few minutes after the first boot while the system performs housekeeping tasks.

Make the OpenCore install permanent

We’re currently booting using OpenCore from the attached OpenCore ISO. Let’s install that to the hard drive instead. Pop open Terminal and run “diskutil list” to see what drives we have available.

Use “sudo dd if=<source> of=<dest>” to copy the “EFI” partition from the OpenCore CD and overwrite the EFI partition on the hard disk. The OpenCore CD is the small disk (~150MB) that only has an EFI partition on it, and the main hard disk is the one with the large (>30GB) Apple_APFS “Container” partition on it.

In my case these EFI partitions ended up being called disk2s1 and disk0s1 respectively, so I ran “sudo dd if=/dev/disk2s1 of=/dev/disk0s1” (note that if you get these names wrong, you will overwrite the wrong disk and you’ll have to start the installation over again!).

Now shut down the VM, and remove both the OpenCore and the Ventura installer drives from the Hardware tab. On the Options tab, edit the boot order to place your virtio0 disk as the first disk. Boot up. If everything went well, you should see the OpenCore boot menu, and you can select your “Main” disk to boot Ventura:

Sleep management

I found that I was unable to wake Ventura from sleep using my mouse or keyboard. If you encounter the same problem, you can either disable system sleep in Ventura Energy Saver settings to avoid the issue, or you can manually wake the VM up from sleep from Proxmox by running:

qm monitor YOUR-VM-ID-HERE 
system_wakeup
quit

Editing your OpenCore/EFI settings

The Configuration.pdf that explains the OpenCore config.plist file can be found along with the OpenCore release on my GitHub.

To mount your EFI partition in macOS so you can edit your config.plist, first check the “identifier” of your EFI partition in the terminal:

~$ diskutil list
/dev/disk0 (external, physical):
   #:                   TYPE NAME              SIZE       IDENTIFIER
   0:  GUID_partition_scheme                  *512.1 GB   disk0
   1:                    EFI EFI               209.7 MB   disk0s1
   2:             Apple_APFS Container disk1   511.9 GB   disk0s2

Then you can mount it like so:

sudo mkdir /Volumes/EFI
sudo mount -t msdos /dev/disk0s1 /Volumes/EFI

Now you can edit /Volumes/EFI/OC/config.plist with your favourite text editor to make your changes. (TextEdit is not a great choice because it likes to insert curly quotes into the file and otherwise break things, there are some dedicated plist editors available such as XCode).

If you’re unable to boot macOS, you can edit the config.plist using the “UEFI Shell” option in the OpenCore boot menu instead.

Enter “FS0:” and press enter to open up the first available filesystem, then run “edit EFI\OC\config.plist” (if the file isn’t found, try switching to another filesystem like fs1:). When you’re done editing, press control+Q to exit, “Y” to save, then run “exit” to return to the OpenCore menu. You need to reboot for your changes to take effect.

If you prefer, you can edit config.plist from the comfort of your Proxmox host instead. If you’re booting from an attached OpenCore.img file, you can mount that file as a disk on the host. If you’re booting from the VM’s disk instead, it must be in raw format in order to be mounted (e.g. typical LVM or ZFS usage) rather than qcow2.

# Mount an OpenCore image:
losetup --partscan /dev/loop0 /var/lib/vz/template/iso/OpenCore-v15.img
# or a VM boot disk:
losetup --partscan /dev/loop0 /dev/zvol/tank/vms/vm-100-disk-1

mount /dev/loop0p1 /mnt

Now the contents of that first partition are available in /mnt, so you can edit /mnt/EFI/OC/config.plist in your favourite editor. When you’re done, do this to unmount the disk:

umount /mnt
losetup --detach /dev/loop0

Automatic boot

In config.plist, you can set Misc/Boot/Timeout to a non-zero value to allow the default boot option be chosen automatically after that delay in seconds. I’ve disabled this by default because it causes the installer ISO to re-enter its main menu instead of continuing the second stage of installation.

You can set the default boot option by pressing control+enter on it.

Verbose boot

To boot macOS in Verbose mode to diagnose boot problems, at the OpenCore boot menu press Cmd+V before pressing enter to boot macOS (you don’t need to hold it down).

If there is a kernel panic during boot and it reboots too quickly to be read, edit config.plist to add “debug=0x100” to the kernel arguments.

Changing screen resolution

To change macOS’ screen resolution, you need to edit the UEFI/Output/Resolution setting in config.plist, the default is 1920×1080@32.

You should be able to change this to any of the modes that the system OVMF menu offers (hit F2 at the start of guest boot and choose “Device Manager/OVMF Platform Configuration” to see which resolutions are available).

Video performance

Because there is no guest video acceleration available for macOS, video performance is poor.

In Google Chrome in the guest you will need to toggle off the setting to “use hardware acceleration when available” to improve issues with elements not being drawn or flickering (especially video). Safari may be a better choice.

macOS’s built in “Screen Sharing” feature offers dramatically better framerates and latency than Proxmox’s browser-based VNC console, so if you have a real Mac to act as a viewing console, you can enable that in the VM’s “Sharing” settings and connect to the VM using the Screen Sharing app from your Mac instead:

Apparently Screen Sharing is also compatible with VNC clients like RealVNC, so you should be able to connect to it from Linux or Windows consoles using RealVNC.

The real magic bullet for video performance is to pass through a compatible video card using PCIe passthrough (AMD cards only). This offers near-native performance. You can read more about how I’m using PCIe passthrough on my own installation here.

USB passthrough

Since I want to use this as my primary computer, I want to use a USB keyboard and mouse plugged directly into Proxmox, rather than sending my input through the web VNC console.

Proxmox has good documentation for USB passthrough. Basically, run “qm monitor YOUR-VM-ID-HERE”, then “info usbhost” to get a list of the USB devices connected to Proxmox:

qm> info usbhost
Bus 3, Addr 12, Port 6, Speed 480 Mb/s
Class 00: USB device 8564:1000, Mass Storage Device
Bus 3, Addr 11, Port 5.4, Speed 12 Mb/s
Class 00: USB device 04d9:0141, USB Keyboard
Bus 3, Addr 10, Port 5.1.2, Speed 12 Mb/s
Class 00: USB device 046d:c52b, USB Receiver
Bus 3, Addr 9, Port 14.4, Speed 12 Mb/s
Class 00: USB device 046d:c227, G15 GamePanel LCD
Bus 3, Addr 8, Port 14.1, Speed 1.5 Mb/s
Class 00: USB device 046d:c226, G15 Gaming Keyboard

In this case I can add my keyboard and mouse to USB passthrough by quitting qm, then running:

qm set YOUR-VM-ID-HERE -usb1 host=04d9:0141
qm set YOUR-VM-ID-HERE -usb2 host=046d:c52b

This saves the devices to the VM configuration for you. You need to reboot to have the new settings apply.

You can also pass through USB devices by passing through an entire USB controller using Proxmox’s PCIe passthrough feature, which gives much better compatibility.

Odd core counts

If your host CPU is AMD, you might have a core count which is divisible by 3, like 6 cores. macOS doesn’t like it if the core count isn’t a power of 2 (1, 2, 4, 8), but it doesn’t mind odd socket counts.

So in order to pass 6 total cores, configure the VM for 3 sockets and 2 cores per socket.

Fixing “guest boots to UEFI shell”

If your guest ends up booting to the UEFI shell instead of showing the OpenCore boot menu, especially if you’ve just updated OpenCore to a new version, you’ll need to edit the guest’s UEFI boot entries to fix this.

At the very start of guest boot, hit F2 to enter guest UEFI settings.

First we’ll remove the old entries. Choose the Boot Maintenance option, then Boot Options -> Delete Boot Option. Use the spacebar to tick any old Clover or OpenCore entries (avoid ticking the EFI Internal Shell option, you want to keep that!). Select “Commit Changes and Exit”.

Now we’ll add the correct entry for OpenCore back in. Select Add Boot Option. Navigate through the device tree to EFI/OC/OpenCore.efi and select it, name this new option “OpenCore” or similar. Again Commit Changes and Exit.

Go to the Change Boot Order and move OpenCore to the top. Commit Changes and Exit.

Now back out to the main menu and choose Reset, and you should successfully boot into OpenCore this time.

Fixing iMessage

iCloud and the App Store should already be working for you, but for iMessage support you must follow these steps to mark your network adapter as built-in:

https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html#fixing-en0

Disabling SIP (System Integrity Protection)

You can disable SIP by selecting the Recovery option from the OpenCore boot menu, then use the top menu to open the Terminal and run csrutil disable --no-internal. Then reboot.

This may be needed to run unsigned kexts or perform other hacks.

Upgrading OpenCore

Sometimes you need to update OpenCore to a new release in order to support a new macOS update. I’ll assume you don’t have any customisations to config.plist you want to save.

First take a snapshot! It’s great to be able to roll back if something goes wrong.

If you’re still able to boot macOS, you can update it from within the guest. Follow the instructions in the “Editing your OpenCore/EFI settings” section to mount your EFI partition. Then you can delete the EFI folder in there and replace it with the one from the OpenCoreEFIFolder.zip file from my OpenCore release (you’ll probably need to empty the trash first to make room for the new folder). You’re done!

If you aren’t able to boot macOS, unpack and upload the new OpenCore ISO to Proxmox’s ISO store instead. Add a new CD drive to the VM that uses that ISO. Then in Proxmox’s terminal edit the VM’s config (in /etc/pve/qemu-server) to replace “media=cdrom” with “cache=unsafe” for the OpenCore drive. Now on the “Options” tab, change the boot order to put the new OpenCore drive first.

Start the VM and boot into macOS using the new OpenCore drive. From within macOS you can now follow the instructions from the “Make the OpenCore install permanent” section to install the new OpenCore image to your main macOS disk, after which the OpenCore drive can be detached from the VM.

Upgrading from macOS Monterey

First make a backup or snapshot of your system! Being able to roll back when the upgrade goes wrong is a real lifesaver.

You’ll need to update OpenCore to my v19 release before the upgrade, use the section above to do that. After updating that, reboot to make sure that you can still boot Monterey.

If you’re using any PCIe passthrough devices (particularly video cards) you’ll want to disable those and set “vga: vmware” instead, so you can install using Proxmox’s web console from a different machine during the upgrade. This avoids installer problems triggered by flaky video card passthrough, especially host lockups caused by the AMD Reset Bug.

If your CPU is AMD, replace the “-cpu” argument in your VM args line with the new one:

-cpu Haswell-noTSX,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on

Intel CPUs should work with -cpu host

Now if your CPU supports AVX2 you can upgrade to Ventura using Software Update or from the App Store like you would on a real Mac.

If the update fails to appear, your SIP mode might be set to “Apple Internal”. You can check this by running “csrutil status” in the Terminal.

To fix this, reboot your VM and at the OpenCore menu select Recovery. Open up the Terminal, and in there run “csrutil enable --no-internal” (“csrutil disable --no-internal” is fine too), then reboot back into macOS and try again.

Another way to upgrade is to build a Ventura full or recovery installer and use that to install Ventura (installing over the top of Monterey will upgrade Monterey while keeping your user data intact).

If your CPU doesn’t support AVX2, you’ll have to create a full/recovery installer since I didn’t enable the kernel patch for Monterey/Big Sur that would allow the Ventura App Store app to be run directly from within running macOS.

217 thoughts on “Installing macOS 13 Ventura on Proxmox 7.2”

  1. So, I have Catalina through Monterey Installed and working.
    Having issues with the Ventura Installer though.

    Kernel Panic 3 seconds into booting either the install or recovery image.

    Conf file:
    agent: 1
    args: -device isa-applesmc,osk=”” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
    balloon: 0
    bios: ovmf
    boot: order=ide2
    cores: 2
    cpu: Haswell
    efidisk0: local:101/vm-101-disk-0.qcow2,efitype=4m,size=528K
    ide0: GoFlex1:iso/Ventura.iso,cache=unsafe
    ide2: GoFlex1:iso/OpenCore-v19.iso,cache=unsafe,size=150M
    localtime: 0
    machine: q35
    memory: 8192
    meta: creation-qemu=7.1.0,ctime=1670221416
    name: Ventura
    net0: virtio=6A:7F:A9:C7:E9:76,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    scsihw: virtio-scsi-pci
    smbios1: uuid=
    sockets: 1
    vga: vmware
    virtio0: local-lvm:vm-101-disk-0,discard=on,iothread=1,size=128G
    vmgenid:

    1. After checking other comments, I also was able to boot by setting 1 core, 1 socket. Haven’t yet tried setting cascade-lake-server CPU, as the installation is currently running.

      Will probably try that later.

        1. Any idea why cpu- host doesn’t work through proxmox for amd cpu and anyway can get working .
          I thought the amd vanilla patches should fix this globally.

          I use cpu host for my amd system which is installed bare metal with just open core

          Thanks

          1. Same problem here. Followed the guide step-by-step. Apple logo on boot and then VM restarts forever (no progress bar).

            Using AMD Ryzen 7 5700G.
            Any ideas? Thanks.

            Tried with -cpu Haswell-noTSX
            Tried without +invtsc
            No success

            agent: 1
            args: -device isa-applesmc,osk=”…” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
            balloon: 0
            bios: ovmf
            boot: order=ide2;virtio0
            cores: 8
            cpu: Haswell
            efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
            ide0: local:iso/Ventura-full.img,cache=unsafe,size=14G
            ide2: local:iso/OpenCore-v19.iso,cache=unsafe,size=150M
            machine: q35
            memory: 16384
            meta: creation-qemu=6.2.0,ctime=1672443976
            name: macOS
            net0: virtio=…:EC,bridge=vmbr0,firewall=1
            numa: 0
            ostype: other
            scsihw: virtio-scsi-single
            smbios1: uuid=…
            sockets: 1
            vga: vmware
            virtio0: local-lvm:vm-100-disk-1,cache=unsafe,discard=on,iothread=1,size=120G
            vmgenid: …

        2. hey Nicholas — thanks so much for another amazing guide. I’m on the latest Monterey but couldn’t update to Ventura without upgrading opencore. Followed your steps. Got the iso in there. Booted into Monterey but the machine didn’t know it was me so I couldn’t log into apple id. Do I need to alter the EFI I get from the new open core? Thanks again..

          1. If you had previously edited the serial number etc in your old OpenCore you’ll need to transfer that config over to the new config.plist

            Otherwise, in macOS run “ifconfig” and verify that you have an Ethernet adapter called “en0”. iCloud requires that this exists so that it can read the MAC address from it, and sometimes it can end up being renamed to en1.

            1. Thank you. I did get it to install.. see my latest comment. I’m taking a snapshot of where it is now on Ventura.. but going back to Monterey so I can use it.

              Thank you so much!

            2. I did check that. I have two. One is en0 the other is en1. Should I delete the en1? Also, any help on the GPU passthrough is appreciated. Back up on Monterey – and it’s working perfectly. I do have the snapshot of the Ventura install, however. 😉

              thanks again, my man

    2. Did you by any chance find a long term fix for this? I built my setup using 1 Socket and 4 Cores. Everything installed fine and was working, until I did a reboot. Now I can’t get the VM to startup unless I configure it for 1 Socket and 1 Core. Would love to get this back working with 4 Cores.

      My physical CPU is the AMD Ryzen 9 5900HX (Mini Forums EliteMini HX90) running ProxMox VE 7.3-4.

      Here is the QEMU config:
      agent: 1
      args: -device isa-applesmc,osk=”…” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Haswell-noTSX,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
      balloon: 0
      bios: ovmf
      boot: order=virtio0;net0
      cores: 1
      cpu: Haswell
      cpuunits: 1024
      efidisk0: local-lvm:vm-105-disk-0,efitype=4m,size=4M
      machine: q35
      memory: 8192
      meta: creation-qemu=7.1.0,ctime=1673012135
      name: ventura
      net0: virtio=”…”,bridge=vmbr0,firewall=1
      numa: 0
      ostype: other
      scsihw: virtio-scsi-single
      smbios1: uuid=”…”
      sockets: 1
      vga: vmware
      virtio0: local-lvm:vm-105-disk-1,cache=unsafe,discard=on,iothread=1,size=64G
      vmgenid: “…”

        1. Interesting I see “tsc” when running:
          “cat /sys/devices/system/clocksource/clocksource0/current_clocksource”

          and I also see: [ 1.420240] clocksource: Switched to clocksource tsc
          when I run “dmesg | grep -i -e tsc -e clocksource”

          However, if I power off the host machine it does appear to allow me to run the guest VM with whatever core count I want to use (4, 8, etc…). So I have to assume it must be something with the tsc clock not being in synch. I’m going to continue to dig on this.

          Do you believe I would see any benefit with my host machine (cpu: AMD Ryzen 9 5900HX) by using the AMD Vanilla OpenCore patches??

          1. It might be that your clocks start off in sync but then drift afterwards, and Linux doesn’t detect it and report it in dmesg. In that case I’d be looking to turn off CPU power saving states in the BIOS since sometimes CPU “naps” cause the clock to drift.

            No, I don’t think the AMD patches will change anything.

  2. Proxmox

    TASK ERROR: KVM virtualisation configured, but not available. Either disable in VM configuration or enable in BIOS.

    (I checked the BIOS and it is enabled…)

    Do you know of a solution to this error?

  3. Smashing my head against the wall on this one. I’ve tried both the full and recovery images from a working MacOS system and I keep getting this error during the install from “macOS Update Assistant”:

    “An error occurred preparing the software update.”

    I have a 64GB disk so I don’t believe space is the culprit.

    Any idea if the Ventura installer has been updated or changed in any way recently?

  4. Hi Nick,
    I’ve gotten as far as installing, however, the installer gets stuck at 12 minutes remaining now matter what I do or how many times I reboot. Always 12 minutes.
    The installer log gives some errors. Screenshot of that at https://ibb.co/wNNcy6y.
    My config is:
    agent: 1
    args: -device isa-applesmc,osk=”o…c” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.>
    balloon: 0
    bios: ovmf
    boot: order=ide2;virtio0;net0
    cores: 4
    cpu: Haswell
    cpuunits: 1024
    efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
    ide0: local:iso/Ventura-full.img,cache=unsafe,size=14G
    ide2: local:iso/OpenCore-v19.iso,cache=unsafe,size=150M
    machine: q35
    memory: 12000
    meta: creation-qemu=7.1.0,ctime=1670696109
    name: macos-ventura
    net0: virtio=7E:0F:B3:D4:68:9E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    scsihw: virtio-scsi-single
    smbios1: uuid=32c05178-34fb-43a5-b993-5a7fabb8b4ed
    sockets: 1
    vga: vmware
    virtio0: local-lvm:vm-100-disk-1,cache=unsafe,discard=on,iothread=1,size=256G
    vmgenid: 1d34147e-f100-4ee6-95a4-263a2998d88b

    1. Ah, the last time this happened it was because Apple released a new OS version for ARM, and because it was the newest version available the recovery installer picked it even though the architecture was incompatible.

      When that happened the only solution I found was to use a Monterey VM to build a Full Installer for Ventura, so the recovery installer’s bad choice could be avoided.

      1. Hi,

        I’m having exactly the same issues as Rusty. The installer gets stuck at 12 minutes remaining…

        I did build an Ventura-full-image on my Mac with Ventura 13.0.1.

        @Rusty, did you have any luck in your setup (see also your post at December 11, 2022 at 11:14 pm)?

        I’m not sure if I understand the comments correctly. Do I need to try to build a Monterey full image and not use the Ventura full image?
        And then install Monterey instead of Ventura?

  5. I made an earlier post but tried a different route.
    My problem is I keep getting stuck at 12 minutes remaining. This time I used the recovery image and just let it run overnight.
    Installer log still says, “Ignoring BOMfilesystem mismatches due to security error”
    Here’s my config now:
    agent: 1
    args: -device isa-applesmc,osk=”…” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.>
    balloon: 0
    bios: ovmf
    boot: order=ide2;virtio0;net0
    cores: 4
    cpu: Haswell
    cpuunits: 1024
    efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
    ide0: local:iso/Ventura-recovery.img,cache=unsafe,size=14G
    ide2: local:iso/OpenCore-v19.iso,cache=unsafe,size=150M
    machine: q35
    memory: 12000
    meta: creation-qemu=7.1.0,ctime=1670696109
    name: macos-ventura
    net0: virtio=7E:0F:B3:D4:68:9E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    scsihw: virtio-scsi-single
    smbios1: uuid=32c05178-34fb-43a5-b993-5a7fabb8b4ed
    sockets: 1
    vga: vmware
    virtio0: local-lvm:vm-100-disk-1,cache=unsafe,discard=on,iothread=1,size=256G
    vmgenid: 1d34147e-f100-4ee6-95a4-263a2998d88b

    1. Thanks.
      I just finally saw the reply to my first post so ignore the second I suppose. I’ll update my kid’s macbook pro to Monterey and try to build it from there.
      Forgot to mention the first installer I tried (a full one) was built on macos Catalina (2013 MBP) but the second one, the recovery, was on Linux.

      1. You can build the full installer from any version I think, Catalina ought to work. I just mention Monterey because it’s the newest VM tutorial I have.

  6. Hi, Has anyone had any luck updating the Ventura VM? Looks like 13.0.1 is available. Curious if I can just go through the regular updating process.

    1. No problem at all updating to 13.0.1, but I am having some trouble with today’s 13.1 release. I get an error preparing the update. I am not sure if it’s related to my VM config or some other issue yet. I may end up creating a new installer and updating that way.

      1. Thanks. I just did it on mine and it seemed to work fine although the first time it didn’t seem to work. I ran it again and it worked so not sure what that is about.

  7. Lets say I screwed up my config.plist file on my recently upgraded 13.0.1 vm, by trying to add kexts for bluetooth for a passthrough AX220 controller, and my vm no longer boots (kernel panic on boot). What is the best way to recover the config.plist from the PVE host? Is there an easy way to mount the EFI partition from the host and replace the files?

    Thanks

    1. The easiest way would be to attach a fresh downloaded OpenCore image and set the VM to boot from that. Then once you get in you can fix up your EFI partition and set the boot order back over to the hard disk.

  8. Hey! Your guides are amazing and I’m using them for long time.

    I hit a roadblock with Ventura however. It was working properly, I rebooted it a few times and now out of a sudden, no matter what I do, it crashes with the following error: https://i.imgur.com/NT73L2n.png

    I tried recreating EFI disk in PVE, as well as doing Reset NVRAM in OpenCore. I also tried searching but the google search brings up only some unrelated iGPU thread and this blog 🙁 I disabled some kexts originally, as this VM is only for CLI access really, so I don’t need anything but network, but it’s probably irrelevant as it now does not boot from the OpenCore iso file even.
    Do you have any idea what is it complaining about?

    =========
    Below is my config:

    agent: 1
    args: -device isa-applesmc,osk=”***” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Haswell-noTSX,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
    balloon: 0
    bios: ovmf
    boot: order=ide2
    cores: 4
    cpu: Haswell
    efidisk0: local-zfs:vm-102-disk-0,efitype=4m,size=1M
    ide2: local:iso/OpenCore-v19.iso,cache=unsafe
    machine: q35
    memory: 8192
    meta: creation-qemu=7.1.0,ctime=1670834125
    name: backmac
    net0: virtio=****,bridge=vmbr1,firewall=1,link_down=1,tag=30
    numa: 0
    ostype: other
    scsi0: ****
    scsihw: virtio-scsi-single
    smbios1: uuid=***
    sockets: 1
    startup: order=100
    vga: vmware
    vmgenid: ****

  9. Thank you as always for this incredible guide!

    I had an issue disabling SIP and was getting an “assertion failed” error. Running “csrutil clear” before “csrutil disable” fixed it for me.

    Just wanted to share!

  10. Gonna go back to my snapshot because I need the rig.. but got Ventura to install as an upgrade from Monterey after putting the new EFI in that you gave. I was able to boot from the proxmox console. Pretty nice. Could not start imessage.. just didn’t like my Apple id. What I did was plugged in my smbios into the new plist in the updated EFI. Won’t apple see it as the same rig? Or do I need to use an all new smbios after the install. The real reason I’m going back to Monterey is because I simply cannot boot to my external monitors with my RX6600XT. Works great in Monterey.. all of the settings are correct. Proxmox comes on.. I click to boot the hard drive.. The Apple logo appears.. the progress line gets to about 30% screen shuts off and that’s that. So strange.

    Let me know what I should try .. because it’s unusable like this. Thank you so much for the great guide.. ALMOST worked for me.

      1. pikera fixed the display. Thanks so much. Clearing NVRAM didn’t help the apple id sign in issue. Going to compare old and new config.plists and see if there’s a difference

        Thanks again!
        j

  11. Has anyone had success upgrading to Ventura from Monterey using an RX6600XT gpu? I have upgraded successfully but can only use the vmware graphics. Booting to the 6600 just locks up. Let know! Thank you.

  12. I’m trying to upgrade from Monterey to Ventura, I do everything as in the instructions, after a reboot I select ‘main’ and nothing has been updated, opencore crashes after a reboot.

    Please help, you can more detailed instructions for updating

  13. After updating from Monterey with the full installer image, MacOS enters into a bootlooop after installation saying “Your computer restarted because of a problem. Press any key or wait a few seconds to continue starting up.” Is there a way to fix this?

  14. Does the bluetooth work for you I have the same chip USB adapter? What did you need to do in order to make it work, for me the bluetooth can not be turned on in the macos settings.

    I tried adding kexts:
    – BrcmPatchRAM3.kext
    – BlueToolFixup.kext
    – BrcmFirmwareData.kext

    I have the same BCM20702 broadcom chipset. Am I missing the USB mappings? I haven’t done that yet.

  15. Great tutorial!

    Thank You.

    Only problem is that I can not set or specify my time zone for automatic NTP update.
    The system is fixed on Pacific time and uses Cupertino, CA for apple timekeeping.
    (I’m in Nova Scotia).
    Nowhere in the setup did it try to identify my correct timezone.

    I need to disable automatic timekeeping and manually advance the clock by four hours, which leads to drift and issues with tome-critical apps.

    Any help or tips appreciated!
    Cheers, and Happy 2023.

  16. now maybe a more nuanced question. I have Ventura up and running after an update from Monterey. Everything appears to be working great.. except for continuity camera. Has anyone gotten it to work? Ventura sees my iphone 14. It indicates on the phone that it’s connected to the computer.. but it’s just a black screen on Facetime and photobooth. Let me know if you have this working and what you had to do to make it so. Thaks for a great forum!

    j

  17. I am unable to get the VM to login to iMessage and I have no idea why, I tried all new Serial etc… but no luck, does anyone have any ideas? I contacted support to remove the block but I still have had no luck, I don’t understand

  18. Hey Nick and other guys,
    thank you so much vor your detailed work and sharing it with us!

    I have Proxmox 7.3.3 and for now Big Sur successfully installed.
    Big Sur because my GPU (an old NVIDIA GTX680 – which for me definitely is good enough for an Audio-Workstation) only is natively supported until Big Sur.
    I have read ( https://elitemacx86.com/threads/nvidia-gpu-compatibility-list-for-macos.614/ ), that it’s possible in Monterey or Ventura to modify the OpenCore with the OCLP ( https://github.com/dortania/OpenCore-Legacy-Patcher ) to get GPUs like the GTX 680 to work.
    Has anyone done that and can give me a short instruction which does not destroy my Proxmox OC EFI (which I have done several times now ;)… )?

    1. As I understand – to use OLCP you need to boot into safe mode and this isn’t possible with OVMF BIOS used by Proxmox right now.

      Correct me if I am wrong…

    2. With pve,backup your macos_vm, you can try safely. Oclp works with mac_os 12 and 13. but may have some bugs.

  19. Hi everyone,

    I set up my VM now and it works great so far. GPU passed trough, USB controller passtrough. But the USB ports are only running with 2.0 speed and USBMap.kext or USBToolBox.kext/UTBMap.kext do not work because it do not get loaded even when integrated in config.plist. It just completely ignores these files… Any idea how to map my USB ports in macOS when running via Proxmox?

    Best,
    Kevin

  20. Great guide, and thank you for all the work….

    I wanted to ask your thoughts on trying to pass through the internal GPU on my AMD Ryzen 9 5900HX. This GPU uses Radeon graphics engine, but I have no idea if a driver for this would be available for Ventura. Also my primary reason for wanting to do this would be to be able to use an HDMI dummy plug, and see if the VNC/Screen Sharing can be accelerated. Mainly looking to address things like window minimize/resume animation stuttering and other unaccelerated graphics issues.

  21. Hello there,
    I’m experiencing the 12 minutes remaing issue, the install is stuck at this point (restarted several time host/guest and re-checked the config but no luck).
    Last logs available:
    https://i.imgur.com/lu6uv9T.png

    My current config on i5-1240p Intel NUC (redacted OSK):

    agent: 1
    args: -device isa-applesmc,osk=”#######” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
    balloon: 0
    bios: ovmf
    boot: order=ide2;virtio0
    cores: 4
    cpu: Haswell
    efidisk0: samsung:vm-108-disk-0,efitype=4m,size=1M
    ide0: hd_usb:iso/Ventura-full.img,cache=unsafe,size=14G
    ide2: hd_usb:iso/OpenCore-v19.iso,cache=unsafe,size=150M
    machine: q35
    memory: 6144
    meta: creation-qemu=7.1.0,ctime=1673274986
    name: Mac
    net0: virtio=0A:00:A3:AB:00:24,bridge=vmbr0,firewall=1
    numa: 0
    ostype: other
    scsihw: virtio-scsi-single
    smbios1: uuid=fdf38bb6-5817-4c1e-b7b2-dabeadaf20ed
    sockets: 1
    usb0: host=046d:c52b,usb3=1
    vga: vmware
    virtio0: samsung:vm-108-disk-1,cache=unsafe,discard=on,iothread=1,size=64G
    vmgenid: 9c592329-cb1e-415f-b855-6927cd276029

    Any hint please? Thank you!

    1. For sake of completeness, I’ve tried both Ventura-recovery, Ventura-full and also Monterey-recovery with no luck.
      I also re-created the VM from scratch and all are stuck at 12 minutes with the same error!
      I was using the current kernel (5.x), tested 6.0-edge and now the newer kernel 6.1 but still nothing.
      My setup is a Intel NUC 12 Pro with i5-1240p and latest PVE with ZFS filesystem.

  22. I found that to get iMessage working if it keeps logging you out a few seconds after logging in, you need to login to a legitimate MacBook or Mac computer on the same Apple ID then wait a few days and you should be able to then get iMessage working inside the VM. I believe it might have something to do with the Network device showing as Redhat VirtIO device but since I got it working I don’t want to mess things up again

    1. Most hosts give you a virtual machine and do not support “nested virtualisation” which is needed for running the macOS VM inside the VM they give you.

      You can do this on EC2 using EC2 Metal Instances, but the cost is about $4/hour:

      https://github.com/thenickdude/proxmox-on-ec2

      You can use their native mac2.metal option instead which runs on a real mac, with a cost of $0.65/hour and a minimum commitment of 24 hours.

  23. mba:ventura administrator$ gcc -o smc_read ~/Desktop/smc_read.c -framework IOKit
    mba:ventura administrator$ ./smc_read

    Modified 1 line in smc_read.c, and use kIOMainPortDefault because the original version will give me deprecated warning :

    io_service_t service = IOServiceGetMatchingService(kIOMainPortDefault,
    IOServiceMatching(“AppleSMC”));

    I’m getting this after gcc.

    Anyone got this?

  24. Hello

    Many thanks for your comprehensive tutorial. We were able to migrate flawlessly some MacOSX 10.14, 11 and 12 vmdk based VMs from esxi 6.5 hosts to proxmox 7.3 -3 and to start and run them along with the configuration steps and settings from this tutorial.
    Now there are left two MacOSX Server 10.6.8 vmdk based VMs to get them run. For legacy reasons we can not upgrade the system to a newer MacOSX system. Under esxi 6.5 they ran with no issues. Under proxmox with with OpenCore v19 we are not able to start them. Therefore we would be grateful for any hint that could help to start and run those vm on proxmox installation. At the moment the follwing is working:

    – OpenCore v19 boot picker shows the MacOSX Server 10.6.8 system disk.

    – Apple diskutil on the Montery-recovery.img(iso) booted in with OpenCore can mount and check the MacOSX Server 10.6.8 disk. Is reported as bootable MacOSX 10.6.8 system without any errors.

    – starting booting to the MacOSX Server 10.6.8 disk/volume selected by the OpenCore boot picker starts for about 1 minute by showing grey screen with white apple logo. Thereafter booting is stopped by replacing the apple logo with a “prohibition sign” and a top left message “OCB: Start Image failed – Aborted”. Thereafter the OpenCore boot picker is shown again with a little delay.

    – in an other attempt we tried to mount along with OpenCore existing “Apple MacOSX 10.6.8” and “Apple MacOSX Server 10.6.8” iso images, that we used successfully on esxi 4 to 6.5 for installing and to rescue. Unfortunately they are not shown by the OpenCore boot picker (?).

    – We tried different kvm vm “args” but were not able to resolve the issue. Our actual settings are:

    args: -device isa-applesmc,osk=”…” -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Penryn,vendor=GenuineIntel,+hypervisor,kvm=on,vmware-cpuid-freq=on
    balloon: 0
    bios: ovmf
    boot: order=ide0;sata0;ide2
    cores: 4
    cpu: Penryn
    cpuunits: 1024
    efidisk0: local-lvm:vm-30100-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
    ide0: local:iso/Apple_MacOSX_Install_10.6.iso,media=cdrom,size=7589352K
    ide2: local:iso/OpenCore-v19.iso,cache=unsafe,size=150M
    machine: q35
    memory: 8192
    meta: creation-qemu=7.1.0,ctime=1674135708
    name: hermes-10.6
    net0: e1000=AA:BB:CC:DD:EE:FF,bridge=vmbr000
    numa: 0
    ostype: other
    scsihw: virtio-scsi-single
    smbios1: uuid=37844390-6a3f-481b-aa75-42911acf7529
    sockets: 1
    vga: vmware
    sata0: local-lvm:vm-30100-disk-1,size=80G
    vmgenid: f38322fb-f7ce-450c-9ba1-4e195975873b

    Many thanks in advance for an hint, best regards

    André

  25. Dear Nicholas,
    in my Proxmox-macOS-virtual Machine the update from Ventura 13.1 to 13.2 went through smoothly without any problems.

    Very good job 🙂

    Best regards
    Jörg from Germany

  26. Guest Boot- If I try to start the VM it tries to boot from the wrong qemu drivr. I followed the instruction above (changing boot order, commiting changes etc) which works for one time but then if I turn the VM off again it goes back to not working. It doesnt seem like updating the boot order is saving correcting. If I reboot form in the mac it works fine., its only when I turn it off and then back on.

    Any ideas?

    1. You need to edit the boot order in Proxmox’s Options page, I’m pretty sure this overrides changes made in the guest’s UEFI settings.

      1. Thanks. I am just running khoila osx/kvm script from command line. I think I need to update the OVMF stuff. Would that do anything?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.