Crear la partición de recuperación en macOS

Crear la partición de recuperación en un disco formateado como HFS+ o APFS que carece de ella o repararla si ya existe, en macOS 10.13.x, 10.14.x o 10.15.x, con un sencillo script de bash del usuario rtrouton.

El usuario rtrouton tiene en GitHub un script de bash que realiza esta tarea sin necesidad de recurrir a la instalación de macOS. Es válido para las versiones 10.13.x, 10.14.x y 10.15.x. Lo que hace este script es descargar el componente de la RP de la segunda actualización de seguridad de 2020 para High Sierra, la última disponible a la hora de escribir esto (SecUpd2020-002HighSierra.RecoveryHDUpdate.pkg)
la cual, en combinación con el instalador de High Sierra, Mojave o Catalina colocado en la carpeta Aplicaciones (requerido), reconstruye la RP.

El script original por defecto actúa sobre el volumen que está arrancado pero es sencillo modificarlo para que actúe sobre otro volumen que tengamos conectado al ordenador. Estas líneas del script asignan el volumen de arranque a la variable boot_drive y muestran mensaje informativo:

boot_drive=$(/usr/sbin/diskutil info "$(bless --info --getBoot)" | awk -F':' '/Volume Name/ { print $2 }' | sed -e 's/^[[:space:]]*//')
msg_status "Target disk is ${boot_drive}."

Puedes comentar la primera línea y asignar la etiqueta del volumen en el que deseamos crear la RP a la variable boot_drive, por ejemplo en este caso el volumen HDD:

# boot_drive=$(/usr/sbin/diskutil info "$(bless --info --getBoot)" | awk -F':' '/Volume Name/ { print $2 }' | sed -e 's/^[[:space:]]*//')
boot_drive="HDD"
msg_status "Target disk is ${boot_drive}."

Para ejecutar el script solamente hay que pasarle como parámetro la ruta al instalador de macOS. Por ejemplo si tienes el instalador de High Sierra en la carpeta Aplicaciones:

./create_macos_recovery.sh "/Applications/Install macOS High Sierra.app"

Esto crea o reemplaza la RP con una instalación nueva utilizando la herramienta dm que está incluida en la carpeta /Scripts/Tools/ del paquete descargado desde Internet, de ahí la necesidad de su descarga para actuar con dm sobre la aplicación Instalar macOS High Sierra y crear la partición de recuperación copiando en ella los archivos necesarios. La herramienta dm por defecto no existe en macOS ni en la app que instala el sistema operativo.

OSX1:~ yo$ dm
dm - Version 5

Private utility to run APIs from DiskManagement framework for Apple installers
Usage: dm <verb> where <verb> is as follows:

|ensureRecoveryPartition
|ensureRecoveryBooter

¿Qué pasos ejecuta el script?

  • Descarga el paquete instalador SecUpd2020-002HighSierra.RecoveryHDUpdate.pkg desde el servicio de Actualización de Software de Apple
  • Expande el paquete descargado al directorio /private/tmp para poder utilizar la herramienta dm incluida en ese paquete
  • Con la herramienta dm y las de instalación de la RP incluidas en el instalador de macOS se reconstruye la RP
  • Limpia borrando el paquete descargado de Internet y el contenido de la carpeta /private/tmp.

Yo lo he probado con High Sierra y ha funcionado correctamente. El autor dice que lo ha probado también con Mojave y Catalina con éxito.

Montar la partición de recuperación y comprobar la versión

Es sencillo montar la RP una vez creada y comprobar la versión de macOS que tiene instalada. Con el comando diskutil list obtienes las particiones del sistema, el valor que te interesa es el IDENTIFIER de la partición Apple_Boot Recovery HD, en este ejemplo es disk0s3. El comando diskutil mount /dev/disk0s3 monta la partición y si icono aparece en el Escritorio. El comando

grep -A 1 -i productversion /Volumes/Recovery\ HD/com.apple.recovery.boot/SystemVersion.plist

muestra la versión de macOS que hay en la RP. Y el comando diskutil unmount /dev/disk0s3 desmonta la partición. Estos comandos han de ir precedidos de sudo.

OSX:~ yo$ sudo diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS SSD                     249.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

OSX:~ yo$ sudo diskutil mount /dev/disk0s3
Volume Recovery HD on /dev/disk0s3 mounted

OSX:~ yo$ grep -A 1 -i productversion /Volumes/Recovery\ HD/com.apple.recovery.boot/SystemVersion.plist
	ProductVersion
	10.13.6
	
OSX:~ yo$ sudo diskutil unmount /dev/disk0s3
Volume Recovery HD on disk0s3 unmounted

Este es el contenido del script, copia el texto y guárdalo en tu Mac con extensión sh. En este artículo se utiliza el nombre original que le da el autor: create_macos_recovery.sh.