Новое – это хорошо перепрошитое старое

Спустя эээ… часов этак 36 с начала процесса, у меня есть (снова) новый телефон. Телефон-то конечно старый, а вот начинка в нем новая. Почему это заняло столько времени?

Телефончик у меня не новый. Samsung Galaxy Captivate, двухлетней свежести (к моменту покупки он уже год имелся в продаже). Я его давно разблокировала и зарутила, но время не стоит на месте, всякие личности, побывавшие на конференции Гугля хвастаются новыми телефонами, вот и мне захотелось чего-то нового. В следующий раз я схожу в магазин и куплю что-нибудь новое – новый журнал, например. Авось желание пройдет.
Нет, я, конечно, весьма довольна результатом. Но вот сам процесс…
До перепрошивки у меня стоялa Froyo. После нее уже успели выйти Gingerbread, Ice Cream Sandwich и JellyBean. Вдобавок ко всему оказалось, что кроме операционок можно прошивать еще и ядра (вот эту часть я не очень понимаю, для меня ядро – часть операционки, но тут уж ничего не поделать, темная я). Я почитала всяческие обзоры и сравнения, и решила, что поставлю cyanogenmod, девятку. Поддерживают его очень активно, девятка построена на ICS (Ice Cream Sandwich), и уже имеется десятая версия (на JellyBean). Ядро у него свое собственное.
Теоретически, ничего сложного не было:
0) Сделать Nandroid backup текущей прошивки
1) Записать новый ROM на карточку,
2) Записать туда же Google Apps (они из-за лицензионных вопросов идут отдельным пакетом).
3) С помощью heimdall (это такой Odin для бедных пользователей Ubuntu) залить новое ядро на телефон (через Download mode)
4) Перегрузиться в recovery mode, с помощью нового ядра потереть все данные и кэш
5) С помощью того же recovery mode установить новый ROM, установить Gapps, произвести еще некоторые танцы с бубном, перегрузиться, и начинать восхищаться (после установки подходящего модема).

Что же было в реальности:
0) Сделала backup. Честное, благородное слово, все, как было написано. Он и сейчас у меня есть.
1) Скачала новое ядро и ROM по ссылкам из wiki, выложенного на сайте Cyagenmod именно для моего телефона. Вот эта злодейская инструкция. Записала все, что нужно на карточку.
2) см. выше
3) Залила ядро. Никаких проблем с заливкой.
4) Начала жизнь с чистого листа.
5) Поставила новый ROM. Перезагрузилась. Экран показал стандартную заставку с номером модели, после чего окрасился во все цвета радуги (много-много разноцветных полосок), после чего ушел в boot loop. Зараза. Лечится выниманием батареи.
Почитала еще немного про ядра. Попыталась перезалить то же самое ядро. Получила тот же самый результат.
Почитала еще немного про ядра. Узнала, что народ очень хвалит Devil kernel. Добыла искомое, залила на телефон. Перезагрузилась – все ОК. Меню значительно прикольнее, чем у того ядра, что рекомендовали в wiki… о, mtcarey’s Kernel. Есть возможность выбирать архив для установки не только с внутренней карточки, но и с внешней. Есть возможность телефон подсоединить к компу и залить, что нужно (очень ценно) прямо не выходя из kernel menu. Есть даже file manager – и очень приличный.
Установила еще раз ту же девятку (stable version). Перезагрузилась. О, тепленькая пошла…… гляди-ка, заработало! Красиво, да. Вот только почему-то полностью отсутствует сигнал и телефон перезагружается, когда ему вздумается. И греется как-то не по-детски. Что за нафик, спрашивается?
Начала исследовать вопрос. Выяснилось, что файлы на партиции /efs имеют какой-то странный размер. Если я правильно поняла, то как раз там лежит вся инфа, которая обеспечивает саму связь. Ладно, оригинальные файлы у меня имеются, попробовала их скопировать поверх. Ан нет – говорят, места не хватает. Почему? Неужели система оказалась такой… большой… и сожрала все доступное место?
Дальше я попременно ругалась на телефон и на себя и занималась шаманством. Файлы нельзя было удалить – они тут же восстанавливались, в том же виде. Зайти через adb shell и посмотреть, что там происходит получилось наполовину. Ничего нового я не увидела, а adb почему-то отказали в root’е. Никаких запросов на root даже не возникало – возникало только сообщение, что adb сильно не повезло в этой жизни, и порулить ему не дадут.
Потом до меня дошло. Судя по всему, при первой неудачной установке вся партиция /efs оказалась битой. Отсоединить я ее тоже не могла. Поняла я это, правда, спустя еще несколько переустановок системы. И стабильная девятка. И нестабильная девятка. И nightly build десятки. И перелопаченный кем-то build десятки в комплекте с Gapps и Su. Результат был один и тот же, да вдобавок телефон иногда вырубался и вообще отказывался включаться, если только не залить на него ядро заново.
Немного внушал надежду тот факт, что у меня есть бэкап и что конкретно эта модель телефона считается unbrickable. Нет, если, конечно, напрямую кирпичом вдарить, то от телефона останутся рожки да ножки, но мне его сломать не удалось 🙂 Пациенту, конечно, временами было совсем плохо, но реаниматолог свое дело знает.
А вы знаете, что случается с надеждой, да?
Она умирает последней.
(зловещий хохот)
После очередной перезагрузки мне все это надоело. Я загрузилась в recovery mode и выбрала восстановление из заранее сделанной резервной копии.
Тада-да-да…
“Unable to restore boot image”
К слову сказать, никакого boot.img в каталоге и не было. Были всякие другие, соответствующие разным частям системы. А бутявки не было. Есть так же вероятность, что восстанавливаться из такой копии нужно только той же версией ClockwordMod Recovery, которой эта самая копия была сделана. За истинность данного факта я поручиться не могу. Могу поручиться за другой факт – телефон опять перестал грузиться.
Я убедилась, что обычный процесс залить-нормальное-ядро-поставить-модифицированную-десятку работает нормально. Уже хоть что-то. Но сигнала все равно нет, а зачем мне телефон, который не звонит и (по-прежнему) уходит в перезагрузку когда ему вздумается?
Пошла на поклон сами-знаете-куда. Нет, не к мужу 🙂 в Google. Узнала про волшебную утилиту Odin3 One-Click Downloader, которая сама все делает – и телефон определяет, и прошивку скачивает, и заново перепрошивку делает. Радостно скачала ее и, обломавшись об exeшный файл, вспомнила, что виртуальная винда у меня давно почила в бозе, а если б и была, там вечно проблемы с обнаружением телефона. Опечалилась.
Вспомнила, что народ время от времени искал на форуме stock rom – оригинальную прошивку именно от Rogers’а. Нашла прошивку. Узнала, что ее заливают тем же Одином… елы-палы. Пошла гуглить и тут мне немного повезло. Какой-то энтузиаст из Бразилии описывал перезаливку прошивки с помощью того же heimdall’а (нет, я понимаю, что RTFM, но для этого надо еще подозревать, что heimdall не только ядра умеет щелкать).
На случай, если кому-нибудь это спасет остатки волос на голове и несколько сотен нервных клеток:

heimdall flash --primary-boot boot.bin --cache cache.rfs --factoryfs factoryfs.rfs --modem modem.bin --secondary-boot Sbl.bin --kernel zImage --verbose

Теоретически, после этого я должна была получить чистый и незапятнанный телефон обратно.
Практически (как вы, наверное, догадываетесь), телефон отказался грузиться. Ну не совсем. Он показывал лого телефона, переходил к музычке и логотипу Rogers’а, после чего начинал все сначала. Boot loop во всей его красе.

Я опять впала в уныние, посмотрела на цены на Galaxy Note и впала в уныние еще дальше. Чисто механически провела процедуру “реинкарнируйте ваш телефон за четыре простых шага” еще раз. Перезагрузилась. Набила абы как всячески данные. Через некоторое время заметила странную вещь – телефон больше не перезагружался сам по себе.
Затаив дыхание, я вошла в пещеру дракона заглянула на партицию /efs. Оппа… все файлы правильного размера. Но сигнала нет.
Зашла в данные о телефоне. Номер телефона мой, а IMEI – нет. Ну да, это тот самый generic IMEI о котором так долго говорили на xda-developers. Ну да… и у меня ведь есть нормальные файлы с моим родным IMEI и прочими радостями? Есть. А что мне их мешает скопировать? А ничего. Здравствуй моя Мурка, здравствуй дорогая… о, IMEI вернулся, и телефон даже знает, что он принадлежит Rogers’у… но сигнала все равно нет. Не тот ли это случай, когда нужно установить новый модем? А проверим. А вот именно он и есть…

Уфффф…

Что-то мне все это напоминает. Аааа, знаю. Первые шаги по установке RedHatLinux. 6.0, кажется. С поиском шрифтов, с прописыванием их во всех нужных местах, с настройкой ppp, с установкой и настройкой RussianApache, поддерживающего пять разных кодировок.

Почувствуйте себя молодыми. Перепрошейте свой телефон!!! 🙂