Rebuilding your macOS Recovery volume or partition with create_macos_recovery
I recently got an email from a former colleague, requesting assistance with a problem they were seeing. They were cloning drives with macOS Catalina, but their cloning process was not including the Recovery volume. Was there a way to create a new Recovery volume on a macOS Catalina boot drive that didn’t have one?
I did some research on this and found that there was a script to do this on High Sierra and Mojave, but it didn’t appear to work anymore.
With some more digging, I was able to figure out why. The script was downloading and expanding a macOSUpd10.13.6.RecoveryHDUpdate.pkg installer package from Apple’s Software Update service in order to get access to a dm tool included with the installer package. This installer package was no longer available from the Software Update service, but a similar package named SecUpd2019-005HighSierra.RecoveryHDUpdate.pkg with the same dm tool was available.
Once I verified that I could get the same results using the SecUpd2019-005HighSierra.RecoveryHDUpdate.pkg installer package, I wrote a script (based on the original one I had found) to help automate the process of rebuilding a macOS Recovery volume or partition. For more details, please see below the jump.
Downloading the script
The create_macos_recovery script is available from the following location:
https://github.com/rtrouton/create_macos_recovery
Once you have the script downloaded, run the create_macos_recovery script using root privileges with one argument:
- The path to an Install macOS.app
Using the script
If you have a macOS Catalina 10.15.0 installer application available in your Mac’s /Applications directory, run this command with root privileges:
/path/to/create_macos_recovery.sh "/Applications/Install macOS Catalina.app"
If successful, you should see output like this appear:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
username@computername ~ % sudo /Users/username/Desktop/create_macos_recovery.sh "/Applications/Install macOS Catalina.app" | |
Password: | |
— macOS installer is /Applications/Install macOS Catalina.app | |
— Installer application for macOS 10.15 detected. Proceeding…. | |
— Target disk is Macintosh HD. | |
— Target filesystem is apfs. | |
— Downloading SecUpd2019-005HighSierra.RecoveryHDUpdate.pkg into /private/tmp | |
#################################################################################################################### 100.0% | |
— Running ensureRecoveryBooter for APFS target volume: Macintosh HD | |
/private/tmp/recoveryupdate10.15/Scripts/Tools/dm – dm – Version 5 | |
APFS EnsureRecoveryBooter: Async call initiate | |
APFS EnsureRecoveryBooter: Operation in progress | |
APFS EnsureRecoveryBooter: Operation start confirmed | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Started operations on Target (Subject) Volume = disk1s5 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: SkipAutomaticTargetDiskSubstitutionForVolumeGroups=(null) | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: BaseSystemDMG=/Applications/Install macOS Catalina.app/Contents/SharedSupport/BaseSystem.dmg ChunkList=/Applications/Install macOS Catalina.app/Contents/SharedSupport/BaseSystem.chunklist | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: AppleDiagnosticsDMG=/Applications/Install macOS Catalina.app/Contents/SharedSupport/AppleDiagnostics.dmg ChunkList=/Applications/Install macOS Catalina.app/Contents/SharedSupport/AppleDiagnostics.chunklist EnforceBlacklist=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: InstallAPFSMacOSBootFiles=0 APFSMacOSBootFileSource=(null) | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: MacOSOpenDirectorySourceOverride=(null) | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: MacOSSourceOverride: Lib=(null) Var=(null) Etc=(null) Usr=(null) | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: SlurpFromOldAppleBoot=0 DeleteOldAppleBoot=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Input options: AddKernelCoreDump=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Vetting inputs | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found (Parent) Container = 0x700001dca9c0=disk1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: The Target Volume is part of a Volume Group | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Volume Group ID (UUID) = 0A81F3B1-51D9-3335-B3E3-169C3640360D | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found relevant Container's {Designated,Additional}PhysicalStore DPS=0x700001dca920=disk0s2 APS=0x700001dca7e0=NOTHING | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found relevant Container's DesignatedPhysicalStore's Whole = DPSWhole=0x700001dca880=disk0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Ensuring that the Subject Volume choice is the relevant Volume Group's SYSTEM Role Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Target's Volume Group's SYSTEM Role Volume count = 1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Chosen Subject (Target) Volume = 0x700001dcaa60=disk1s5=Macintosh HD | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Subject Volume subjVolDiskUUID=1446FB5A-C0CF-4F58-BB61-D5F06A713B09 subjVolMP=/ subjHasMacOS=1 subjIsEncrypted=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerVolumeCount=5 List=0x7f9391526cf0={ disk1s1 disk1s2 disk1s3 disk1s4 disk1s5 }={ 0x7f9391525580 0x7f9391525c40 0x7f9391526320 0x7f9391526a10 0x7f9391527110 } err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerVMVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerInstallerVolumeCount=0 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerPrebootVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerRecoveryVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: MountedVolumesCount=3 List=0x7f93915326a0={ disk1s5 disk1s1 disk1s4 }={ 0x7f9391533440 0x7f9391530cb0 0x7f93915340e0 }=0x7f9391534190={ / /System/Volumes/Data /private/var/vm } err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Verified that if BS or AD DMGs given, then their ChunkLists also given | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined recoverySystemInstallCommanded=1 diagnosticsSystemInstallCommanded=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Attaching disk image /Applications/Install macOS Catalina.app/Contents/SharedSupport/BaseSystem.dmg | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Attaching disk image /Applications/Install macOS Catalina.app/Contents/SharedSupport/AppleDiagnostics.dmg | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did ensure that needed disk images are available | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found if old DPS Apple_Boot pre-existed=0 disk=0x700001dca560=NOTHING | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found if old APS Apple_Boot pre-existed=0 disk=0x700001dca4c0=NOTHING | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: APFS Preboot Volume prebootVolumePreExisted=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort, should-be-redundant UNmount of Preboot to cause DA to request others to stop using disk=0x700001dca740=disk1s2=Preboot err=0 dissenter/PID=0/-1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort-possibly-redundant mount of Preboot disk=0x700001dca740=disk1s2=Preboot err=0 dissenter/PID=0/-1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Expecting mounted Preboot APFS Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Preboot volume disk=0x700001dca740=disk1s2=Preboot MP=/Volumes/Preboot existed=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Taking mount hold on Preboot APFS Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Not adding no-touch files to preboot volume root because MDS should ignore it automatically | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: APFS Recovery Volume recoveryVolumePreExisted=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort, should-be-redundant UNmount of Recovery to cause DA to request others to stop using disk=0x700001dca6a0=disk1s3=Recovery err=0 dissenter/PID=0/-1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort-possibly-redundant mount of Recovery disk=0x700001dca6a0=disk1s3=Recovery err=0 dissenter/PID=0/-1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Expecting mounted Recovery APFS Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Recovery volume disk=0x700001dca6a0=disk1s3=Recovery MP=/Volumes/Recovery existed=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Taking mount hold on Recovery APFS Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Not adding no-touch files to recovery volume root because MDS should ignore it automatically | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: APFS VM Volume vmVolumePreExisted=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Not making a subject dir nor otherwise checking/adding any content on the VM role volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: MountedVolumesCount=7 List=0x7f939154cd00={ disk1s5 disk1s1 disk1s4 disk2s1 disk3s1 disk1s2 disk1s3 }={ 0x7f9391441660 0x7f939154d710 0x7f939154bd40 0x7f939154e3e0 0x7f939154e4c0 0x7f939154f220 0x7f939154f380 }=0x7f939154cd50={ / /System/Volumes/Data /private/var/vm /Volumes/macOS Base System /Volumes/AppleDiagnostics /Volumes/Preboot /Volumes/Recovery } err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Assert existing-or-new subject dir name should be prebootVolumeSubjectDir=/Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: If exists, do hard test for existing Preboot Volume subject dir being a DIR | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: UUID prebootVolumeSubjectDirPreExisted=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Assert existing-or-new subject dir name should be recoveryVolumeSubjectDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: If exists, do hard test for any existing Recovery Volume subject dir being a DIR | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: UUID recoveryVolumeSubjectDirPreExisted=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined appleBootPartitionSlurpProceed=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Not slurping legacy Apple_Boot | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Caller making decision on boot install, and no path | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined bootSystemInstallProceed=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined bootSystemSourcePath=/ | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Sourcing USR directory relative to given source macOS | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined dirThatSourceUsrDirIsIn=/ | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: No BOOTSYS to install | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: RECOVERYSYS install commanded by client and commencing | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Required-Success Extract RECOVERYSYS DMG+Files from BS to APFS Recovery Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Bef copy+extract BSdmg-recsys –>CALL–> /Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: Operation 44.0% complete | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j132ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j132ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j137ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j137ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j140aap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j140aap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j140kap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j140kap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j160ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j160ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j174ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j174ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j213ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j213ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j680ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j680ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.j780ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j780ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.x589amludev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.x589amludev.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/boot.efi.x589iclydev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.x589iclydev.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j132ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j132ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j137ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j137ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j140aap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j140aap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j140kap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j140kap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j160ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j160ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j174ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j174ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j213ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j213ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j680ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j680ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.j780ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.j780ap.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.x589amludev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.x589amludev.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine manifest for a signed boot loader: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/bootbase.efi.x589iclydev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=boot.efi.x589iclydev.im4m | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: The source prelinkedkernel and immutablekernel files both exist, and point to the same inode | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Therefore, one file will be copied to the destination and a hard link will be created at the destination | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying prelinkedkernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/prelinkedkernel –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Creating hardlink of FileEntry=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/prelinkedkernel –>AS–> AdditionalFileEntry=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/immutablekernel | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j132ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j137ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j140aap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j140kap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j160ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j174ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j213ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j680ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.j780ap.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.x589amludev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying a per-machine signed manifest immutable kernel: Copying SrcFile=/Volumes/macOS Base System/System/Library/PrelinkedKernels/immutablekernel.x589iclydev.im4m –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: Operation 51.0% complete | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Chosen kernel for pointing to by plist: KernelFileName=immutablekernel | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying base system image: Copying SrcFile=/Applications/Install macOS Catalina.app/Contents/SharedSupport/BaseSystem.dmg –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=BaseSystem.dmg | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying base system version plist: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/SystemVersion.plist –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying platform support plist: Copying SrcFile=/Volumes/macOS Base System/System/Library/CoreServices/com.apple.recovery.boot/PlatformSupport.plist –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying system image chunk list: Copying SrcFile=/Applications/Install macOS Catalina.app/Contents/SharedSupport/BaseSystem.chunklist –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 DstName=BaseSystem.chunklist | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Creating boot plist | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Aft copy+extract BSdmg-recsys err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: DIAGSYS install commanded by client and commencing | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Client is asking to NOT consider diag blacklist (that is, to always install) | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined diagnosticsSystemInstallProceed=1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Best-Effort Extracting DIAGSYS DMG+Files from AD to APFS Recovery Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Bef copy+extract ADdmg-sys –>CALL–> /Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Creating diagnostics directory and copying diagnostics image | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying diagnostics info plist: Copying SrcFile=/Volumes/AppleDiagnostics/System/Library/CoreServices/.diagnostics/Info.plist –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/.diagnostics | |
APFS EnsureRecoveryBooter: Operation 60.0% complete | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying diagnostics system image: Copying SrcFile=/Applications/Install macOS Catalina.app/Contents/SharedSupport/AppleDiagnostics.dmg –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/.diagnostics | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Copying diagnostics image chunk list: Copying SrcFile=/Applications/Install macOS Catalina.app/Contents/SharedSupport/AppleDiagnostics.chunklist –>FILE–> IntoDir=/Volumes/Recovery/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/.diagnostics | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Aft copy+extract ADdmg-sys err=(soft)=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Not blessing RECOVERYSYS because showing in Boot Picker is not desired | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Doing best-effort UpdatePreboot (UP) of EFI Password Unlocker File (ERWKPL), | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: as well as EFI Login Window Graphics, using APFS users from target volume, | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: OD database from /var/db/dslocal/nodes/Default, VAR from target volume, and USR from target volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: Commencing operation to update the Preboot Volume for Target Volume disk1s5 Macintosh HD | |
APFS EnsureRecoveryBooter: UpdatePreboot: The Target Volume is part of APFS Container disk1 | |
APFS EnsureRecoveryBooter: UpdatePreboot: The Target Volume's OpenDirectory (non-special kind) user count is 1 and the Recovery (any of 4 kinds) user count is 0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: There are OpenDirectory user(s) but no Recovery user(s) | |
APFS EnsureRecoveryBooter: UpdatePreboot: The above is an abort condition for some purposes but not UpdatePreboot; continuing | |
APFS EnsureRecoveryBooter: UpdatePreboot: The Target Volume is part of APFS Volume Group 0A81F3B1-51D9-3335-B3E3-169C3640360D | |
APFS EnsureRecoveryBooter: UpdatePreboot: Custom OD and macOS source paths have both been specified | |
APFS EnsureRecoveryBooter: UpdatePreboot: Sourcing VAR directory relative to source macOS | |
APFS EnsureRecoveryBooter: UpdatePreboot: Sourcing USR directory relative to source macOS | |
APFS EnsureRecoveryBooter: UpdatePreboot: Search Path For macOS Source Files = (nil=NotMounted) = / | |
APFS EnsureRecoveryBooter: UpdatePreboot: Directory That macOS "var" Is Searched To Be In = (nil=NoMacOS) = / | |
APFS EnsureRecoveryBooter: UpdatePreboot: Directory That macOS "usr" Is Searched To Be In = (nil=NoMacOS) = / | |
APFS EnsureRecoveryBooter: UpdatePreboot: Open Directory Database Search Path = (nil=MacOSSearchPathNotMounted) = /var/db/dslocal/nodes/Default | |
APFS EnsureRecoveryBooter: UpdatePreboot: Preserve EncryptedRootPList When No-OD = 1 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully opened Open Directory database; setting AuthODNodeOrNil accordingly | |
APFS EnsureRecoveryBooter: UpdatePreboot: Mounting and ensuring as mounted the related Preboot Volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: Preboot Volume = disk1s2 Preboot | |
APFS EnsureRecoveryBooter: UpdatePreboot: Preboot Volume Target Directory = /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Taking mount hold on Preboot Volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: The Target Volume's Volume Group's "Data"-Role Volume membership count is 1 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Obtained list of 1 APFS Crypto User(s) on Target Volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: If a "DISK" APFS Crypto User exists, it is expected to be 0A81F3B1-51D9-3335-B3E3-169C3640360D | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering APFS Crypto User FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Defaulting and requiring that this be an Open Directory User | |
APFS EnsureRecoveryBooter: UpdatePreboot: Treating this APFS Crypto User to be, and requiring to match, an Open Directory User | |
APFS EnsureRecoveryBooter: UpdatePreboot: Correlated APFS Volume Crypto User with Open Directory User FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000 aka "root" | |
APFS EnsureRecoveryBooter: UpdatePreboot: All required data for this Open Directory user has been obtained | |
APFS EnsureRecoveryBooter: UpdatePreboot: Parameters for EFILoginUserGraphics count=0 "unlockOptions"="(null)" | |
APFS EnsureRecoveryBooter: UpdatePreboot: Before rendering EFILoginUserGraphics user (graphics/audio) resources Name=System Administrator PictureSize=(NoneIsOK)=0 HintOptional=(null) | |
APFS EnsureRecoveryBooter: UpdatePreboot: After rendering EFILoginUserGraphics DataObj=(NullIsError)=0x7f939156c340 DataLen=595638 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Before rendering EFILoginUserNamesData resources UserArrayCount=3 | |
APFS EnsureRecoveryBooter: UpdatePreboot: After rendering EFILoginUserNamesData DataObj=(NullMeansWeWillSkip)=0x7f939157eb60 ItemCount=3 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully added a macOS OD User to the building dictionary | |
APFS EnsureRecoveryBooter: UpdatePreboot: Processed APFS Volume Crypto User FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Error for this processed user was 0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Error among all processed users was 0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully processed these user styles: TheDISK=0 AtLeastOneOD=1 AtLeastOneRecoveryKind=0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: At least one OD user was processed successfully, so clearing among-all-users error if any | |
APFS EnsureRecoveryBooter: UpdatePreboot: The Encrypted Root PList File content is ready | |
APFS EnsureRecoveryBooter: UpdatePreboot: Not encrypting the Encrypted Root PList File content | |
APFS EnsureRecoveryBooter: UpdatePreboot: Encrypted Root PList File to be created path will or would be /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EncryptedRoot.plist.wipekey | |
APFS EnsureRecoveryBooter: UpdatePreboot: Proceeding to write Encrypted Root PList, creating a path as necessary | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote Encrypted Root PList File | |
APFS EnsureRecoveryBooter: UpdatePreboot: DiskManagement Info PList File path will be /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/var/db/CryptoUserInfo.plist | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote DiskManagement Info PList File | |
APFS EnsureRecoveryBooter: UpdatePreboot: Checking for existence of Static EFI Resources directory /usr/standalone/i386/EfiLoginUI | |
APFS EnsureRecoveryBooter: UpdatePreboot: Before copying contents of directory of Static EFI Resources at /usr/standalone/i386/EfiLoginUI into directory /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/usr/standalone/i386 | |
APFS EnsureRecoveryBooter: UpdatePreboot: After copying error=(ZeroMeansSuccess)=0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Looking for locale list on macOS on Target Volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: Locale list item count is 34 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Before rendering EFILoginInterfaceGraphics global localized resources | |
APFS EnsureRecoveryBooter: UpdatePreboot: After rendering EFILoginInterfaceGraphics FileNamesAndDataObj=(NullIsError)=0x7f9391583ce0 ItemCount=11 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/loginui.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/flag_picker.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/preferences.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/battery.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/appleLogo.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/sound.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/unknown_userUI.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/disk_passwordUI.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/guest_userUI.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/Lucida13.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing localized EFI graphics resource file /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/System/Library/Caches/com.apple.corestorage/EFILoginLocalizations/Lucida13White.efires | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote EFI resource file | |
APFS EnsureRecoveryBooter: UpdatePreboot: Generating AdminUserList for Recovery purposes | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering admin user FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering admin user FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000F8 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering admin user 9D883B54-3989-4961-9848-2EA56F12B4B7 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering admin user 5FB70BD5-1782-474E-A3FB-DEB0DB831CE5 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Considering admin user 98C6EB45-50CF-411F-9850-514A386B2D95 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Error among all processed admin users was 0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Writing Admin User Info File to path /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/var/db/AdminUserRecoveryInfo.plist | |
APFS EnsureRecoveryBooter: UpdatePreboot: Successfully wrote Admin User Info File | |
APFS EnsureRecoveryBooter: UpdatePreboot: Checking for existence of Secure Access Token file /var/db/dslocal/nodes/Default/secureaccesstoken.plist | |
APFS EnsureRecoveryBooter: UpdatePreboot: Before copying Secure Access Token file /var/db/dslocal/nodes/Default/secureaccesstoken.plist into directory /Volumes/Preboot/1446FB5A-C0CF-4F58-BB61-D5F06A713B09/var/db | |
APFS EnsureRecoveryBooter: Operation 75.0% complete | |
APFS EnsureRecoveryBooter: UpdatePreboot: After copying error=(ZeroMeansSuccess)=0 | |
APFS EnsureRecoveryBooter: UpdatePreboot: Releasing mount hold on Preboot Volume | |
APFS EnsureRecoveryBooter: UpdatePreboot: Doing memory releases | |
APFS EnsureRecoveryBooter: UpdatePreboot: Exiting Update Preboot operation with overall error=(ZeroMeansSuccess)=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did graphics update (UpdatePreboot) err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Target is not encrypted, so not verifying existence of an EncryptedRootPListWipeKey EFI Login User List | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Looking for APFS EFI driver at /usr/standalone/i386/apfs.efi | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found APFS EFI driver source file | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Parent ContainerSchemeWholeDisk=disk1 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Read into buffer efiDriverData = (nil=error) obj=0x7f939150aeb0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Bef APFSContainerEFIEmbed disk=disk1 buf=0x10e0d1000 len=628312 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Aft APFSContainerEFIEmbed err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Determined appleBootPartitionRemovalProceed=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Looking for pre-existing core dump partitions on 0x700001dca880=disk0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Found corePartitionPreExisted=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did so far decide corePartitionAdditionProceed=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did cancel-KCD-due-to-AB-staying check, corePartitionAdditionProceed=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Reverifying ContainerRef=0x700001dca9c0=disk1 ContainerDPS=0x700001dca920=disk0s2 ContainerDPSToRef=0x700001dca420=disk1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerVolumeCount=5 List=0x7f9391595c10={ disk1s1 disk1s2 disk1s3 disk1s4 disk1s5 }={ 0x7f93915943c0 0x7f9391594aa0 0x7f93915951c0 0x7f93915958b0 0x7f9391595f90 } err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerVMVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerInstallerVolumeCount=0 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerPrebootVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: ContainerRecoveryVolumeCount=1 err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Finished operations normally on disk1s5 with Preboot Volume disk1s2 and Recovery Volume disk1s3 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: At exit with retErr=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Releasing mount hold on Preboot Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Releasing mount hold on Recovery Volume | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort unmount of preboot volume err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort unmount of recovery volume err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Detaching Base System disk image | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Detaching Diagnostics disk image | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Did best-effort unmount and detach source images as needed to restore previous dmg states | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: MountedVolumesCount=3 List=0x7f93915a3a60={ disk1s5 disk1s1 disk1s4 }={ 0x7f9391540d80 0x7f93915a3980 0x7f9391534ab0 }=0x7f93915a36b0={ / /System/Volumes/Data /private/var/vm } err=0 | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Releasing memory | |
APFS EnsureRecoveryBooter: EnsureRecoveryBooter: Exiting operations | |
APFS EnsureRecoveryBooter: Operation 100.0% complete | |
APFS EnsureRecoveryBooter: Operation fully complete | |
APFS EnsureRecoveryBooter: Operation finished | |
— Successfully created 10.15 Recovery volume on Macintosh HD. | |
username@computername ~ % |
Once the script has finished running, you should be able to verify that you can boot into Recovery.
Testing notes
Before any use in production, I strongly recommend testing this script on test systems and verifying that this also works for you. Please see below for what I have tested this script with:
OS versions:
- macOS 10.13.6
- macOS 10.14.6
- macOS 10.15.0
OS installers:
- Install macOS High Sierra.app (for 10.13.6)
- Install macOS Mojave.app (for 10.14.6)
- Install macOS Catalina.app (for 10.15.0)
Test systems:
- Virtual machines running in VMware Fusion 11.5.0
Note: I have only tested on systems where FileVault encryption has not been enabled.
Great information. However your line “They were cloning drives with macOS Catalina, but their cloning process was not including the Recovery volume” piqued my interest.. I assume you are not talking about cloning an entire image but something else?
I honestly don’t know what process they were using.
It seems like the only way to reinstall Catalina is if FileVault is not enabled. I see you indicated you hadn’t tested on a FileVault encrypted system. In my testing, both local recovery mode and internet recovery mode only give you the option to Reset a users password or erase the drive. Once FileVault has been disabled or the Drive is erased we are then able to boot back into recovery mode (Internet recovery mode if the drive was erased) to reinstall the OS. It adds an extra step to rebuilding Macs that are reclaimed and getting ready for re-deployment. Hopefully I am missing something and there is a better way to do this for Catalina.
If anyone is interested, the Catalina version of the RecoveryHDUpdate.pg is here: http://swcdn.apple.com/content/downloads/61/06/061-38725-A_IKKFMZ8GQQ/43etvkgtviw6b11mc67qw4jynkg33djpjb/macOSUpd10.15.1.RecoveryHDUpdate.pkg
Thanks 🙂
Greetings! I ran the script with the High Sierra installer, with the drive being HFS+. In the end, I ended up with the following:
“: Error: Couldn’t attach disk image (-69736)
— Failed to create 10.13.6 Recovery partition on Macintosh HD.
— Recovery tools returned the following non-zero exit code: 1”
Any clue on what I need to do to have it complete successfully? Thanks!
Looks like Apple removed the download link for “SecUpd2019-007HighSierra.RecoveryHDUpdate.pkg”. Do you by chance know of any other source for it? I tried to extract it from “SecUpd2019-007HighSierra.dmg” but all I get there is an empty directory. Thanks!
Nevermind, figured it out… simply download the full update DMG, then extract the contents of the installer package via Terminal.app using “pkgutil –expand” (drag and drop source pkg and destination folder separated by a space).
How can I back-grade to Mojave from Catalina on my recovery partition? This installer fails because it won’t overwrite a newer OS. I’m running patched Catalina on a 2010 Mac Pro. I tried installing the Mojave recovery partition using this script after the Catalina version gave me the circle-slash upon recovery startup (OS too new for this computer, circle-slash and shutdown). Here’s the output from the script:
— The macOS installer app provided installs 10.14.6’s Recovery, which is earlier than macOS 10.15.3
— Please use an installer app which installs macOS 10.15.3 or later.
How can I get around this and just install Mojave onto the recovery partition while leaving my Catalina main partition alone? Thanks!
Disregard. I figured it out. I just commented lines 94-99 in the script to disable the version checker. Worked like a charm. THANK YOU for a fantastic solution to a rather obscure problem!
Your instructions state:
> Using the script
>
> If you have a macOS Catalina 10.15.0 installer application available in your Mac’s /Applications directory, run this command with root privileges:
>
> 1
/path/to/create_macos_recovery.sh “/Applications/Install macOS Catalina.app”
I’m not seeming to find that file? Mostly, I’m trying to take an MBP13 and update its recovery partition from Mojave to Catalina so that each time I have to whack the instaled OS, I don’t also have to upgrade (it’s a testing system, so, rebuilds are frequent and would love to save myself some time on each rebuild).
file SecUpd2020-001HighSierra.RecoveryHDUpdate.pkg is failing to download. Is there an alternative file or location to get it from.
The link has changed to:
http://swcdn.apple.com/content/downloads/54/11/001-12354-A_T4W3OKDEX7/xf785kp341cakvok70utt651o2hk1h8wx9/SecUpd2020-003HighSierra.RecoveryHDUpdate.pkg
If the link changes again in the future, you can find the new link when downloading the file:
https://swscan.apple.com/content/catalogs/others/index-10.13-1.sucatalog
and searching for the string “HighSierra.RecoveryHDUpdate.pkg” in the sucatalog-file.
Good luck!
Thanks for this Sean McGregor. I was able to patch the script with the latest link.
Ejerce do can I get for encriptes Macintosh HD?
Thank you very much for this powerful script. I used a slight modification to install the recovery partition on an external disk. This script is brilliant !
what line(s) did you modify to point this script to another volume?
What aboyó ir you era sed Teherán dial and reserva the Mac and appears a folder with ?
can anybody point me the right direction on which lines to modify on the scrip to install the recovery partition on a different volume?
I need the firmware…
What can I do if I found a padlock?
I was able to past the download phase updating the download URL, but now it gives another error
HFS/CS EnsureRecoveryPartition: Async call initiate
HFS/CS EnsureRecoveryPartition: Operation in progress
HFS/CS EnsureRecoveryPartition: Operation start confirmed
HFS/CS EnsureRecoveryPartition: Operation 100.0% complete
HFS/CS EnsureRecoveryPartition: Operation fully complete
HFS/CS EnsureRecoveryPartition: Operation finished
HFS/CS EnsureRecoveryPartition: Error: File system resize support required, such as HFS+ with Journaling enabled (-69819)
— Failed to create 10.14.6 Recovery partition on macOS Mojave.
— Recovery tools returned the following non-zero exit code: 1
The filesystem IS, FOR SURE, HFS+ with Journaling enabled, but still…
Okay, I didn’t think it was possible, but the filesystem hasn’t, in fact, journaling enabled; I enabled it though diskutil and it worked (I had to comment out the download code first, otherwise it would download again instead of using the already downloaded file). I also had to use gdisk to repair bootcamp hybrid MBR after, not sure why.
Hey, new to coding and lost… Where do I enter the path for the installer
Got ut
It ran, but it won’t boot in recovery….its cmp 4,1 flashed to 5,1 with a RX580
Hi, thanks for the script, but i can’t make it work. I’m on Mojave 10.14.6. After installing and deleting big sur on my internal ssd (it’s installed other partition than Mojave), my mojave recovery partition was deleted. I tried this script, but it could’t identify my target disk and failed.
— macOS installer is /Applications/Install macOS Mojave.app
— Installer application for macOS 10.14.6 detected. Proceeding….
Boot option does not match XML representation
XML representation doesn’t match true boot preference
— Target disk is .
— Target filesystem is .
— Downloading SecUpd2020-003HighSierra.RecoveryHDUpdate.pkg into /private/tmp
######################################################################## 100,0%
— Failed to create 10.14.6 Recovery partition on .
— does not have an APFS or HFS+ filesystem.
What should change to make it work?
Hi Master… I’ve got the same problem… did you solved the Issue??
— Failed to create 10.14.6 Recovery partition on .
— does not have an APFS or HFS+ filesystem.
Awesome utility. Piece of cake! Worked so beautifully to fix something that has frustrated me for years! Thank you.
The SecUpd2020-003HighSierra.RecoveryHDUpdate.pkg is not found so I’m guessing the script needs updating again.
New link for file based on Sean McGregor’s instructions above:
http://swcdn.apple.com/content/downloads/14/54/001-08570-A_XCP1PVIXQK/xg4hvg6zgpoxonqkgiw2e2cqo1c0isl97q/SecUpd2020-004HighSierra.RecoveryHDUpdate.pkg
Hey, I tried to run the command but I am receiving “command not found”. I don’t know what to do…
My MacBook came with Mojave, I upgraded to Catalina, and after downgraded to Mojave, and now I can’t enter in Recovery Mode. When I try to enter, it starts downloading something for 5 minutes and then fails.
Maybe that recovery could have been because phishiing
http://swcdn.apple.com/content/downloads/26/25/001-22632-A_VOE0HZ8O3O/u7k04scypee5dk23ywieyc3twmunn70fed/macOSUpd10.15.6.RecoveryHDUpdate.pkg
Am running a “patched” (MacOS Mojave Patcher) 10.14.6 on an officially unsupported MacBook (Late 2008). Everything works 100%. However, when I initially updated the MB to High Sierra, the drive WAS NOT converted to APFS, and after the Mojave upgrade it remains the same, and there continues to be no Recovery Partition. So tried the recovery partition script, which failed with the following results. Thoughts?
jcasmacbook:/ jca$ sudo /Users/jca/Desktop/create_macos_recovery.sh “/Applications/Install macOS Mojave.app”
— macOS installer is /Applications/Install macOS Mojave.app
— Installer application for macOS 10.14.6 detected. Proceeding….
Could not interpret boot device as either network or disk
Can’t interpret EFI boot device
— Target disk is .
— Target filesystem is .
— Downloading SecUpd2020-004HighSierra.RecoveryHDUpdate.pkg into /private/tmp
######################################################################## 100.0%
— Failed to create 10.14.6 Recovery partition on .
— does not have an APFS or HFS+ filesystem.
jcasmacbook:/ jca$
Hi Master… I’ve got the same problem… did you solved the Issue??
— Failed to create 10.14.6 Recovery partition on .
— does not have an APFS or HFS+ filesystem.
Forgot to include drive list (from diskutil). And if important, internal drive is SSD.
jcasmacbook:~ jca$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 999.9 GB disk0s2
Dear Friends, does the script works with Catalina 10.5.7 or only with 10.5.0 version? I am asking because I can only download version 10.5.7 these days, 10.5.0 is gone for ever. Please advice
I’ve encountered a new problem. The script appears to installed the Mojave Recovery system on my SSD (exited saying it was successful). Now when I try to boot into Recovery, it goes through the white Apple logo screen with the progress bar, then goes to all black without ever proceeding to the gray-background recovery screen with the options for reinstall, Disk Utility, etc. Has the installer moved again?
OK, I’ve successfully installed a High Sierra recovery partition and it works. Tried then to reinstall Mojave and it did the black screen thing again. Not sure why. I have a 2010 Mac Pro running patched Catalina 10.15.7 (dosdude1’s MacOS Catalina Patcher) and a Radeon Sapphire video card (reflashed to allow EFI startup screens). Perhaps it’s the reflashed Radeon causing the problem. In any case, at least now I have a working Recovery partition again. Can’t thank you enough though for this script. It’s a gem!
Hi Steve!
Have you applied the “Recovery Partition Patch” from the “Post install” of Dosdude’s “Mojave Patcher” after re-creating the Recovery Partition?
Maybe there is something that needs to be patched to make it boot into Recovery.
This looks like a great tool!
Unfortunately…using exactly as stated, command & Error in terminal is as follows
***
sudo ~/Downloads/create_macos_recovery.sh “/Applications/Install\ macOS\ Mojave.app”
— The path to the macOS installer application is required as the first argument.
Usage:
create_macos_recovery.sh “/path/to/Install macOS [Name].app”
****
What am I missing? Note, I was actually using the absolute path for the script… after giving it 775 perms. On an admin account on Mojave.
Too bad, would have been really sweet. Okay, I’ll do it manually, thank you for showing the way with the readout and links inside the script.
Sorry about last comment…
Okay, I realized I was escaping the spaces AND using quotes… tired mind…
So, now I get this:
****
— macOS installer is /Applications/Install macOS Mojave.app/Contents/SharedSupport
Print: Entry, “:System Image Info:version”, Does Not Exist
— This script supports repairing Recovery for macOS 10.13.0 and later.
— Please use an installer app which installs macOS 10.13.0 or later.”
***
This is the command I’m considering Running
*******
~/Downloads/recoveryupdate4/Scripts/Tools/dm ensureRecoveryBooter “Macintosh HD” /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/BaseSystem.dmg /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/BaseSystem.chunklist -diag /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/AppleDiagnostics.dmg /Applications/Install\ macOS\ Mojave.app/Contents/SharedSupport/AppleDiagnostics.chunklist -diagmachineblacklist 0 -installbootfromtarget 0 -slurpappleboot 0 -delappleboot 0 -addkernelcoredump 0
******
MB I should consider using disk1s1 instead of “Macintosh HD”?