Home > create_macos_recovery, Mac administration, macOS, macOS Recovery, Scripting > Rebuilding your macOS Recovery volume or partition with create_macos_recovery

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"

Screen Shot 2019-10-20 at 10.50.48 PM

If successful, you should see output like this appear:

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.

Screen Shot 2019-10-20 at 10.55.04 PM

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.

 

  1. Patrick Morton
    October 21, 2019 at 2:15 pm

    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?

    • October 21, 2019 at 2:45 pm

      I honestly don’t know what process they were using.

  2. FritzscCorner
    October 21, 2019 at 3:43 pm

    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.

  3. Selim
    November 27, 2019 at 9:08 pm
  4. January 24, 2020 at 10:57 pm

    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!

  5. FN
    February 20, 2020 at 6:44 pm

    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!

  6. FN
    February 20, 2020 at 7:07 pm

    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).

  7. Steve Osborn
    March 24, 2020 at 3:41 pm

    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!

    • Steve Osborn
      March 24, 2020 at 4:49 pm

      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!

  8. March 25, 2020 at 3:20 pm

    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).

  9. Gordon Bezzina
    April 3, 2020 at 9:11 am

    file SecUpd2020-001HighSierra.RecoveryHDUpdate.pkg is failing to download. Is there an alternative file or location to get it from.

  10. April 7, 2020 at 9:43 pm

    Ejerce do can I get for encriptes Macintosh HD?

  11. pademaret
    May 12, 2020 at 12:46 pm

    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 !

    • J T
      June 2, 2020 at 5:25 am

      what line(s) did you modify to point this script to another volume?

  12. May 18, 2020 at 12:23 am

    What aboyó ir you era sed Teherán dial and reserva the Mac and appears a folder with ?

  13. J T
    June 4, 2020 at 5:50 pm

    can anybody point me the right direction on which lines to modify on the scrip to install the recovery partition on a different volume?

    • María del Rocío
      July 6, 2020 at 4:48 am

      I need the firmware…
      What can I do if I found a padlock?

  14. July 1, 2020 at 3:03 am

    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…

    • sckillfer
      July 1, 2020 at 5:02 am

      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.

  15. John
    July 6, 2020 at 1:40 am

    Hey, new to coding and lost… Where do I enter the path for the installer

    • John
      July 6, 2020 at 2:08 am

      Got ut

      • John
        July 6, 2020 at 2:22 am

        It ran, but it won’t boot in recovery….its cmp 4,1 flashed to 5,1 with a RX580

  16. Kamina
    July 12, 2020 at 12:00 pm

    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?

  17. Derek Evan
    July 17, 2020 at 12:13 am

    Awesome utility. Piece of cake! Worked so beautifully to fix something that has frustrated me for years! Thank you.

  18. July 30, 2020 at 7:47 am

    The SecUpd2020-003HighSierra.RecoveryHDUpdate.pkg is not found so I’m guessing the script needs updating again.

  19. September 9, 2020 at 3:19 am

    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.

  20. Rocio
    September 9, 2020 at 2:07 pm

    Maybe that recovery could have been because phishiing

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: