Background

Today I needed to securely wipe an old laptop in preparation for computer recycling. The Mac Book Pro was running 10.6, so it had no built-in recovery partition. I did have another Mac running 10.11 and a spare SD Card laying around. So I decided to build a bootable recovery SD Card. It takes just a few minutes to do.

Instructions

First, get a sense of what you’re working with by using diskutil list. Below, disk0 and disk1 are the CoreStorage volumes that make up the logical volume disk2. Finally, disk3 is the target SD Card, which has a FAT partition scheme, since it’s used in my camera. The things to note here are the identifiers for “Recovery HD” and the target device.

% diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            121.0 GB   disk0s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk0s3
/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:          Apple_CoreStorage Macintosh HD            999.3 GB   disk1s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk1s3
/dev/disk2 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS iMac                   +1.1 TB     disk2
                                 Logical Volume on disk0s2, disk1s2
                                 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
                                 Unlocked Encrypted Fusion Drive
/dev/disk3 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.0 GB    disk3
   1:             Windows_FAT_32                         32.0 GB    disk3s1

The first real step is to unmount the target volume and format it as HFS+, so that it can be used as a Mac drive.

% diskutil unmount /dev/disk3
% diskutil erasedisk jhfs+ Make_Recovery disk3
Started erase on disk3
Unmounting disk
Creating the partition map
Waiting for the disks to reappear
Formatting disk3s2 as Mac OS Extended (Journaled) with name Make_Recovery
Initialized /dev/rdisk3s2 as a 30 GB case-insensitive HFS Plus volume with a 8192k journal
Mounting disk
Finished erase on disk3

The format operation mounted the newly minted disk, so unmount it.

% diskutil unmountdisk /dev/disk3

Now it’s time to locate the bootable recovery material that will be the source for the SD Card image. This is located on the hidden “Recovery HD” partition of your Mac. Mount it, using the identifier located above.

% diskutil mount /dev/disk1s3
Volume Recovery HD on /dev/disk1s3 mounted

% ls -l /Volumes/Recovery\ HD/com.apple.recovery.boot
total 991328
-rw-r--r--@ 1 root  admin       1984 Sep 17 04:17 BaseSystem.chunklist
-rw-r--r--@ 1 root  wheel  485094905 Sep 17 02:49 BaseSystem.dmg
-rw-r--r--  1 root  wheel       3213 Aug 25 19:07 PlatformSupport.plist
-r--r--r--  1 root  wheel        477 Sep 17 01:39 SystemVersion.plist
-rw-r--r--  1 root  wheel     604728 Oct  3 16:37 boot.efi
-rw-r--r--  1 root  wheel        365 Oct  3 16:37 com.apple.Boot.plist
-rw-r--r--  1 root  wheel   21837607 Sep 17 01:37 prelinkedkernel

The BaseSystem.dmg is the recovery image. Use the asr(8) command to copy it to the SD Card, erasing its contents.

% sudo asr restore --source /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg --target /dev/disk3s2 --erase
Password:
        Validating target...done
        Validating source...done
        Erase contents of /dev/disk3s2 ()? [ny]: y
        Repartitioning target device...done
        Retrieving scan information...done
        Validating sizes...done
        Restoring  ....10....20....30....40....50....60....70....80....90....100
        Verifying  ....10....20....30....40....50....60....70....80....90....100

Next, make it bootable by using asr to change the volume type.

% sudo asr adjust --target /dev/disk3s2 --settype Apple_Boot
Fsck /dev/disk3s2 ....10....20....30....40....50....60....70....80....90....100
Adjust completed successfully

Finally, unount the Recovery HD.

% diskutil unmount /dev/disk1s3
Volume Recovery HD on disk1s3 unmounted

You now have a bootable recovery drive. You can hold down Option during a reboot to select it as the boot volume on a Mac.