Is anyone familiar with the Sonoma 14.4 update file? I asked LLM to help me write a script to update the recovery partition. It keeps suggesting files that were in the old InstallAssistant.pkg, but Sonoma is different. Is anyone familiar with the Sonoma setup and its file structure?
Is there a way to update the recovery partition with the latest OS? Because when I restore my computer back to factory reset, it always restores the macOS which came with the Mac.
I have a Mac mini M2.
Below is the script I used:
#!/bin/bash
Function to display an error message and exit
function display_error {
echo "Error: $1"
exit 1
}
Path to the directory containing InstallAssistant.pkg
pkg_directory="/Users/colinp/Downloads"
Check if InstallAssistant.pkg exists in the specified directory
if [ ! -f "$pkg_directory/InstallAssistant.pkg" ]; then
display_error "InstallAssistant.pkg not found in $pkg_directory."
fi
echo "InstallAssistant.pkg found in $pkg_directory."
Prompt user to continue
read -p "Do you want to continue? (y/n): " continue_response
if [ "$continue_response" != "y" ]; then
echo "Operation aborted by user."
exit 0
fi
Mount the InstallAssistant disk image
echo "Mounting InstallAssistant disk image..."
if ! hdiutil attach "$pkg_directory/InstallAssistant.pkg" -noverify -mountpoint /Volumes/InstallAssistant; then
display_error "Failed to mount InstallAssistant disk image."
fi
Prompt user to continue
read -p "Do you want to continue? (y/n): " continue_response
if [ "$continue_response" != "y" ]; then
echo "Operation aborted by user."
hdiutil detach /Volumes/InstallAssistant >/dev/null 2>&1
exit 0
fi
Find the BaseSystem.dmg within the InstallAssistant disk image
basesystem_dmg=$(find /Volumes/InstallAssistant -name "BaseSystem.dmg" -print -quit)
Check if BaseSystem.dmg is found
if [ -z "$basesystem_dmg" ]; then
display_error "BaseSystem.dmg not found within InstallAssistant.pkg."
fi
echo "BaseSystem.dmg found."
Prompt user to continue
read -p "Do you want to continue? (y/n): " continue_response
if [ "$continue_response" != "y" ]; then
echo "Operation aborted by user."
hdiutil detach /Volumes/InstallAssistant >/dev/null 2>&1
exit 0
fi
Determine the device identifier of the target disk
recovery_partition=$(diskutil list | grep "Recovery HD" | awk '{print $NF}')
if [ -z "$recovery_partition" ]; then
display_error "Recovery partition not found."
fi
echo "Recovery partition found: $recovery_partition"
Prompt user to continue
read -p "Do you want to continue? (y/n): " continue_response
if [ "$continue_response" != "y" ]; then
echo "Operation aborted by user."
hdiutil detach /Volumes/InstallAssistant >/dev/null 2>&1
exit 0
fi
Unmount the recovery partition
echo "Unmounting the recovery partition..."
if ! diskutil unmountDisk "$recovery_partition"; then
display_error "Failed to unmount the recovery partition."
fi
Prompt user to continue
read -p "Do you want to continue? (y/n): " continue_response
if [ "$continue_response" != "y" ]; then
echo "Operation aborted by user."
hdiutil detach /Volumes/InstallAssistant >/dev/null 2>&1
exit 0
fi
Restore BaseSystem.dmg to the recovery partition
echo "Updating the recovery partition. This may take a while..."
if ! sudo asr restore --source "$basesystem_dmg" --target "$recovery_partition" --erase; then
display_error "Failed to update the recovery partition."
fi
Detach the InstallAssistant disk image
echo "Detaching InstallAssistant disk image..."
if ! hdiutil detach /Volumes/InstallAssistant >/dev/null 2>&1; then
display_error "Failed to detach InstallAssistant disk image."
fi
echo "Recovery partition update complete.
any help is appreciated. Thanks in advance.