В рунете вообще довольно скудно описывается работа с жестким диском на компьютерах Apple. В основном, всё сводится к описанию работы с Дисковой утилитой, оно и понятно, большинству обычных пользователей, её возможностей хватает с головой.
Хорошо покопавшись, можно отыскать описание терминальной diskutil. Ведь бывают случаи, когда графическая оболочка недоступна или требуется получить расширенную информацию о разделах и структуре диска. Однако, сегодня мы копнем еще глубже.
Товарищ приволок Macbook Pro с весьма странной проблемой - при попытке войти в учетную запись, компьютер выключается... и вроде как в этот момент слышится характерный щелчок жесткого диска.
Ясное дело, что с диском что-то не так. Сперва пошел простым путем - гружу OS X в режиме восстановления системы, удерживая клавишу Option(Alt) или клавиши Cmd+R при запуске компьютера. О режиме восстановления я писал ранее в статье как сбросить забытый пароль в OS X.
Мы получаем возможность воспользоваться Дисковой утилитой или проверить диск из командной строки командой diskutil (возможно позднее напишу о ней подробнее). Вот только в моем случае, ничего путного из этой затеи не вышло. Дисковая утилита и diskutil видят что диск с ошибками, но ничего сделать с этим не могут!
Всплыл один неприятный момент, вернее даже два...
Во-первых, мой товарищ добавив SSD в свою прошку, сделал Fusion Drive. Это такая фирменная технология Apple, позволяющая из двух дисков, SSD и обычного сделать гибридный. В сети ходит ошибочное мнение что это своего рода RAID-массив 1-ого уровня, ничего подобного. Кому интересно, может изучить данную тему более подробно самостоятельно.
Во-вторых включена система FileVault, которая защищает данные на диске, автоматически шифруя его содержимое. Честно говоря не знаю, может в Yosemite она активируется по умолчанию, как-то не проверял, надо будет ознакомиться с данным вопросом в свободное время.
Короче, дисковые утилиты оказались бессильны, Fusion Drive монтировался исключительно в режиме чтения. Кстати, отдельная проверка диска на bad-блоки (с извлечением последнего из тушки ноутбука) показала что диск в хорошем состоянии, не мальчик конечно, но бэдов нет.
Дальнейшее гугление уже буржуйского интернета подкинуло идею загрузиться в Single User Mode. Данный режим заботы хорошо знаком мне еще по FreeBSD, позволяет получить неограниченные права суперпользователя и делать с системой вообще всё что вздумается на свой страх и риск. Да, никаких графических оболочек тут нет в принципе.
Восстановление данных Mac OS X из Single User Mode
Для загрузки в однопользовательский режим (Single User Mode) нажимаем и удерживаем Cmd+S при включении компьютера. После всякой лабуды на экране, появится командная строка. Вообще там в конце есть подсказка что нужно сделать для монтирования диска в режиме записи. Требуется выполнить всего две команды:
/sbin/fsck –fy
/sbin/mount –uw /
Первая осуществляет проверку диска, а вторая собственно и монтирует ваш диск в режиме записи. Конечно, не совсем правильно писать диск, но так проще для понимания, не хочу сильно отходить от темы.
Для меня осталось загадкой что же случилось с диском, но даже в этом режиме он завершил проверку с ошибкой и в результате отказался монтироваться на запись.
Осталось одно - спасать данные на внешний диск и ставить систему начисто.
Подключение внешнего жесткого диска или флешки из терминала OS X
Из закромов был извлечен жесткий диск достаточного объема, я заранее отформатировал его в родной для мака системе HFS. Желательно использовать именно её, ведь NTFS на запись не поддерживается, а FAT32 имеет ограничение на размер файлов и об этом не стоит забывать. Конкретно в моем случае нужно было вернуть образ виртуальной машины, а он явно превышал 4 Гига, выше которых не может писать система FAT32.
Ок. Диск отформатирован и физически подключен к компьютеру. Осталось подмонтировать его в файловую систему.
Смотрим какие диски и разделы вообще подключены командой ls -l /dev/disk*:
ls -l /dev/disk*
у меня выдался такой список
/dev/disk0
/dev/disk0s1
/dev/disk0s2
/dev/disk0s3
/dev/disk1
/dev/disk1s1
/dev/disk1s2
/dev/disk1s3
/dev/disk2
/dev/disk2s1
/dev/disk2s2
Здесь disk0 и disk1 - это как раз диски, входящие в Fusion Drive, а disk2 - мой подключенный внешний диск. Осталось его подмонтировать в систему:
mount_hfs /dev/disk2s2 /Volumes/
Вопрос почему я подключил именно disk2s2 оставлю вам на самостоятельно изучение, подскажу только куда копать - ищите что такое слайсы в FreeBSD, там об этом подробно написано :)
Я, честно говоря, не понял почему запросто смог увидеть каталоги пользователей и файлы в них, при включенной системе FileVault - видимо большой пробел в моем образовании. Но главное результат - осталось просто скопировать содержимое каталога пользователя на подмонтированный диск.
cp -Rv /Users/troy/* /Volumes/
С командой cp, наверное вы знакомы, опция -R означает копировать все содержимое каталогов и подкаталогов, а -v просто вываливает на экран информацию что именно копируется в данные момент. Красиво :)
Не знаю, кто это вообще читать будет, но вот захотелось поделиться. В принципе тут нет ничего суперсложного, но вдруг кому и пригодится мой опыт.
ЕСЛИ СЧИТАЕТЕ СТАТЬЮ ПОЛЕЗНОЙ,
НЕ ЛЕНИТЕСЬ СТАВИТЬ ЛАЙКИ И ДЕЛИТЬСЯ С ДРУЗЬЯМИ.
https://mdex-nn.ru/page/vosstanovlenie-iz-single-user-mode.html