diff --git a/.gitignore b/.gitignore
index bcdaa24..e585b21 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,4 +49,5 @@ boot-noUSB.sh
resources/python/__pycache__/
resources/python/pypresence/__pycache__/
resources/python/smbios/Scripts/__pycache__
-resources/python/cpuinfo/__pycache__/
\ No newline at end of file
+resources/python/cpuinfo/__pycache__/
+blobs/user/.noBaseSystemReminder
diff --git a/.version b/.version
index d33c3a2..aac2dac 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-0.12.0
\ No newline at end of file
+0.12.1
\ No newline at end of file
diff --git a/README.md b/README.md
index 2f3424f..a6e4a89 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-### v0.12.0
+### v0.12.1
Helping you build the ultimate macOS virtual machine, powered by KVM.
@@ -8,22 +8,28 @@ Helping you build the ultimate macOS virtual machine, powered by KVM.
-[![ULTMOS VERSION](https://img.shields.io/github/v/release/Coopydood/ultimate-macOS-KVM?style=for-the-badge&color=1793D1&logo=github&logoColor=white&label=)](https://github.com/Coopydood/ultimate-macOS-KVM/releases/latest) [![GitHub](https://img.shields.io/github/license/Coopydood/ultimate-macOS-KVM?label=Licence&logo=unlicense&logoColor=white&style=for-the-badge)](https://github.com/Coopydood/ultimate-macOS-KVM/blob/main/LICENSE) [![GitHub repo size](https://img.shields.io/github/repo-size/Coopydood/ultimate-macOS-KVM?color=07b55b&label=Size&logo=envoy-proxy&logoColor=white&style=for-the-badge)](https://github.com/Coopydood/ultimate-macOS-KVM) [![Discord](https://img.shields.io/discord/574943603466436628?color=7d86ff&label=Discord&logo=discord&logoColor=white&style=for-the-badge)](https://sl.coopydood.com/discord)
+[![ULTMOS VERSION](https://img.shields.io/github/v/release/Coopydood/ultimate-macOS-KVM?style=for-the-badge&color=1793D1&logo=github&logoColor=white&label=)](https://github.com/Coopydood/ultimate-macOS-KVM/releases/latest) [![GitHub](https://img.shields.io/github/license/Coopydood/ultimate-macOS-KVM?label=Licence&logo=unlicense&logoColor=white&style=for-the-badge)](https://github.com/Coopydood/ultimate-macOS-KVM/blob/main/LICENSE) [![GitHub repo size](https://img.shields.io/github/repo-size/Coopydood/ultimate-macOS-KVM?color=07b55b&label=Size&logo=envoy-proxy&logoColor=white&style=for-the-badge)](https://github.com/Coopydood/ultimate-macOS-KVM) [![Discord](https://img.shields.io/discord/574943603466436628?color=7d86ff&label=Discord&logo=discord&logoColor=white&style=for-the-badge)](https://discord.gg/WzWkSsT)
***
-
+
-
macOS Sequoia Support Coming Soon
+
macOS Sequoia Support Available Now
macOS Sequoia has not yet been tested extensively, but it has been **confirmed to install and boot with the current version of ULTMOS** on the latest macOS developer beta.
-Please feel free to try out the macOS Sequoia developer beta with ULTMOS and leave feedback on how it went!
+
+
+**AutoPilot now has an additional option for macOS Sequoia beta!** Please feel free to try out the macOS Sequoia beta with ULTMOS and leave feedback on how it went!
However, you should **NOT** use macOS Sequoia as your main virtual setup - and should be used for test purposes only. You have been warned!
-Preliminary built-in support for this version will be added to the project shortly.
+You can download the latest recovery image below for use with AutoPilot. The file is hosted on the [Archive.org website](https://archive.org/details/macos-sequoia).
+
+
+
+
BaseSystem.dmg (1.3 GB) Or, you can also download the torrent.
***
@@ -46,6 +52,9 @@ Scripts? Configs? QEMU arguments? A *"qcow"* file? *Moo?* If you need a little h
## πγFeatures
+Experience the latest macOS has to offer with built-in support from macOS High Sierra to macOS Sonoma, and even try out the latest macOS Sequoia beta!
+
Automatically generates a valid, customised, and ready-to-use QEMU config script in seconds.
@@ -107,6 +116,37 @@ Here's a table with my best judgment on minimum, recommended, and best system re
> [!NOTE]
> The recommended and optimal specifications are for reference only.
+
+
macOS Guest Feature Support Matrix
+
+| | | | | | | | | |
+|--------------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|:---------:|
+| **AutoPilot** | β | β | β | β | β | β | β | β |
+| **Auto Download** | β | β | β | β | β | β | β | β |
+| **Online Install** | β | β | β | β | β | β | β | β |
+| **Offline Install** | β | β | β | β | β | β | β | β |
+| **QEMU Script** | β | β | β | β | β | βΒΉ | βΒΉ | βΒΉ |
+| **Virt Manager** | β | β | β | β | β | ?Β² | ?Β² | ?Β² |
+| **GPU Passthrough** | β | β | β | β | β | βΒΉ | βΒΉ | βΒΉ |
+| **VirtIO Networking** | β | β | ?Β³ | β | β | β | β | β |
+| **VirtIO Storage** | β | β | β | β | β | β | β | β |
+
+
+ΒΉ If trying to boot macOS Ventura and later with GPU passthrough, you may need to do so using Virtual Machine Manager. The QEMU script may have issues with GPU passthrough.
+
+Β² macOS Ventura and later have been known to have issues booting *without* GPU passthrough in Virtual Machine Manager.
+
+Β³ I have no idea whether or not VirtIO networking works on macOS Catalina.
+
+
+
+> [!NOTE]
+> This table is a very **loose** representation of the current state of macOS versions and their support with ULTMOS / QEMU / KVM. It's more for reference and shouldn't be taken seriously.
+>
+> If you find something is wrongly marked, please feel free to update it.
+
+
+
***
## π¦γDependencies
diff --git a/docs/SupportedOSes.md b/docs/SupportedOSes.md
index bba10b6..f063ec6 100644
--- a/docs/SupportedOSes.md
+++ b/docs/SupportedOSes.md
@@ -2,9 +2,9 @@
-
+
-
macOS Sonoma 14.4
+
macOS Sonoma 14.5
This project currently supports the latest version of macOS Sonoma, as well as every prior version down to macOS High Sierra.
@@ -25,6 +25,11 @@ The option to use legacy versions is available, but no support will be provided
macOS High Sierra
+#### Pre-Release
+
+
+
macOS Sequoia Beta
+
#### Legacy
@@ -44,3 +49,36 @@ The option to use legacy versions is available, but no support will be provided
+
+
+
+
+
+## Feature Table
+
+
+This table is a very **loose** representation of the current state of macOS versions and their support with ULTMOS / QEMU / KVM. It's more for reference and shouldn't be taken seriously.
+
+If you find something is wrongly marked, please feel free to update it.
+
+
+
+| | | | | | | | | |
+|--------------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|:---------:|
+| **AutoPilot** | β | β | β | β | β | β | β | β |
+| **Auto Download** | β | β | β | β | β | β | β | β |
+| **Online Install** | β | β | β | β | β | β | β | β |
+| **Offline Install** | β | β | β | β | β | β | β | β |
+| **QEMU Script** | β | β | β | β | β | βΒΉ | βΒΉ | βΒΉ |
+| **Virt Manager** | β | β | β | β | β | ?Β² | ?Β² | ?Β² |
+| **GPU Passthrough** | β | β | β | β | β | βΒΉ | βΒΉ | βΒΉ |
+| **VirtIO Networking** | β | β | ?Β³ | β | β | β | β | β |
+| **VirtIO Storage** | β | β | β | β | β | β | β | β |
+
+
+ΒΉ If trying to boot macOS Ventura and later with GPU passthrough, you may need to do so using Virtual Machine Manager. The QEMU script may have issues with GPU passthrough.
+
+Β² macOS Ventura and later have been known to have issues booting *without* GPU passthrough in Virtual Machine Manager.
+
+Β³ I have no idea whether or not VirtIO networking works on macOS Catalina.
+
diff --git a/docs/changelogs/v0-12-1.md b/docs/changelogs/v0-12-1.md
new file mode 100644
index 0000000..c374474
--- /dev/null
+++ b/docs/changelogs/v0-12-1.md
@@ -0,0 +1,22 @@
+## v0.12.1
+
+### Minor update β’ 20/06/2024
+
+This update includes the following features / fixes / changes:
+
+- Preliminary macOS Sequoia beta support
+- Added macOS Sequoia beta support to Discord rich presence
+- Added temporary download link for macOS Sequoia beta BaseSystem to readme header notification (Button design by @eversiege)
+- Added a dialog allowing the user to automatically have the BaseSystem removed once a completed install is detected
+- Fixed an issue where the OpenCore restore tool would fail
+- Fixed an issue where the XML converter would not convert physical disks properly
+- The BaseSystem is no longer included in the base domain XML file; it is now added on detection
+- *macOS Sequhuehuehuehueio*
+
+To see individual code changes, visit the project's commits page at
+
+> [!NOTE]
+> This release has multiple authors. Attributions for contributor changes are included in relevant lines above.
+
+> [!NOTE]
+> Remember, commits by Coopydood will always be signed as **4CD28348A3DD016F** or GitHub's public key.
diff --git a/main.py b/main.py
index 6579528..2ff7b9c 100755
--- a/main.py
+++ b/main.py
@@ -48,15 +48,18 @@
global VALID_FILE
global REQUIRES_SUDO
global discordRPC
+global baseSystemNotifArmed
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
apFilePath = ""
procFlow = 1
discordRPC = 1
+baseSystemNotifArmed = False
+
version = open("./.version")
version = version.read()
@@ -76,7 +79,8 @@
def startup():
global detectChoice
-
+ global apFile
+ global apFilePath
detectChoice = None
if not os.path.exists("resources/script_store/main.py"): # BACKUP ORIGINAL FILES TO STORE
@@ -108,6 +112,7 @@ def startup():
if os.path.exists("./blobs/user/USR_CFG.apb"):
global apFilePath
global apFilePathNoPT
+ global apFile
global apFilePathNoUSB
global macOSVer
global mOSString
@@ -132,10 +137,11 @@ def startup():
global VALID_FILE
global VALID_FILE_NOPT
global VALID_FILE_NOUSB
-
+ global baseSystemNotifArmed
VALID_FILE = 0
VALID_FILE_NOPT = 0
VALID_FILE_NOUSB = 0
+
apFile = open("./"+apFilePath,"r")
@@ -153,9 +159,18 @@ def startup():
apFilePathNoPT = apFilePath.replace(".sh","-noPT.sh")
apFilePathNoUSB = apFilePath.replace(".sh","-noUSB.sh")
- if "APC-RUN" in apFile.read():
+ apFileM = apFile.read()
+
+ if "APC-RUN" in apFileM:
VALID_FILE = 1
-
+
+ if "#-drive id=BaseSystem,if=none,file=\"$REPO_PATH/BaseSystem.img\",format=raw" not in apFileM and "-drive id=BaseSystem,if=none,file=\"$REPO_PATH/BaseSystem.img\",format=raw" in apFileM and "HDD_PATH=\"/dev/disk/" not in apFileM:
+ if os.path.exists("./blobs/user/USR_HDD_PATH.apb"):
+ hddPath = open("./blobs/user/USR_HDD_PATH.apb")
+ hddPath = hddPath.read()
+ hddPath = hddPath.replace("$REPO_PATH",os.path.realpath(os.curdir))
+ if (os.path.getsize(hddPath)) > 22177079296 and not os.path.exists("./blobs/user/.noBaseSystemReminder"):
+ baseSystemNotifArmed = True
#REQUIRES_SUDO = 1 # UNCOMMENT FOR DEBUGGING
if REQUIRES_SUDO == 1:
@@ -211,7 +226,40 @@ def startup():
def clear(): print("\n" * 150)
-
+def baseSystemAlert():
+ global apFilePath
+ clear()
+ print("\n\n "+color.BOLD+color.GREEN+"FINISHED INSTALLING MACOS?"+color.END,"")
+ print(" Finished install detected\n")
+ print(" The assistant has detected that your macOS installation \n may be complete. Would you like me to remove the install\n media from your config file for you?\n\n This stops the \"macOS Base System\" boot entry from appearing.\n")
+ #print(color.YELLOW+color.BOLD+"\n β "+color.END+color.BOLD+"WARNING"+color.END+"\n This action requires superuser permissions.\n"+color.END)
+ print(color.BOLD+" 1. Remove BaseSystem"+color.END)
+ print(color.END+" Detaches the macOS installer\n from the",apFilePath+" file\n")
+ print(color.END+" 2. Not now")
+ print(color.END+" 3. Don't remind me again\n")
+ detectChoice5 = str(input(color.BOLD+"Select> "+color.END))
+
+ if detectChoice5 == "1":
+ with open("./"+apFilePath,"r") as apFile:
+ apFileM = apFile.read()
+ apFileM = apFileM.replace("-drive id=BaseSystem,if=none,file=\"$REPO_PATH/BaseSystem.img\",format=raw\n-device ide-hd,bus=sata.4,drive=BaseSystem","#-drive id=BaseSystem,if=none,file=\"$REPO_PATH/BaseSystem.img\",format=raw\n#-device ide-hd,bus=sata.4,drive=BaseSystem")
+ apFile.close()
+ time.sleep(1)
+ with open("./"+apFilePath,"w") as apFile:
+ apFile.write(apFileM)
+ apFile.close()
+ clear()
+ print("\n\n "+color.BOLD+color.GREEN+"DONE"+color.END,"")
+ print(" BaseSystem removed successfully\n\n\n\n\n\n\n\n")
+ time.sleep(3)
+ clear()
+ elif detectChoice5 == "3":
+ with open("./blobs/user/.noBaseSystemReminder","w") as remindFile:
+ remindFile.write(" ")
+ remindFile.close()
+ clear()
+ else:
+ clear()
os.system("chmod +x -R scripts/*.py")
os.system("chmod +x -R scripts/extras/*.py")
@@ -291,8 +339,9 @@ def clear(): print("\n" * 150)
else:
clear()
+
startup()
-
+ #baseSystemAlert() # uncomment to always trigger notification
if detectChoice == "1":
os.system('./scripts/autopilot.py')
elif detectChoice == "2":
@@ -345,11 +394,17 @@ def clear(): print("\n" * 150)
subprocess.Popen(["python3","./scripts/drpc.py","--os",macOSVer])
if REQUIRES_SUDO == 1:
print(color.YELLOW+color.BOLD+"\n β "+color.END+color.BOLD+"SUPERUSER PRIVILEGES"+color.END+"\n This script uses physical device passthrough,\n and needs superuser privileges to run.\n\n Press CTRL+C to cancel.\n"+color.END)
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("sudo ./"+apFilePath+" -d 0")
else:
os.system("sudo ./"+apFilePath)
+
+
else:
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("./"+apFilePath+" -d 0")
else:
@@ -430,11 +485,15 @@ def clear(): print("\n" * 150)
subprocess.Popen(["python3","./scripts/drpc.py","--os",macOSVer])
if REQUIRES_SUDO == 1:
print(color.YELLOW+color.BOLD+"\n β "+color.END+color.BOLD+"SUPERUSER PRIVILEGES"+color.END+"\n This script uses physical device passthrough,\n and needs superuser privileges to run.\n\n Press CTRL+C to cancel.\n"+color.END)
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("sudo ./"+apFilePath+" -d 0")
else:
os.system("sudo ./"+apFilePath)
else:
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("./"+apFilePath+" -d 0")
else:
@@ -468,11 +527,15 @@ def clear(): print("\n" * 150)
subprocess.Popen(["python3","./scripts/drpc.py","--os",macOSVer])
if REQUIRES_SUDO == 1:
print(color.YELLOW+color.BOLD+"\n β "+color.END+color.BOLD+"SUPERUSER PRIVILEGES"+color.END+"\n This script uses physical device passthrough,\n and needs superuser privileges to run.\n\n Press CTRL+C to cancel.\n"+color.END)
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("sudo ./"+apFilePathNoPT+" -d 0")
else:
os.system("sudo ./"+apFilePathNoPT)
else:
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("./"+apFilePathNoPT+" -d 0")
else:
@@ -506,11 +569,15 @@ def clear(): print("\n" * 150)
subprocess.Popen(["python3","./scripts/drpc.py","--os",macOSVer])
if REQUIRES_SUDO == 1:
print(color.YELLOW+color.BOLD+"\n β "+color.END+color.BOLD+"SUPERUSER PRIVILEGES"+color.END+"\n This script uses physical device passthrough,\n and needs superuser privileges to run.\n\n Press CTRL+C to cancel.\n"+color.END)
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("sudo ./"+apFilePathNoUSB+" -d 0")
else:
os.system("sudo ./"+apFilePathNoUSB)
else:
+ if baseSystemNotifArmed == True:
+ baseSystemAlert()
if discordRPC == 0:
os.system("./"+apFilePathNoUSB+" -d 0")
else:
diff --git a/resources/.upgrade b/resources/.upgrade
index 01d6c12..95a4b7e 100644
--- a/resources/.upgrade
+++ b/resources/.upgrade
@@ -7,4 +7,5 @@
0.11.2
0.11.3
0.11.4
-0.12.0
\ No newline at end of file
+0.12.0
+0.12.1
\ No newline at end of file
diff --git a/resources/baseDomain b/resources/baseDomain
index f525ee2..3cc1650 100644
--- a/resources/baseDomain
+++ b/resources/baseDomain
@@ -74,16 +74,7 @@
-
-
-
-
-
-
-
-
-
-
+
diff --git a/scripts/autopilot.py b/scripts/autopilot.py
index c5917db..b19d8b0 100755
--- a/scripts/autopilot.py
+++ b/scripts/autopilot.py
@@ -59,8 +59,8 @@
args = parser.parse_args()
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
###############################
@@ -1013,6 +1013,10 @@ def stage12():
if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012:
print(color.YELLOW+"\n β "+color.END+color.BOLD+" Download flow disabled for legacy versions.\n You must download an image manually."+color.END)
+ if USR_TARGET_OS >= 15:
+ print(color.YELLOW+"\n β "+color.END+color.BOLD+" Download flow disabled for beta versions.\n You must download an image manually."+color.END)
+
+
if customValue == 1:
cpydLog("info",str("Custom value requested, setting up"))
# print(color.BOLD+color.PURPLE+"\n FORMAT:"+color.YELLOW+""+color.END+color.BOLD,""+color.YELLOW+".img"+color.END+"\n Enter a custom value.\n \n ")
@@ -1030,7 +1034,7 @@ def stage12():
blob.close()
stage13()
else:
- if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012:
+ if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012 or USR_TARGET_OS >= 15:
print(color.END+color.GRAY+"\n 1. Download from Apple..."+color.END)
print(color.BOLD+" 2. Select existing...")
else:
@@ -2214,10 +2218,13 @@ def stage3():
USR_TARGET_OS_NAME = "Ventura"
elif USR_TARGET_OS == 14:
USR_TARGET_OS_NAME = "Sonoma"
+ elif USR_TARGET_OS == 15:
+ USR_TARGET_OS_NAME = "Sequoia Beta"
global osIcon
osIcon = "ap-"+USR_TARGET_OS_NAME.lower().replace(" ","")
+ osIcon = "ap-"+USR_TARGET_OS_NAME.lower().replace(" beta","")
if int(USR_TARGET_OS) < 1013 and int(USR_TARGET_OS) >= 100:
osIcon = "ap-legacy"
@@ -2233,7 +2240,9 @@ def stage3():
blob.write(str(USR_TARGET_OS_NAME))
blob.close()
- if USR_TARGET_OS == 14:
+ if USR_TARGET_OS == 15:
+ USR_TARGET_OS_ID = "sequoia"
+ elif USR_TARGET_OS == 14:
USR_TARGET_OS_ID = "sonoma"
elif USR_TARGET_OS == 13:
USR_TARGET_OS_ID = "ventura"
@@ -2386,8 +2395,9 @@ def stage2():
print(color.END+" 5. Catalina (10.15)")
print(color.END+" 6. Mojave (10.14)")
print(color.END+" 7. High Sierra (10.13)\n")
-
+
print(color.END+" 8. Legacy versions...\n")
+ print(color.END+" 9. Sequoia Beta (15)\n")
customInput = str(input(color.BOLD+"Select> "+color.END))
if customInput == "1":
@@ -2407,6 +2417,8 @@ def stage2():
elif customInput == "8":
customValue = 2
stage2()
+ elif customInput == "9":
+ customInput = 15
else:
customValue = 1
diff --git a/scripts/drpc.py b/scripts/drpc.py
index dcf4abb..cfb2725 100755
--- a/scripts/drpc.py
+++ b/scripts/drpc.py
@@ -70,7 +70,10 @@
projectVer = "Powered by ULTMOS v"+version
-if osVer is not None and osVer == "Sierra" or osVer == "High Sierra" or osVer == "Mojave" or osVer == "Catalina" or osVer == "Big Sur" or osVer == "Monterey" or osVer == "Ventura" or osVer == "Sonoma":
+if osVer is not None:
+ if "Beta" in osVer: osVer = osVer.replace(" Beta","")
+
+if osVer is not None and osVer == "Sierra" or osVer == "High Sierra" or osVer == "Mojave" or osVer == "Catalina" or osVer == "Big Sur" or osVer == "Monterey" or osVer == "Ventura" or osVer == "Sonoma" or osVer == "Sequoia":
osName = "macOS "+osVer
elif osVer is not None:
osName = "Mac OS X "+osVer
@@ -86,11 +89,16 @@
#print(osOpt)
-if osOpt != "macos-highsierra" and osOpt != "macos-mojave" and osOpt != "macos-catalina" and osOpt != "macos-bigsur" and osOpt != "macos-monterey" and osOpt != "macos-ventura" and osOpt != "macos-sonoma" and osOpt != "macos-sierra" and osOpt != "macos-elcapitan" and osOpt != "macos-yosemite" and osOpt != "macos-mavericks" and osOpt != "macos-mountainlion" and osOpt != "macos-lion" and osOpt != "macos-snowleopard" and osOpt != "macos-leopard":
+if osOpt != "macos-highsierra" and osOpt != "macos-mojave" and osOpt != "macos-catalina" and osOpt != "macos-bigsur" and osOpt != "macos-monterey" and osOpt != "macos-ventura" and osOpt != "macos-sonoma" and osOpt != "macos-sequoia" and osOpt != "macos-sierra" and osOpt != "macos-elcapitan" and osOpt != "macos-yosemite" and osOpt != "macos-mavericks" and osOpt != "macos-mountainlion" and osOpt != "macos-lion" and osOpt != "macos-snowleopard" and osOpt != "macos-leopard":
osOpt = "macos-unknown" # arm large image to use the unknown asset if valid macOS version can't be detected
+if osName == "macOS Sequoia": osName = "macOS Sequoia Beta"
+
osName1 = osName
+
+
+
if show != "default":
smolImage = osOpt
osOpt = show
diff --git a/scripts/extras.py b/scripts/extras.py
index 266dbde..ea4f72d 100755
--- a/scripts/extras.py
+++ b/scripts/extras.py
@@ -26,8 +26,8 @@
sys.path.insert(0, 'scripts')
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
version = open("./.version")
diff --git a/scripts/extras/backup-assist.py b/scripts/extras/backup-assist.py
index 148307b..6adcb09 100755
--- a/scripts/extras/backup-assist.py
+++ b/scripts/extras/backup-assist.py
@@ -24,8 +24,8 @@
detectChoice = 1
-latestOSName = "Ventura"
-latestOSVer = "13"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
class color:
diff --git a/scripts/extras/boot-args.py b/scripts/extras/boot-args.py
index c82b78b..0c37c18 100755
--- a/scripts/extras/boot-args.py
+++ b/scripts/extras/boot-args.py
@@ -23,8 +23,8 @@
from cpydColours import color
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
bypassMenus = 0
diff --git a/scripts/extras/cpyd-tui.py b/scripts/extras/cpyd-tui.py
index 8a9dd3a..e4139e9 100755
--- a/scripts/extras/cpyd-tui.py
+++ b/scripts/extras/cpyd-tui.py
@@ -25,8 +25,8 @@
from cpydColours import color
detectChoice = 1
-latestOSName = "Ventura"
-latestOSVer = "13"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
diff --git a/scripts/extras/dump-vbios.py b/scripts/extras/dump-vbios.py
index ac892ef..47414f2 100644
--- a/scripts/extras/dump-vbios.py
+++ b/scripts/extras/dump-vbios.py
@@ -25,8 +25,8 @@
from cpydColours import color
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
diff --git a/scripts/extras/gpu-check.py b/scripts/extras/gpu-check.py
index 1b5e1f1..b831116 100755
--- a/scripts/extras/gpu-check.py
+++ b/scripts/extras/gpu-check.py
@@ -36,8 +36,8 @@
args = parser.parse_args()
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
diff --git a/scripts/extras/xml-convert.py b/scripts/extras/xml-convert.py
index 9a6bb19..38e76b7 100755
--- a/scripts/extras/xml-convert.py
+++ b/scripts/extras/xml-convert.py
@@ -39,8 +39,8 @@
detectChoice = "1"
detectChoiceM = ""
-latestOSName = "Ventura"
-latestOSVer = "13"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
global cpydPassthrough
@@ -174,7 +174,7 @@ def convertBrains():
global apVars
global useBlobs
apFileS = source.read()
- apVars = ["macOS","macOS",apFilePath,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+ apVars = ["macOS","macOS",apFilePath,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
if autodetect == False or args.noblobs is True:
@@ -207,8 +207,8 @@ def convertBrains():
# REQUIRES FL 7
if os.path.exists("./blobs/user/USR_HDD_ISPHYSICAL.apb"):
- with open("./blobs/user/USR_HDD_ISPHYSICAL.apb") as blob: apVars[21] = str(blob.read())
- USR_HDD_ISPHYSICAL = apVars[21]
+ with open("./blobs/user/USR_HDD_ISPHYSICAL.apb") as blob: apVars[22] = str(blob.read())
+ USR_HDD_ISPHYSICAL = apVars[22]
else: USR_HDD_ISPHYSICAL = False
# REQUIRES FL 6
@@ -408,7 +408,7 @@ def convertBrains():
apOSCvt = apOSCvt.replace("Mac OS X ","")
apOSCvt = apOSCvt.replace(".","")
- if USR_HDD_ISPHYSICAL == True:
+ if USR_HDD_ISPHYSICAL == "True":
apFileM = apFileM.replace(" \n \n "," \n \n ")
if USR_HDD_TYPE == "HDD": # DISK TYPE ROUTINE; REQUIRES CONFIG FL 6!
@@ -420,6 +420,9 @@ def convertBrains():
apFileM = apFileM.replace(" ",""," -->")
+ if USR_BOOT_FILE != "-2":
+ apFileM = apFileM.replace("","\n\n \n \n \n\n")
+
if USR_BOOT_FILE == "-2" and useBlobs == True: # DISABLE THE DETACHED BASESYSTEM; REQUIRES BLOB METHOD!
apFileM = apFileM.replace("","","")
apFileM = apFileM.replace("","")
+
apFileM = apFileM.replace("$USR_MEMORY",str(apMemCvt))
apFileM = apFileM.replace("$USR_CPU_CORES",apVars[6])
apFileM = apFileM.replace("$USR_CPU_TOTAL",str(apTotalCvt))
diff --git a/scripts/repo-update.py b/scripts/repo-update.py
index 5360ce7..6e921e5 100755
--- a/scripts/repo-update.py
+++ b/scripts/repo-update.py
@@ -28,8 +28,8 @@
from cpydColours import color
detectChoice = 1
-latestOSName = "Sonoma"
-latestOSVer = "14"
+latestOSName = "Sequoia"
+latestOSVer = "15"
runs = 0
noDelta = 0
diff --git a/scripts/restore/ocimage.py b/scripts/restore/ocimage.py
index 0e0fb49..d66fbdb 100755
--- a/scripts/restore/ocimage.py
+++ b/scripts/restore/ocimage.py
@@ -117,21 +117,14 @@ def throwError():
time.sleep(2)
if USR_TARGET_OS <= 1015:
os.system("cp resources/oc_store/compat_old/OpenCore.qcow2 boot/OpenCore.qcow2")
- os.system("cp resources/oc_store/compat_old/config.plist boot/config.plist")
- os.system("cp -R resources/oc_store/compat_old/EFI boot/EFI")
else:
os.system("cp resources/oc_store/compat_new/OpenCore.qcow2 boot/OpenCore.qcow2")
- os.system("cp resources/oc_store/compat_new/config.plist boot/config.plist")
- os.system("cp -R resources/oc_store/compat_new/EFI boot/EFI")
errorMessage = "Restoration failed. You may not have sufficient\n permissions or damaged files."
if os.path.exists("boot/OpenCore.qcow2"):
- if os.path.exists("boot/config.plist"):
- success()
- else:
- throwError()
+ success()
else:
throwError()
diff --git a/scripts/sysprofiler.py b/scripts/sysprofiler.py
index 2d23a93..3174c0b 100644
--- a/scripts/sysprofiler.py
+++ b/scripts/sysprofiler.py
@@ -705,7 +705,7 @@ def cpydProfile(logMsg,warn=None):
time.sleep(0.1)
progressUpdate(65)
if len(userBlobList) > 0:
- if len(userBlobList) < 17:
+ if len(userBlobList) < 16:
cpydProfile(("UserBlobs : YES ("+str(len(userBlobList))+" total)"),True)
warnings.append("Only "+str(len(userBlobList))+" user blobs are present while more are expected,")
warnings.append("might be from an old repo version or integrity damage\n")