Update OSX-PROXMOX to support macOS Tahoe/v26 and PVE 9.XX.XX

This commit is contained in:
Gabriel Luchina
2026-08-27 03:50:39 -03:00
parent dbab08a265
commit 7d27f3800a
7 changed files with 102 additions and 102 deletions
Binary file not shown.
+4 -4
View File
@@ -16,8 +16,7 @@ Easily install macOS on Proxmox VE with just a few steps! This guide provides th
## 🛠 Installation Guide
1. Install a **FRESH/CLEAN** version of Proxmox VE (v7.0.XX ~ 8.4.XX) - just follow the Next, Next & Finish (NNF) approach.
* Preliminary support for Proxmox VE V9.0.0 BETA.
1. Install a **FRESH/CLEAN** version of Proxmox VE (v7.X.XX ~ 9.X.XX) - just follow the Next, Next & Finish (NNF) approach.
2. Open the **Proxmox Web Console** → Navigate to `Datacenter > YOUR_HOST_NAME > Shell`.
3. Copy, paste, and execute the command below:
@@ -48,14 +47,15 @@ sudo spctl --master-disable
✅ macOS Ventura - 13
✅ macOS Sonoma - 14
✅ macOS Sequoia - 15
✅ macOS Tahoe - 26
---
## 🖥 Proxmox VE Versions Supported
✅ v7.0.XX ~ 8.4.XX
✅ v7.XX.XX ~ 9.XX.XX
### 🔄 OpenCore Version
- **April/2025 - 1.0.4** → with SIP Enabled, DMG only signed by Apple and all features of securities
- **March/2026 - 1.0.7** → with SIP Enabled, DMG only signed by Apple and all features of securities
---
+13 -12
View File
@@ -5,7 +5,7 @@
# Author: Gabriel Luchina
# https://luchina.com.br
#
# COPYRIGHT - 2021, 2022
# COPYRIGHT - 2021 -> 2026
#
# All rights reserved - You may not copy, reproduce, distribute, publish, display, perform, modify,
# create derivative works, transmit, or in any way exploit any such content, nor may you distribute
@@ -37,8 +37,8 @@ SCRIPT_DIR="/root/OSX-PROXMOX"
LOGDIR="${SCRIPT_DIR}/logs"
MAIN_LOG="${LOGDIR}/main.log"
TMPDIR="${SCRIPT_DIR}/tmp"
HACKPXVERSION="2025.07.23"
OCVERSION="1.0.4"
HACKPXVERSION="2026.08.27"
OCVERSION="1.0.7"
DEFAULT_VM_PREFIX="HACK-"
BASE_RAM_SIZE=4096
RAM_PER_CORE=512
@@ -60,6 +60,7 @@ declare -A MACOS_CONFIG=(
["6"]="Ventura|13|Mac-B4831CEBD52A0C4C|00000000000000000|1024M|virtio0"
["7"]="Sonoma|14|Mac-827FAC58A8FDFA22|00000000000000000|1450M|virtio0"
["8"]="Sequoia|15|Mac-7BA5B2D9E42DDD94|00000000000000000|1450M|virtio0"
["9"]="Tahoe|26|Mac-27AD2F918AE68F61|00000000000000000|1450M|virtio0"
)
# Display and log function
@@ -314,10 +315,10 @@ check_proxmox_version() {
fi
# Warn about preliminary Proxmox 9 support
if [[ "$version" == pve-manager/9.* ]]; then
display_and_log "Proxmox 9 is in preliminary testing. Use at your own risk." "$log_file"
sleep 5
fi
# if [[ "$version" == pve-manager/9.* ]]; then
# display_and_log "Proxmox 9 is in preliminary testing. Use at your own risk." "$log_file"
# sleep 5
# fi
}
# Function to detect CPU platform
@@ -378,7 +379,7 @@ download_recovery_image() {
mount "$loopdev" /mnt/APPLE >>"$logfile" 2>&1 || log_and_exit "Failed to mount image" "$logfile"
cd /mnt/APPLE
local recovery_args="-b $board_id -m $model_id download"
[[ "$version_name" == "Sequoia" ]] && recovery_args="$recovery_args -os latest"
[[ "$version_name" == "Tahoe" ]] && recovery_args="$recovery_args -os latest"
python3 "${SCRIPT_DIR}/tools/macrecovery/macrecovery.py" $recovery_args >>"$logfile" 2>&1 || log_and_exit "Failed to download recovery" "$logfile"
cd "$SCRIPT_DIR"
umount /mnt/APPLE >>"$logfile" 2>&1 || log_and_exit "Failed to unmount image" "$logfile"
@@ -398,13 +399,13 @@ create_vm() {
[[ ! -d "/sys/class/net/$bridge" ]] && log_and_exit "Bridge $bridge does not exist" "$logfile"
local cpu_args device_args='-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2'
if [[ "$version_name" =~ ^(Sonoma|Sequoia)$ ]]; then
if [[ "$version_name" =~ ^(Sonoma|Sequoia|Tahoe)$ ]]; then
device_args="$device_args -device qemu-xhci -device usb-kbd -device usb-tablet -global nec-usb-xhci.msi=off"
else
device_args="$device_args -device usb-kbd,bus=ehci.0,port=2 -device usb-mouse,bus=ehci.0,port=3"
fi
if [[ "$OSX_PLATFORM" == "AMD" ]]; then
if [[ "$version_name" =~ ^(Ventura|Sonoma|Sequoia)$ ]]; then
if [[ "$version_name" =~ ^(Ventura|Sonoma|Sequoia|Tahoe)$ ]]; then
cpu_args="-cpu Cascadelake-Server,vendor=GenuineIntel,+invtsc,-pcid,-hle,-rtm,-avx512f,-avx512dq,-avx512cd,-avx512bw,-avx512vl,-avx512vnni,kvm=on,vmware-cpuid-freq=on"
else
cpu_args="-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+bmi1,+bmi2,+xsave,+xsaveopt,check"
@@ -1415,7 +1416,7 @@ main_menu() {
echo "$version|$key"
done | sort -t'|' -k1,1V | cut -d'|' -f2); do
IFS='|' read -r name version _ _ _ _ <<< "${MACOS_CONFIG[$i]}"
[[ "$name" == "Sequoia" ]] && display_name="macOS Sequoia" || display_name="$name"
[[ "$name" == "Tahoe" ]] && display_name="Tahoe" || display_name="$name"
echo " $i - $display_name - $version"
done
echo
@@ -1457,7 +1458,7 @@ set_isodir
if [ ! -f "${ISODIR}/${OPENCORE_ISO}" ]; then
update_opencore_iso "0"
fi
sleep 4
sleep 2
OSX_PLATFORM=$(detect_cpu_platform)
[[ ! -e /etc/pve/qemu-server/.osx-proxmox ]] && setup_prerequisites
main_menu
+41 -41
View File
@@ -1,79 +1,79 @@
{
"Mac-EE2EBD4B90B839A8": "13.7",
"Mac-BE0E8AC46FE800CC": "11.7.10",
"Mac-EE2EBD4B90B839A8": "13.7.8",
"Mac-BE0E8AC46FE800CC": "11.7.11",
"Mac-9AE82516C7C6B903": "12.7.6",
"Mac-942452F5819B1C1B": "10.13.6",
"Mac-942C5DF58193131B": "10.13.6",
"Mac-C08A6BB70A942AC2": "10.13.6",
"Mac-742912EFDBEE19B3": "10.13.6",
"Mac-66F35F19FE2A0D05": "10.15.7",
"Mac-2E6FAB96566FE58C": "10.15.7",
"Mac-35C1E88140C3E6CF": "11.7.10",
"Mac-7DF21CB3ED6977E5": "11.7.10",
"Mac-66F35F19FE2A0D05": "10.15.8",
"Mac-2E6FAB96566FE58C": "10.15.8",
"Mac-35C1E88140C3E6CF": "11.7.11",
"Mac-7DF21CB3ED6977E5": "11.7.11",
"Mac-9F18E312C5C2BF0B": "12.7.6",
"Mac-937CB26E2E02BB01": "12.7.6",
"Mac-827FAC58A8FDFA22": "14.7",
"Mac-226CB3C6A851A671": "14.7",
"Mac-0CFF9C7C2B63DF8D": "latest",
"Mac-C3EC7CD22292981F": "10.15.7",
"Mac-AFD8A9D944EA4843": "10.15.7",
"Mac-189A3D4F975D5FFC": "11.7.10",
"Mac-3CBD00234E554E41": "11.7.10",
"Mac-2BD1B31983FE1663": "11.7.10",
"Mac-827FAC58A8FDFA22": "14.8.4",
"Mac-226CB3C6A851A671": "14.8.4",
"Mac-0CFF9C7C2B63DF8D": "15.7.4",
"Mac-C3EC7CD22292981F": "10.15.8",
"Mac-AFD8A9D944EA4843": "10.15.8",
"Mac-189A3D4F975D5FFC": "11.7.11",
"Mac-3CBD00234E554E41": "11.7.11",
"Mac-2BD1B31983FE1663": "11.7.11",
"Mac-06F11FD93F0323C5": "12.7.6",
"Mac-06F11F11946D27C5": "12.7.6",
"Mac-E43C1C25D4880AD6": "12.7.6",
"Mac-473D31EABEB93F9B": "12.7.6",
"Mac-66E35819EE2D0D05": "12.7.6",
"Mac-A5C67F76ED83108C": "12.7.6",
"Mac-B4831CEBD52A0C4C": "13.7",
"Mac-CAD6701F7CEA0921": "13.7",
"Mac-551B86E5744E2388": "13.7",
"Mac-937A206F2EE63C01": "latest",
"Mac-827FB448E656EC26": "latest",
"Mac-1E7E29AD0135F9BC": "latest",
"Mac-53FDB3D8DB8CA971": "latest",
"Mac-B4831CEBD52A0C4C": "13.7.8",
"Mac-CAD6701F7CEA0921": "13.7.8",
"Mac-551B86E5744E2388": "13.7.8",
"Mac-937A206F2EE63C01": "15.7.4",
"Mac-827FB448E656EC26": "15.7.4",
"Mac-1E7E29AD0135F9BC": "15.7.4",
"Mac-53FDB3D8DB8CA971": "15.7.4",
"Mac-E1008331FDC96864": "latest",
"Mac-5F9802EFE386AA28": "latest",
"Mac-E7203C0F68AA0004": "latest",
"Mac-E7203C0F68AA0004": "15.7.4",
"Mac-A61BADE1FDAD7B05": "latest",
"Mac-F22589C8": "10.13.6",
"Mac-94245B3640C91C81": "10.13.6",
"Mac-94245A3940C91C80": "10.13.6",
"Mac-942459F5819B171B": "10.13.6",
"Mac-4B7AC7E43945597E": "10.15.7",
"Mac-6F01561E16C75D06": "10.15.7",
"Mac-4B7AC7E43945597E": "10.15.8",
"Mac-6F01561E16C75D06": "10.15.8",
"Mac-F60DEB81FF30ACF6": "12.7.6",
"Mac-27AD2F918AE68F61": "latest",
"Mac-F2208EC8": "10.13.6",
"Mac-8ED6AF5B48C039E1": "10.13.6",
"Mac-4BC72D62AD45599E": "10.13.6",
"Mac-7BA5B2794B2CDB12": "10.13.6",
"Mac-031AEE4D24BFF0B1": "10.15.7",
"Mac-F65AE981FFA204ED": "10.15.7",
"Mac-031AEE4D24BFF0B1": "10.15.8",
"Mac-F65AE981FFA204ED": "10.15.8",
"Mac-35C5E08120C7EEAF": "12.7.6",
"Mac-7BA5B2DFE22DDD8C": "latest",
"Mac-7BA5B2DFE22DDD8C": "15.7.4",
"Mac-942B5BF58194151B": "10.13.6",
"Mac-942B59F58194171B": "10.13.6",
"Mac-00BE6ED71E35EB86": "10.15.7",
"Mac-FC02E91DDD3FA6A4": "10.15.7",
"Mac-7DF2A3B5E5D671ED": "10.15.7",
"Mac-031B6874CF7F642A": "10.15.7",
"Mac-27ADBB7B4CEE8E61": "10.15.7",
"Mac-77EB7D7DAF985301": "10.15.7",
"Mac-81E3E92DD6088272": "11.7.10",
"Mac-42FD25EABCABB274": "11.7.10",
"Mac-00BE6ED71E35EB86": "10.15.8",
"Mac-FC02E91DDD3FA6A4": "10.15.8",
"Mac-7DF2A3B5E5D671ED": "10.15.8",
"Mac-031B6874CF7F642A": "10.15.8",
"Mac-27ADBB7B4CEE8E61": "10.15.8",
"Mac-77EB7D7DAF985301": "10.15.8",
"Mac-81E3E92DD6088272": "11.7.11",
"Mac-42FD25EABCABB274": "11.7.11",
"Mac-A369DDC4E67F1C45": "12.7.6",
"Mac-FFE5EF870D7BA81A": "12.7.6",
"Mac-DB15BD556843C820": "12.7.6",
"Mac-65CE76090165799A": "12.7.6",
"Mac-B809C3757DA9BB8D": "12.7.6",
"Mac-4B682C642B45593E": "13.7",
"Mac-77F17D7DA9285301": "13.7",
"Mac-BE088AF8C5EB4FA2": "13.7",
"Mac-AA95B1DDAB278B95": "latest",
"Mac-63001698E7A34814": "latest",
"Mac-4B682C642B45593E": "13.7.8",
"Mac-77F17D7DA9285301": "13.7.8",
"Mac-BE088AF8C5EB4FA2": "13.7.8",
"Mac-AA95B1DDAB278B95": "15.7.4",
"Mac-63001698E7A34814": "15.7.4",
"Mac-CFF7D910A743CAAF": "latest",
"Mac-AF89B6D9451A490B": "latest",
"Mac-7BA5B2D9E42DDD94": "latest"
"Mac-7BA5B2D9E42DDD94": "15.7.4"
}
+9 -3
View File
@@ -1,7 +1,13 @@
#!/bin/bash -e
rm -rf Recovery.RO.dmg Recovery.RO.raw Recovery.dmg.sparseimage
hdiutil create -size 800m -layout "UNIVERSAL HD" -type SPARSE -o Recovery.dmg
if [ -z "$1" ]; then
FORMAT="raw"
else
FORMAT="${1}"
fi
rm -rf Recovery.RO.dmg Recovery.raw "Recovery.${FORMAT}" Recovery.dmg.sparseimage
hdiutil create -size 900m -layout "UNIVERSAL HD" -type SPARSE -o Recovery.dmg
newDevice=$(hdiutil attach -nomount Recovery.dmg.sparseimage | head -n 1 | awk '{print $1}')
echo newdevice "$newDevice"
diskutil partitionDisk "${newDevice}" 1 MBR fat32 RECOVERY R
@@ -14,5 +20,5 @@ diskutil umount disk"${N}"s1
hdiutil detach "$newDevice"
hdiutil convert -format UDZO Recovery.dmg.sparseimage -o Recovery.RO.dmg
rm Recovery.dmg.sparseimage
qemu-img convert -f dmg -O raw Recovery.RO.dmg Recovery.raw
qemu-img convert -f dmg -O "${FORMAT}" Recovery.RO.dmg "Recovery.${FORMAT}"
rm Recovery.RO.dmg
+2 -2
View File
@@ -225,7 +225,7 @@ def save_image(url, sess, filename='', directory=''):
break
fh.write(chunk)
size += len(chunk)
terminalsize = 80
terminalsize = max(os.get_terminal_size().columns - TERMINAL_MARGIN, 0)
if oldterminalsize != terminalsize:
print(f'\r{"":<{terminalsize}}', end='')
oldterminalsize = terminalsize
@@ -250,7 +250,7 @@ def verify_image(dmgpath, cnkpath):
with open(dmgpath, 'rb') as dmgf:
for cnkcount, (cnksize, cnkhash) in enumerate(verify_chunklist(cnkpath), 1):
terminalsize = 80
terminalsize = max(os.get_terminal_size().columns - TERMINAL_MARGIN, 0)
print(f'\r{f"Chunk {cnkcount} ({cnksize} bytes)":<{terminalsize}}', end='')
sys.stdout.flush()
cnk = dmgf.read(cnksize)
+33 -40
View File
@@ -1,54 +1,47 @@
Lion
./macrecovery.py -b Mac-2E6FAB96566FE58C -m 00000000000F25Y00
./macrecovery.py -b Mac-C3EC7CD22292981F -m 00000000000F0HM00
# Lion (10.7):
python macrecovery.py -b Mac-2E6FAB96566FE58C -m 00000000000F25Y00 download
python macrecovery.py -b Mac-C3EC7CD22292981F -m 00000000000F0HM00 download
Mountain Lion:
./macrecovery.py -b Mac-7DF2A3B5E5D671ED -m 00000000000F65100
# Mountain Lion (10.8):
python macrecovery.py -b Mac-7DF2A3B5E5D671ED -m 00000000000F65100 download
Mavericks
./macrecovery.py -b Mac-F60DEB81FF30ACF6 -m 00000000000FNN100
# Mavericks (10.9):
python macrecovery.py -b Mac-F60DEB81FF30ACF6 -m 00000000000FNN100 download
Yosemite:
./macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000GDVW00
# Yosemite (10.10):
python macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000GDVW00 download
El Capitan
./macrecovery.py -b Mac-FFE5EF870D7BA81A -m 00000000000GQRX00
# El Capitan (10.11):
python macrecovery.py -b Mac-FFE5EF870D7BA81A -m 00000000000GQRX00 download
Sierra
./macrecovery.py -b Mac-77F17D7DA9285301 -m 00000000000J0DX00
# Sierra (10.12):
python macrecovery.py -b Mac-77F17D7DA9285301 -m 00000000000J0DX00 download
High Sierra
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000J80300
./macrecovery.py -b Mac-BE088AF8C5EB4FA2 -m 00000000000J80300
# High Sierra (10.13)
python macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000J80300 download
python macrecovery.py -b Mac-BE088AF8C5EB4FA2 -m 00000000000J80300 download
Mojave
./macrecovery.py -b Mac-7BA5B2DFE22DDD8C -m 00000000000KXPG00
# Mojave (10.14)
python macrecovery.py -b Mac-7BA5B2DFE22DDD8C -m 00000000000KXPG00 download
Catalina
./macrecovery.py -b Mac-CFF7D910A743CAAF -m 00000000000PHCD00
./macrecovery.py -b Mac-00BE6ED71E35EB86 -m 00000000000000000
# Catalina (10.15)
python macrecovery.py -b Mac-00BE6ED71E35EB86 -m 00000000000000000 download
Big Sur
./macrecovery.py -b Mac-2BD1B31983FE1663 -m 00000000000000000
# Big Sur (11)
python macrecovery.py -b Mac-42FD25EABCABB274 -m 00000000000000000 download
Monterey
./macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000
# Monterey (12)
python macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000 download
Ventura
./macrecovery.py -b Mac-B4831CEBD52A0C4C -m 00000000000000000
# Ventura (13)
python macrecovery.py -b Mac-EE2EBD4B90B839A8 -m 00000000000000000 download
Sonoma
./macrecovery.py -b Mac-827FAC58A8FDFA22 -m 00000000000000000
# Sonoma (14)
python macrecovery.py -b Mac-827FAC58A8FDFA22 -m 00000000000000000 download
Diagnostics
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 -diag
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000JG3600 -diag
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 <real MLB> -diag
# Sequoia (15)
python macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 download
Default version
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000JG3600 (oldest)
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m <real MLB> -os default (newer)
Latest version
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 -os latest
./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m <real MLB> -os latest
# Latest version
# ie. Tahoe (26)
python macrecovery.py -b Mac-27AD2F918AE68F61 -m 00000000000000000 -os latest download