Desplegar MacOs Mojave en proxmox 9
Recientemente adquirí un Mac Pro del 2015 el cual me va muy bien para mi laboratorio de casa, ya que tiene 48GB de ram y un procesador que me sirve para virtualizar:

Decidí virtualizar un MacOs Sonoma aprovechando que el procesador y los componentes funcionan genial y no necesito de kext (drivers de Mac) extras. El proceso consta de los siguientes pasos:
1- Instalar los pre-requisitos de software en proxmox:
apt update
apt install -y python3-requests dmg2img parted wget unzip2 - Descargar el script de fetch-macOS
# Descargamos el script
cd /root
wget https://raw.githubusercontent.com/kholia/OSX-KVM/master/fetch-macOS-v2.py
# Lo ejecutamos
python3 fetch-macOS-v2.pyAl ejecutarlo, nos da varias versiones para descargar. En este caso, descargaremos la imagen base de Mojave:

3 - Convertir la imagen de formato Mac (dmg) a raw para importarla al proxmox más tarde:
dmg2img /root/BaseSystem.dmg /root/BaseSystem-installer.raw
4 - Creación de la máquina virtual:
# Configuramos las variables, ajustando el Id, el nombre y el almacenamiento para nuestro caso
VMID=200
NAME="macOS-Mojave"
STORAGE="Datos-Masivos" # Cambia el nombre por que tengas en tu proxmox (local-zfs, Datastore, etc.)
# Creamos la máquina
qm create $VMID --name $NAME --memory 12288 --cores 4 --sockets 1 --cpu host
# Habilitamos UEFI y creamos el dico EFI
qm set $VMID --bios ovmf
qm set $VMID --efidisk0 $STORAGE:1,pre-enrolled-keys=1
# Configuramos el tipo de máquina y la gráfica
qm set $VMID --machine q35
qm set $VMID --vga qxl
# Configuramos la red
qm set $VMID --net0 vmxnet3,bridge=vmbr0
# Creamos el disco donde instalaremos el SO con un tamaño de 100GB
qm set $VMID --sata2 $STORAGE:100
5 - Creamos el disco de inicio con OpenCore
OpenCore es el gestor de arranque que hace que macOS crea que se está ejecutando en hardware de Apple y parchea cualquier versión de mac para que funcione con cualquier tarjeta antigua (en mi caso mi mac tiene una Radeon 5770 que no es compatible con Sonoma)
# Descargamos OpenCore
cd /root
wget -O OpenCoreEFIFolder.zip \
"https://github.com/thenickdude/KVM-Opencore/releases/download/v21/OpenCoreEFIFolder-v21.zip"
unzip -o OpenCoreEFIFolder.zip -d OpenCore
# Creamos un disco de 512MB
qemu-img create -f qcow2 bootdisk.qcow2 512M
# Montamos el disco como un recurso de red para copiar el contenido de OpenCore en él
modprobe nbd max_part=8
qemu-nbd -c /dev/nbd0 bootdisk.qcow2
# Creamos la tabla de particiones GPT y la EFI
parted -s /dev/nbd0 mklabel gpt
parted -s /dev/nbd0 mkpart EFI fat32 1MiB 300MiB
parted -s /dev/nbd0 set 1 esp on
mkfs.vfat -F32 /dev/nbd0p1
# Montamos y copiamos la carpeta EFI para el arranque
mkdir -p /mnt/efi
mount /dev/nbd0p1 /mnt/efi
cp -r /root/OpenCore/EFI /mnt/efi/
# Desmontamos y desconectamos
umount /mnt/efi
qemu-nbd -d /dev/nbd0

6 - Importamos los discos a la máquina
# Importamos el disco de opencore
qm importdisk $VMID /root/bootdisk.qcow2 $STORAGE
# Importamos el disco de instalación
qm importdisk $VMID /root/BaseSystem-installer.raw $STORAGE --format raw
# Comprobamos los discos no usados en la máquina que hemos importado
cat /etc/pve/qemu-server/$VMID.conf | grep unused


7 - Añadimos los discos y configuramos el orden de arranque de la máquina
Comprobamos el tamaño para ver que el disdo de OpenCore es el de 512MB, BaseSystem es el de 2.5GB):

Una vez identificados los discos, los vinculamos en la máquina, cambiando la X por el número de disco
# Vinculamos el disdo de OpenCore como SATA0 (el de 512MB)
qm set $VMID --sata0 $STORAGE:$VMID/vm-$VMID-disk-X.raw
# Vinculamos el disdo de instalacióm como SATA1 (el de 2.5GB)
qm set $VMID --sata1 $STORAGE:$VMID/vm-$VMID-disk-Y.raw
# Configuramos el orden de arranque (IMPORTANTE: tenemos que incluir los 3 discos)
qm set $VMID --boot "order=sata0;sata1;sata2"
qm config $VMID | grep -E "sata|boot"
Si hemos montado todo bien, deberíamos ver lo siguiente:
- sata0: disco de arranque de OpenCore (~512MB)
- sata1: instalador de macOS (~2.5GB)
- sata2: Disco donde instalar el SO (100GB)
- boot: orden de arranque=sata0;sata1;sata2
8 - Añadir los argumentos necesarios a la máquina
Editamos el fichero de configuración de la máquina
nano /etc/pve/qemu-server/$VMID.confAñadimos la siguiente línea al final del fichero:
Para CPU Intel:
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-ehci,id=ehcix -device usb-kbd,bus=ehcix.0 -device usb-tablet,bus=ehcix.0 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+hypervisor,kvm=on,vmware-cpuid-freq=on
Para CPU Amd:
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-ehci,id=ehcix -device usb-kbd,bus=ehcix.0 -device usb-tablet,bus=ehcix.0 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Haswell-noTSX,vendor=GenuineIntel,+hypervisor,kvm=on,vmware-cpuid-freq=onSalvamos y salimos del editor (Ctrl+X, Y, Enter).
En mi caso, el fichero queda así:

Ahora podemos proceder con la instalación.
9 - Arrancamos la máquina para empezar la instalación
Al arrancar la máquina, a fecha de hoy, aparece el siguiente warning por los certificados de OpenCore:

Pero la máquina arranca correctamente:

Como no me gusta dejar warnings, apago la máquina y ejecuto lo que indica proxmox:
qm stop 200
qm enroll-efi-keys 200
qm start 200
Pulsamos enter en macOS Base System

Y esperamos que cargue el instalador

Una vez arrancado el instalador, veremos la siguiente pantalla

10- Formatear el disco de destino
Hacemos clic en Utilidad de Discos y pulsamos en Continue. Seleccionamos el disco de 100GB y pulsamos en Erase

Nombre: Macintosh HD (o la que prefieras)
Formato: APFS
Esquema: Mapa de particiones GUID
Pulsamos en Erase y esperamos a que termine



Cerramos la herramienta de discos, pulsamos en Reinstall macOS Sonoma y continue

Pulsamos en Continue

Pulsamos en el disco que hemos formateado y Install

La primera parte de la instalación es la copia de los ficheros necesarios:

Una vez terminada la copia de ficheros, se reiniciará automáticamente. Seleccionamos "macOS Installer" y pulsamos enter

La instalación continua

En el siguiente reinicio seleccionamos "MacOSX" o el nombre que le hemos dado al formatearlo (esto inicia el sistema instalado).
La instalación completa suele tardar entre 20 y 45 minutos, dependiendo del hardware.

Procederá a la carga del sistema recien instalado

Ya podemos seguir con la instalación, seleccionando nuestro país

La distribución del teclado

Aceptamos la privacidad

Aquí podéis elegir si queréis transferir info de otro mac, time machine, windows o nada

Saltamos el paso de appleID por ser una versión de SO muy antigua y no deja

Aceptamos los términos

Creamos el usuario

Seleccionamos el tema claro o el oscuro

Y ya tenemos nuestro Mojave operativo

11 - Optimización
Desde la consola, retiraremos el disco de instalación con el siguiente comando
qm set $VMID --delete sata1