diff --git a/EFI/opencore-osx-proxmox-vm.iso b/EFI/opencore-osx-proxmox-vm.iso index 33dfb01..f4fab88 100644 Binary files a/EFI/opencore-osx-proxmox-vm.iso and b/EFI/opencore-osx-proxmox-vm.iso differ diff --git a/README.md b/README.md index 7614ee2..7e62f19 100644 --- a/README.md +++ b/README.md @@ -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 --- diff --git a/setup b/setup index 4f52adb..51d9425 100755 --- a/setup +++ b/setup @@ -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 diff --git a/tools/macrecovery/boards.json b/tools/macrecovery/boards.json index cf22cf0..624018f 100644 --- a/tools/macrecovery/boards.json +++ b/tools/macrecovery/boards.json @@ -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" } \ No newline at end of file diff --git a/tools/macrecovery/build-image.sh b/tools/macrecovery/build-image.sh index 8dc7107..554269e 100755 --- a/tools/macrecovery/build-image.sh +++ b/tools/macrecovery/build-image.sh @@ -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 diff --git a/tools/macrecovery/macrecovery.py b/tools/macrecovery/macrecovery.py index 102da63..382fa82 100755 --- a/tools/macrecovery/macrecovery.py +++ b/tools/macrecovery/macrecovery.py @@ -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) diff --git a/tools/macrecovery/recovery_urls.txt b/tools/macrecovery/recovery_urls.txt index 2b20809..b64d1ef 100644 --- a/tools/macrecovery/recovery_urls.txt +++ b/tools/macrecovery/recovery_urls.txt @@ -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 -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 -os default (newer) - -Latest version -./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 -os latest -./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m -os latest +# Latest version +# ie. Tahoe (26) +python macrecovery.py -b Mac-27AD2F918AE68F61 -m 00000000000000000 -os latest download