Обновляем iPhone через Linux сохранив данные и нервы

Обновляем iPhone через Linux сохранив данные и нервы
Данная статья поведает как обновить iOS и данные на нём для пользователей Linux. На эту тему можно нагуглить как мануалы, так и возникшие проблемы:



Но информация эта весьма разрознена. И не содержит некоторых тонкостей, не учитывая которые можно потерять данные на телефоне (опять же, в этих статьях не сообщается какие данные и в каком случае можно потерять). А в месте с данными — и кучу нервов. Всё это может заставить пользователей новичков Линукса отказаться от его использования для работы с iOS.

Данный мануал — это пошаговая инструкция к счастливому обновлению iOS через Linux используя VirtualBox не потеряв данных.

Дальнейшее повествование тестировалось на связке:
  1. Ubuntu (12.10)
  2. iPhone4 (iOS 5.0.1 up to iOS 6.0.1)
  3. VirtualBox 4.2.6 (с установленной Windows 7 x32).

Хотя, наверняка то же самое будет верно и для iPad.

Шаг 1. Настройка VirtualBox

После установки VirtualBox мы должны правильно его настроить. Первое, что мы сделаем — подружим виртуалку с USB 2.0. Это необходимо для правильного распознавания и корректной работы виртуалки с iPhone. Для этого скачаем и установим VirtualBox Extension Pack с этой страницы .

Проверим, что он установился. Зайдите в Файл->Настройки. Должны увидеть что-то типа:


Не забудьте проверить, что текущий пользователь (под которым в Линуксе вы залогинены) включён в группу vboxusers:

$ groups shanker shanker : shanker adm cdrom sudo dip plugdev lpadmin sambashare vboxusers

Если это не так — добавьте пользователя. Например, вот так я себя добавлял:
sudo gpasswd --add shanker vboxusers
Добавление USB фильтров
Следующий шаг нам потребуется для автоматического монтирования iPhone в виртуальную машину. Сначала скажу зачем это нужно. Дело в том, что в процессе обновления iPhone несколько раз переподключается по USB, с разными VID и PID. Из-за этого примонтированный iPhone автоматически не цепляется виртуалкой и начинает открываться в Ubuntu. Если вы всё время обновления iPhone просидите у компа и будете тщательно следить за процессом — у вас есть около минуты чтоб всё исправить: просто снова подцепите к виртуалке iPhone через Устройство->Устройство USB.
А если не успеете… можете наблюдать вот такую картинку:


или вот такую:


а на самом устройстве может появиться вот такая:


Более того, устройство не пожелает выключаться по кнопке выключения (даже если её ну очень долго удерживать). Спасает удерживание 2-х кнопок: выключения и кнопки Home.

Выберите созданную виртуальную машину, зайдите в Настроить->USB и создайте новый фильтр. В полеПроизводитель вбейте Apple Inc..


После создания этого фильтра iPhone после переподключения будет снова цепляться к виртуалке.
Создание общей папки
В процессе синхронизации устройства с виртуалкой и сохранения резервных копий на самом устройстве, виртуалка начинает непомерно сильно раздуваться. Более того, у VirtualBox мною обнаружилась одна неприятная особенность. Если место на диске с виртуалкой заканчивается — файл конфига бьётся. Это приводит к невозможности вернуться к сохранённым состоянием пока не почините файл конфига . А сделать это может быть очень непросто. Т.е. возникает такое двоякое чувство: вы осознаёте, что данные-то вы не потеряли. Но вернуться к состоянию с этими данными не так уж просто.

Итак, переходим в Настроить->Общие папки, выбираем папку на Ubuntu, куда будут сохраняться данные с iPhone. Указываем в параметрах авто подключение и разрешаем виртуалке полный доступ к папке:



Шаг 2. Настраиваем виртуалку Windows 7

Описывать установку iTunes не буду. Подразумеваю, что читатель знает это. Если нет — Google легко подскажет. Давайте-ка лучше подумаем вот о чём. Вам хочется постоянно копировать с виртуалки данные устройства после синхронизации в созданную нами общую папку вручную, каждый раз при обновлении и синхронизации? Хорошенечко подумайте! Чувствуете, как появляется лень, которая заставляет вас сказать: «нет, не хочу! Ни за что!». Вот и моя лень солидарна с вашей. А раз так, то давайте автоматизируем это. Благо, делается это до неприличия просто! Создадим символическую ссылку на общую папку, созданную чуть выше. Запускайте командную строчку от администратора и вводите команду:
mklink /D %appdata%"Apple Computer" "your_share_folder"

Здесь your_share_folder — это путь из виртуалки к вашей общей папке с ней. У меня это диск Z.
Желательно эту процедуру сделать ДО установки в виртуалку iTunes. Иначе папка Apple Computer будет уже создана в системе и вам придётся копировать её содержимое, удалять саму папку и вставлять содержимое в созданную символическую ссылку.

Шаг 3. Создание резервной копии и синхронизация iPhone

Ну, вот теперь самое время заняться тем, для чего мы всё это делали. Подключайте iPhone к компьютеру. Убедитесь, что виртуалка его автоматом подцепила. Создайте резервную копию и синхронизируйте данные. Убедитесь, что эти данные попадают в общую папку. Резервные копии будут в общей папке в директории MobileSyncBackup. Теперь займитесь установкой нового ПО на iPhone и обновлением iOS.
Когда и какие данные можно потерять
Т.к. я не сразу поумнел, а набил себе шишек на лоб до понимания что и как нужно делать, то меня всё же коснулась кара и я потерял кое-какие данные. Теперь я могу поделиться с читателями когда это может произойти и какие данные потеряются, а какие сохранятся.

Я сделал резервную копию. При этом я не делал синхронизацию iPhone с виртуалкой. Т.к. я не добавлял USB-фильтры и не имел возможности вовремя переподключить iPhone, то я увидел все те страшные картинки, которые я приводил выше. Здесь я признаюсь читателю, что эти картинки я нагуглил в интернете. Как можно догадаться, я тогда испытывал не самое хорошее психологическое состояние и у меня не было желания делать какие-то скриншоты.


Природный CPU загрузил на 100% два моих ядра-полушария одним процессом: «как спасти данные на телефоне????»
my_mind$ top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2325 
shanker 20 0 1382m 467m 43m R 200 12,6 28:26.58
how_restore_my_data_on_iPhone?

Пытаясь исправить ситуацию, я подключил iPhone с новым VID и PID. iTunes его увидел и выдал мне ещё одно сообщение, не добавляя оптимизма в уже и без того испорченный день:


Делать было нечего, и я согласился. В итоге iOS через минут 20 обновился и мне было предложено восстановить некоторые данные. И в списке была показана как раз та резервная копия, которую я сделал до обновления системы.



Ну, я и согласился. Процесс пошёл… Он длился всю ночь. К утру у меня данные восстановились. Что я восстановил? Проще будет сказать что я потерял: всю музыку, звуковые файлы, закачанные для установки на звонки и приход СМС и приложения с их данными (в яндекс.картах было 3 ГБ карт закачано). Больше потерь я не заметил. Всё остальное было нетронуто:
  • Списки контактов
  • СМС
  • Фотографии и видеоролики, снятые на камеру
  • Заметки
  • Напоминания
  • Настройки беспроводных сетей


Более того, если я всё правильно понимаю, то даже если вы забыли сделать резервную копию перед обновлением iOS, iTunes всё равно её сделает. А чтобы не потерять данные — не забудьте их синхронизировать с виртуалкой.

P.S. В данном туториале я не касался вопроса синхронизации контактов. Контакты синхронизируются в WAB (Windows Address Book) и при указанных шагах настройки, я полагаю, останутся в виртуалке, а не на общей папке в Ubuntu.
recovery mode ошибки при обновлении iOS update iPad iPhone virtualbox error 1601 1602 1603 iTunes
Alt text

Большой брат следит за вами, но мы знаем, как остановить его

Подпишитесь на наш канал!

Агиевич Игорь aka Shanker

Мысли о собственной жизни ИТ-аналитика, обретающие очертания в голове и формируемые средством их выражения - родной речью