diff --git a/.gitignore b/.gitignore
index e585b21..76c03ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,8 +38,7 @@ ovmf/OVMF_VARS.fd
ovmf/user_store/OVMF_VARS.fd
boot/opencore-image-ng.sh
boot/mnt
-docs/screenshots/ventura
-docs/screenshots/sonoma
+docs/.screenshots
BaseSystem.dmg
.gitignore
boot.xml
@@ -51,3 +50,7 @@ resources/python/pypresence/__pycache__/
resources/python/smbios/Scripts/__pycache__
resources/python/cpuinfo/__pycache__/
blobs/user/.noBaseSystemReminder
+resources/.nrsMode
+resources/BaseSystem.dmg
+resources/BaseSystem.img
+testVM/
\ No newline at end of file
diff --git a/.version b/.version
index d61567c..7fd0b1e 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-0.12.3
\ No newline at end of file
+0.12.4
\ No newline at end of file
diff --git a/README.md b/README.md
index 2a99798..d26097a 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-### v0.12.3
+### v0.12.4
Helping you build the ultimate macOS virtual machine, powered by KVM.
@@ -17,19 +17,11 @@ Helping you build the ultimate macOS virtual machine, powered by KVM.
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.
+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 version.
-**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!
-
-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.
+**AutoPilot now has an additional option for macOS Sequoia!**
Please feel free to try out the macOS Sequoia with ULTMOS and leave feedback on how it went!
***
@@ -42,10 +34,10 @@ You might be new to QEMU/KVM, or a long-time veteran - either way, this project
Scripts? Configs? QEMU arguments? A *"qcow"* file? *Moo?* If you need a little help wrapping your head around this stuff, feel free to check out the [FAQs](https://github.com/Coopydood/ultimate-macOS-KVM/wiki/FAQs) for some quick knowledge on the basics.
-
+
-The latest macOS Sequoia beta running on ULTMOS.
+macOS Sequoia running on ULTMOS.
***
@@ -53,7 +45,7 @@ Scripts? Configs? QEMU arguments? A *"qcow"* file? *Moo?* If you need a little h
- Modern macOS Support ⎋
-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!
+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!
- AutoPilot ⎋
Automatically generates a valid, customised, and ready-to-use QEMU config script in seconds.
@@ -122,7 +114,7 @@ Here's a table with my best judgment on minimum, recommended, and best system re
| |
|
|
|
|
|
|
|
|
|--------------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|:---------:|
| **AutoPilot** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| **Auto
Download** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✕ |
+| **Auto
Download** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Online
Install** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Offline
Install** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **QEMU
Script** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓¹ | ✓¹ | ✓¹ |
diff --git a/docs/SupportedGuests.md b/docs/SupportedGuests.md
index bf78e06..06759d6 100644
--- a/docs/SupportedGuests.md
+++ b/docs/SupportedGuests.md
@@ -66,7 +66,7 @@ If you find something is wrongly marked, please feel free to update it.
| |
|
|
|
|
|
|
|
|
|--------------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|:---------:|
| **AutoPilot** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| **Auto
Download** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✕ |
+| **Auto
Download** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Online
Install** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Offline
Install** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| **QEMU
Script** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓¹ | ✓¹ | ✓¹ |
diff --git a/docs/changelogs/v0-12-4.md b/docs/changelogs/v0-12-4.md
new file mode 100644
index 0000000..b11f8b4
--- /dev/null
+++ b/docs/changelogs/v0-12-4.md
@@ -0,0 +1,16 @@
+## v0.12.4
+
+### Minor update • 19/09/2024
+
+This update includes the following features / fixes / changes:
+
+- macOS Sequoia support
+- Added automatic recovery download support in AutoPilot for macOS Sequoia
+- Updated downloader scripts to support macOS Sequoia
+- Prepare for major "NRS" update
+- *do you think Mac-937A206F2EE63C01 would be a catchy nickname?*
+
+To see individual code changes, visit the project's commits page at
+
+> [!NOTE]
+> Remember, commits by Coopydood will always be signed as **4CD28348A3DD016F** or GitHub's public key.
diff --git a/resources/.upgrade b/resources/.upgrade
index 329df65..1f6d05a 100644
--- a/resources/.upgrade
+++ b/resources/.upgrade
@@ -9,5 +9,6 @@
0.11.4
0.12.0
0.12.1
-0.12.2
-0.12.3
\ No newline at end of file
+0.12.2
+0.12.3
+0.12.4
\ No newline at end of file
diff --git a/scripts/autopilot.py b/scripts/autopilot.py
index a7a79d0..6498878 100755
--- a/scripts/autopilot.py
+++ b/scripts/autopilot.py
@@ -773,9 +773,9 @@ def stage14():
elif stageSelect == "b" or stageSelect == "B":
currentStage = 1
- if USR_TARGET_OS >= 14 and USR_TARGET_OS <= 14:
- stage12()
- elif USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012:
+ #if USR_TARGET_OS >= 14 and USR_TARGET_OS <= 14:
+ # stage12()
+ if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012:
stage12()
else:
stage13()
@@ -848,17 +848,17 @@ def stage13():
blob.close()
currentStage = currentStage + 1
stage14()
- if USR_TARGET_OS >= 14 and USR_TARGET_OS <= 14:
- cpydLog("warn",str("Custom resolution unsupported with Sonoma patching, using default value of "+str(defaultValue)))
- USR_SCREEN_RES = "1280x720"
- blob = open("./blobs/USR_SCREEN_RES.apb","w")
- blob.write(USR_SCREEN_RES)
- blob.close()
- blob = open("./blobs/.cdn_control","w")
- blob.write("fresh_cdn")
- blob.close()
- currentStage = currentStage + 1
- stage14()
+ #if USR_TARGET_OS >= 14 and USR_TARGET_OS <= 14:
+ # cpydLog("warn",str("Custom resolution unsupported with Sonoma patching, using default value of "+str(defaultValue)))
+ # USR_SCREEN_RES = "1280x720"
+ # blob = open("./blobs/USR_SCREEN_RES.apb","w")
+ # blob.write(USR_SCREEN_RES)
+ # blob.close()
+ # blob = open("./blobs/.cdn_control","w")
+ # blob.write("fresh_cdn")
+ # blob.close()
+ # currentStage = currentStage + 1
+ # stage14()
else:
print(" "+color.BOLD+"━━━━━━━13/14━━━━━━"+color.GRAY+"━"+color.END)
print("\n "+color.BOLD+"Screen resolution"+color.END)
@@ -1015,7 +1015,7 @@ 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)
- elif USR_TARGET_OS >= 15 and USR_TARGET_OS <= 99:
+ elif USR_TARGET_OS >= 16 and USR_TARGET_OS <= 99:
print(color.YELLOW+"\n ⚠"+color.END+color.BOLD+" Download flow disabled for beta versions.\n You must download an image manually."+color.END)
@@ -1036,7 +1036,7 @@ def stage12():
blob.close()
stage13()
else:
- if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012 or USR_TARGET_OS >= 15 and USR_TARGET_OS <= 99:
+ if USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012: #or USR_TARGET_OS >= 15 and USR_TARGET_OS <= 99:
print(color.END+color.GRAY+"\n 1. Download from Apple..."+color.END)
print(color.BOLD+" 2. Select existing...")
else:
@@ -1056,7 +1056,7 @@ def stage12():
cpydLog("info",str("Requesting notice display"))
showNotice()
- if stageSelect == "1" and USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012 or stageSelect == "1" and USR_TARGET_OS >= 15 and USR_TARGET_OS <= 99:
+ if stageSelect == "1" and USR_TARGET_OS >= 100 and USR_TARGET_OS <= 1012:# or stageSelect == "1" and USR_TARGET_OS >= 15 and USR_TARGET_OS <= 99:
stage12()
elif stageSelect == "1":
cpydLog("info","Arming download mechanism")
@@ -2229,7 +2229,7 @@ def stage3():
elif USR_TARGET_OS == 14:
USR_TARGET_OS_NAME = "Sonoma"
elif USR_TARGET_OS == 15:
- USR_TARGET_OS_NAME = "Sequoia Beta"
+ USR_TARGET_OS_NAME = "Sequoia"
global osIcon
@@ -2400,37 +2400,38 @@ def stage2():
print("\n "+color.BOLD+color.CYAN+"DEFAULT:",color.END+color.BOLD+"Monterey (12)",color.END)
if customValue == 1:
cpydLog("info",str("Custom value requested, setting up"))
- print(color.END+"\n 1. Sonoma (14)")
- print(color.END+" 2. Ventura (13)")
- print(color.BOLD+" 3. Monterey (12)")
- print(color.END+" 4. Big Sur (11)")
- 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+"\n 1. Sequoia (15)")
+ print(color.END+" 2. Sonoma (14)")
+ print(color.END+" 3. Ventura (13)")
+ print(color.BOLD+" 4. Monterey (12)")
+ print(color.END+" 5. Big Sur (11)")
+ print(color.END+" 6. Catalina (10.15)")
+ print(color.END+" 7. Mojave (10.14)")
+ print(color.END+" 8. High Sierra (10.13)\n")
- print(color.END+" 8. Legacy versions...\n")
- print(color.END+" 9. Sequoia Beta (15)\n")
+ print(color.END+" 9. Legacy versions...\n")
customInput = str(input(color.BOLD+"Select> "+color.END))
if customInput == "1":
- customInput = 14
+ customInput = 15
elif customInput == "2":
- customInput = 13
+ customInput = 14
elif customInput == "3":
- customInput = 12
+ customInput = 13
elif customInput == "4":
- customInput = 11
+ customInput = 12
elif customInput == "5":
- customInput = 1015
+ customInput = 11
elif customInput == "6":
- customInput = 1014
+ customInput = 1015
elif customInput == "7":
- customInput = 1013
+ customInput = 1014
elif customInput == "8":
+ customInput = 1013
+ elif customInput == "9":
customValue = 2
stage2()
- elif customInput == "9":
- customInput = 15
+
else:
customValue = 1
diff --git a/scripts/dlosx-arg.py b/scripts/dlosx-arg.py
index ba9b464..e2c67bf 100755
--- a/scripts/dlosx-arg.py
+++ b/scripts/dlosx-arg.py
@@ -594,7 +594,8 @@ def main():
{"name": "Big Sur (11.7)", "b": "Mac-2BD1B31983FE1663", "m": "00000000000000000", "short": "big-sur"},
{"name": "Monterey (12.6)", "b": "Mac-B809C3757DA9BB8D", "m": "00000000000000000", "os_type": "latest", "short": "monterey"},
{"name": "Ventura (13)", "b": "Mac-4B682C642B45593E", "m": "00000000000000000", "os_type": "latest", "short": "ventura"},
- {"name": "Sonoma (14) ", "b": "Mac-A61BADE1FDAD7B05", "m": "00000000000000000", "short": "sonoma"}
+ {"name": "Sonoma (14) ", "b": "Mac-827FAC58A8FDFA22", "m": "00000000000000000", "os_type": "latest", "short": "sonoma"},
+ {"name": "Sequoia (15) ", "b": "Mac-937A206F2EE63C01", "m": "00000000000000000", "os_type": "latest", "short": "sequoia"}
]
def clear(): print("\n" * 150)
diff --git a/scripts/dlosx.py b/scripts/dlosx.py
index b7fd62f..d45862d 100755
--- a/scripts/dlosx.py
+++ b/scripts/dlosx.py
@@ -560,8 +560,8 @@ def main():
{"name": "Catalina (10.15)", "b": "Mac-00BE6ED71E35EB86", "m": "00000000000000000", "short": "catalina"},
{"name": "Big Sur (11.7)", "b": "Mac-2BD1B31983FE1663", "m": "00000000000000000", "short": "big-sur"},
{"name": "Monterey (12.6)", "b": "Mac-B809C3757DA9BB8D", "m": "00000000000000000", "os_type": "latest", "short": "monterey"},
- {"name": "Ventura (13)", "b": "Mac-4B682C642B45593E", "m": "00000000000000000", "os_type": "latest", "short": "ventura"},
- {"name": "Sonoma (14) ", "b": "Mac-A61BADE1FDAD7B05", "m": "00000000000000000", "short": "sonoma"}
+ {"name": "Sonoma (14) ", "b": "Mac-827FAC58A8FDFA22", "m": "00000000000000000", "os_type": "latest", "short": "sonoma"},
+ {"name": "Sequoia (15) ", "b": "Mac-937A206F2EE63C01", "m": "00000000000000000", "os_type": "latest", "short": "sequoia"}
]
def clear(): print("\n" * 150)
diff --git a/scripts/drpc.py b/scripts/drpc.py
index cfb2725..16f43b6 100755
--- a/scripts/drpc.py
+++ b/scripts/drpc.py
@@ -92,7 +92,7 @@
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"
+if osName == "macOS Sequoia": osName = "macOS Sequoia"
osName1 = osName