1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Создание Recovery HD вручную без RecoveryHDUpdate.pkg

Запись в дневнике разместил пользователь vladstarr, 5 ноя 2017.

Всем привет. Все мы знаем, что если с системой возникают какие-то проблемы, её можно переустановить. С этим нам помогает раздел Recovery. При чистой установке системы, он создаётся автоматически. Но случается такое, что вы устанавливаете macOS после Windows (что является неправильным), или раздел с Windows уже существует, или вы случайно/намеренно удалили раздел Recovery HD. Что же делать в таком случаи, если система уже установлена, а сносить и заново её устанавливать нет возможности?

Небольшая предыстория.
У меня была установлена macOS 10.13.1 Developer Beta на APFS. Так как работа этой файловой системы меня не устраивала, мне захотелось октатиться на HFS+ путем чистой переустановки. Беда была в том, что уже была установлена Windows, и после удаления APFS контейнера пропал раздел Recovery. Система 10.13 у меня почему-то на отрез отказывалась устанавливаться, поэтому я восстановил на пустой раздел бэкап 10.12.6 из Time Machine. После восстановления, раздел Recovery не появился. Я спокойно с 10.12.6 обновился до 10.13. Recovery раздела по-прежнему не было.

Пару дней назад я решил обновиться с 10.13 до 10.13.1, и каково было моё удивление, что установка системы на завершающем третьем этапе просто не доходит до конца и выбрасывает на рабочий стол с ошибкой.

[​IMG]

Через пару дней, вчера, тоже попытался поставить систему, и выбивало на той же ошибке.
Недолго подумав, я сразу понял, что ошибка в отсутствии раздела Recovery HD. Соответственно начал гуглить, как его восстановить. Методов было много, все они были написаны при царе горохе, и они не подходили.

Я решил поступить просто: а что, если отрезать раздел от системы вручную, из бэкапа системы достать файлы с раздела Recovery, и назначить тип раздела Apple_Boot? Это я и буду описывать в следующих шагах.

1. Отделяем новый раздел.

Как выглядела примерно моя разметка диска в команде diskutil list.
Код:
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *120.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            78.9 GB    disk0s2
   3:         Microsoft Reserved                         134.2 MB   disk0s3
   4:       Microsoft Basic Data Windows                 40.0 GB    disk0s4
Как мы прекрасно видим, Recovery HD раздел после Macintosh HD отсутствует.
В дисковой утилите я отделил раздел размером 650 МБ от основного.

[​IMG]

После этого, разметка выглядела вот так:
Код:
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *120.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            78.9 GB    disk0s2
   3:                  Apple_HFS Recovery HD             650.0 MB   disk0s3
   4:         Microsoft Reserved                         134.2 MB   disk0s4
   5:       Microsoft Basic Data Windows                 40.0 GB    disk0s5

2. Меняем тип раздела.

Вроде-бы все правильно, но есть одно но. Тип Recovery раздела должен быть Apple_Boot, а не Apple_HFS. Что же, будем менять. Открываем терминал и вводим команды:
Код:
diskutil unmount /dev/disk0s3
sudo asr adjust --target /dev/disk0s3 --settype "Apple_Boot"
Внимание: цифры /dev/disk0s3 могут у вас отличаться!

Проверяем вывод команды diskutil list. Убеждаемся, что всё верно.
Код:
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *120.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            78.9 GB    disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:         Microsoft Reserved                         134.2 MB   disk0s4
   5:       Microsoft Basic Data Windows                 40.0 GB    disk0s5
3. Переносим содержимое.

Теперь нам остаётся скинуть файлы Recovery раздела из бэкапа.
Делюсь с вами своим бэкапом, он от системы 10.13.1, работоспособность с 10.12.6 не проверял.
Также можно вручную вытащить содержимое этого раздела из бэкапа. На разделе с Time Machine включаем показ скрытых файлов, переходим в папку /Backups.backupdb/.RecoverySets/1/ и видим заветную папку. Но если вы достаете из своего бэкапа, вам придется в файле com.apple.Boot.plist заменить пути.

Вам нужно закинуть папку com.apple.recovery.boot в корень раздела Recovery HD, перед этим его нужно смонтировать командой:
Код:
diskutil mount /dev/disk0s3
Вот так будет выглядеть содержимое Recovery раздела:

[​IMG]
После всех проделанных операций, обновление системы из App Store должно нормально заработать, и в настройках iCloud появится пункт Найти Mac.
Круглянин, ARMAGEDDON, ONeL и ещё 1-му нравится это.
  1. vladstarr
    @RodionS, dmtest'a нет в самой системе, он есть только в RecoveryHDUpdate. Я же написал туториал, как обойтись без этого пэкаджа :)
  2. RodionS
    dmtest ensureRecoveryPartition / BaseSystem.dmg 0 0 BaseSystem.chunklist