- Как прошить Android-устройство через SD карту
- Понятие прошивки
- Подбор прошивки
- Как подготовить смартфон к прошивке
- Прошивка Android-устройства через SD-карту
- Создание бэкапа прошивки
- Процесс установки модифицированного рекавери
- Этап копирования прошивки и патчей на карту памяти
- Как сделать вайп
- Выполнение процесса прошивки
- Как происходит прошивка пакета гугл-приложений
- Процесс установки патчей
- Настройка девайса после прошивки
- Запуск ОС Андроид с SD-карты для устройств на процессоре Amlogic S912
Как прошить Android-устройство через SD карту
Иногда любимое устройство, работающее на ОС Android, перестает радовать скоростью и стабильностью работы. Зачастую нарушения в функционировании спровоцированы некоторыми проблемами в программной среде смартфона, планшета или другого устройства на Андроиде. Как правило, они возникают из-за того, что прошивка девайса слетела или стала работать с ошибками из-за неправильной эксплуатации. Переустановить операционную систему смартфона можно несколькими способами. Рассмотрим, как прошить Android через SD-карту.
Понятие прошивки
Любые аппараты не смогут работать без базового набора системных файлов и кодов. Прошивка – программное обеспечение, которое разрабатывается производителем непосредственно для управления устройством, однако некоторые инженерные функции ОС остаются заблокированы по умолчанию.
Существуют несколько видов прошивки:
- кастомная – созданная энтузиастами для получения прав полного контроля над устройством;
- официальная — стоковая.
Преимущество первой заключается в полностью ручной настройке девайса, но его производительность может заметно ухудшиться, а второй (заводской) – в быстродействии, полной безопасности, но, как говорилось выше, часть функций будет заблокирована.
Подбор прошивки
К подбору ПО стоит отнестись ответственно, ведь от того, как пройдет установка прошивки Android с SD-карты, будет зависеть стабильность работы Андроид-устройства. Сперва нужно узнать точную модель девайса и версию ОС. Для этого требуется:
- Включить смартфон или планшет.
- Зайти в меню.
- Перейти в пункт «Настройки», найти вкладку «Об устройстве». Здесь располагается полная информация о девайсе: версия ядра и системы безопасности, серийные номера ЦП (центрального процессора), количество ядер, объем ОЗУ.
- Следует обратить внимание на «Номер сборки» и «Модель гаджета». По этой информации следует искать нужное обеспечение.
Теперь стоит определиться с видом прошивки. Неоспоримые преимущества неофициальной прошивки в полном контроле над девайсом, персональной настройке устройства и разблокировке ранее недоступных функций.
Официальная прошивка гарантирует стабильность работы устройства, защиту от вмешательства в системные файлы и оперативное получение обновлений ОС, если девайс новый.
Заводская прошивка доступна на официальном сайте производителя устройства, где можно скачать архив с ПО. Рассмотрим пошаговый процесс на примере планшета Evromedia Play Pad Pro:
- Перейти на сайт: https://www.evromedia.eu/android-tablet-pay-pad-pro.html.
- В списке выбрать свое устройство.
- Скачать инструкцию по установке и саму прошивку.
- Загрузить файл с прошивкой на внешнюю карту, откуда и получится прошить планшет Android через карту памяти.
Далее необходимо подготовить девайс. Следует внимательно выполнять все нижеперечисленные инструкции, и тогда устройство гарантировано обновится без проблем.
Как подготовить смартфон к прошивке
Прежде чем перейти к установке программного обеспечения, обязательно подготовьте устройство к обновлению, иначе во время загрузки девайс даст сбой и больше не запустится. Это связано с обрывом загрузки прошивки. Чтобы избежать таких проблем, нужно:
- зарядить гаджет. Переустановка прошивки потребует много энергии, поэтому лучше зарядить устройство на 100%;
- скачать из Google Play приложения ROM Manager, TWRP или CWM Recovery, Root Checker и любую программу-рутировщик, например, Kingoо Android Root.
Первая утилита нужна для замены стандартного меню загрузки CRM и дает возможность расширенного управления устройством, но требует root-права — права суперпользователя (администратора). Остальные приложения позволяют загружать сторонние прошивки, проверяют смартфон на наличие прав администратора и дают права суперпользователя.
Следует обязательно проверить устройство на наличие прав администратора, поскольку без них кастомную прошивку установить не получится.
- Запустить Root Checker на девайсе.
- В приложении нажать на функцию «Проверка Root».
- Когда тест на права суперпользователя завершится, в верхнем поле, где находится вышеупомянутая функция, появится сообщение о наличии либо отсутствии прав суперпользователя.
Если root-права отсутствуют, их нужно получить, иначе не удастся прошить смартфон Android через карту памяти. Процесс состоит из двух этапов: разрешение установки сторонних приложений и работа с Kingo Android Root.
Доступ к неофициальным утилитам нужен для обновления кастомной прошивки. Чтобы разрешить установку сторонних приложений, необходимо:
- Перейти в «Настройки».
- Выбрать меню «Безопасность».
- Кликнуть на «Неизвестные источники» и разрешить установки из них, сдвинув ползунок вправо.
Следующий этап — работа с программой получения root-доступа Root Kingo Android. Чтобы начать разблокировку устройства, выполните такие шаги:
- Запустите файл Kingo Android Root.apk. Скачать его можно на официальном сайте приложения: http://www.kingoapp.com/.
- Согласитесь с предупреждением. После этого начнется установка программы.
- Откройте установленную утилиту.
- Нажмите на кнопку «No root», после чего запустится процесс получения прав.
Есть вероятность, что программа на устройстве не будет работать, однако существует выход – использовать компьютер. После того, как будут получены права администратора через ПК, вы сможете перепрошить Android с SD карты.
Для разблокировки root с помощью внешнего устройства нужно разрешить отладку USB и подключить девайс к компьютеру. Пошаговая инструкция:
- Перейти в меню «Настройки».
- Кликнуть на раздел «Для разработчиков». Если он заблокирован, необходимо вернуться в меню и выбрать пункт «Об устройстве». Затем несколько раз нажать на «Номер сборки». После этого раздел станет доступным.
- Выбрать режим «Отладка по USB».
- Подключить планшет либо смартфон к ПК через USB-кабель.
- Запустить утилиту Root Kingo Android. Начнется автоматическое скачивание необходимых драйверов.
- Нажать на кнопку «ROOT».
- После завершения рутирования (получения прав) высветится кнопка «Finish».
Прошивка Android-устройства через SD-карту
Весь процесс прошивки девайса через карты памяти сводится к тому, что необходимо получить root-права, установить меню Recovery, если его нет по умолчанию, загрузить файл прошивки в формате zip-архива в корневую папку устройства, обычно в директорию Android. Собственно, процесс рутирования и требуется для того, чтобы получить доступ в корень устройства.
Во время обновления могут возникнуть различные проблемы, в том числе прерывание инсталляции или сбой прошивки, что повлечет за собой потерю важных данных.
Поэтому перед началом процесса стоит сделать резервную копию — бэкап. Это поможет восстановить файлы и работоспособность девайса.
Создание бэкапа прошивки
Неотъемлемая часть обновления устройства — резервное копирование системных файлов. Бэкап можно сделать различными утилитами, например, стоковым либо кастомным Recovery.
Базовые рекомендации перед backup:
- заряд гаджета до 70, а лучше до 100%;
- свободное место на съемной карте памяти от 600 МБ (зависит от размера бэкап-файла).
Процесс установки модифицированного рекавери
Стоковый Recovery не позволит установить кастомную прошивку, поэтому с его помощью ставится исключительно официальное программное обеспечение.
Для установки «самодельного» ПО потребуется модифицированный рекавери, который позволит инициализировать неофициальную прошивку. Для этого нужно:
- Получить root-права.
- Запустить ранее скаченный TWRP или ROM Manager, если выбрано рекавери ClockWorkMod (CWM).
- Дать программе права суперпользователя.
- Через приложение установить рекавери.
Этап копирования прошивки и патчей на карту памяти
Не рекомендуется торопиться с установкой ПО, для начала лучше ознакомиться с ошибками и другими комментариями к прошивке.
После создания бэкапа всех файлов, который можно перенести на компьютер либо облачное хранилище, например, Google Drive, необходимо создать на SD-карте папку для архива с прошивкой и патчами.
Затем перекинуть файл в формате zip с ПО и патчами в созданную директорию.
Как сделать вайп
“Wipe” в переводе с английского означает вытирать, форматировать. Если сделать вайп, выбранные в Recovery папки полностью очистятся от находящиеся там файлов, настроек и прочего. Как инструмент для Wipe используйте приложение TWRP. Придерживайтесь этой инструкции:
- Выключите девайс и зайдите в меню Recovery с помощью одновременного нажатия кнопок включения и регулировки громкости + или -. Для устройств разных производителей способы отличаются, поэтому этот шаг лучше уточнить на сайте производителя или в интернете.
- В меню рекавери TWRP выбрать пункт «Wipe», а затем – «Advanced Wipe».
- В списке выбрать все разделы, кроме «Android Secure».
- Передвинуть ползунок «Swipe to Wipe» вправо.
Следует помнить, что не рекомендуется прерывать вайп, так как это отрицательно скажется на стабильности системы.
Выполнение процесса прошивки
Этот процесс подразумевает распаковку архива с прошивкой и дальнейшую установку корневых файлов, поэтому для кастомной прошивки необходимо воспользоваться скачанным архивом с программным обеспечением. Чтобы запустить процесс прошивки, требуется выполнить ряд действий:
- Войти в меню Recovery.
- В меню Recovery выбрать раздел «Install» или «Install from SD card», а также другие подобные названия раздела, по смыслу подходящие под «Применить ZIP-архив».
- С помощью диспетчера файлов выбрать архив с прошивкой.
- Нажать «Swipe to Confirm Flash».
После этого начнется процесс прошивки. По завершению, возможно, придется дополнительно установить Google-сервисы и системные службы девайса, если они не вшиты в кастом ROM. Для этого нужно скачать архив с указанными компонентами.
Как происходит прошивка пакета гугл-приложений
Бывает, что стандартный пакет гугл-утилит (GAPPS) отсутствует в новой прошивке (как правило, в прошивках Cyanogen Mod или AOKP) либо лицензия Гугла не разрешает установку служб по умолчанию на конкретном смартфоне.
Процесс смены версии ОС не предусматривает автоматическую загрузку приложений Google — почты, браузера, Coogle Play и так далее. Эти программы устанавливаются вручную. Придерживайтесь таких шагов:
- Скачайте архив с «GAPPS».
- Повторите те же действия, как в пункте «Процесс прошивки».
- Установите Gapps из скачанного приложения Open Gapps Manager из Google Play.
Процесс установки патчей
Патчи – модифицированные версии официальных приложений. Обычным установщиком запустить их нельзя, поэтому снова рекомендуется открыть приложение TWRP. Процесс установки патчей ничем не отличается от установки прошивки и GAPPS.
Настройка девайса после прошивки
Первичный запуск устройства может оказаться долгим, что связано с автоматической оптимизацией системы. Через несколько минут обновленный Android запустится и предложит провести первую настройку. После старта ОС нужно выбрать язык, установить время и подключиться к точке доступа.
Источник
Запуск ОС Андроид с SD-карты для устройств на процессоре Amlogic S912
В статье детально, с приведением исходного кода, описывается работа, проведенная по переносу и запуску с SD-карты программной прошивки с ОС Андроид для устройств на процессоре Amlogic S912.
Мне нравятся миниатюрные компьютеры, выполненные по технологии система на чипе (SOC). За крошечные размеры и небольшое энергопотребление по сравнению с персональными компьютерами. Используя такие устройства, можно решать широкий круг задач. На миникомпьютеры можно установить как ОС Android (так делает большинство производителей данных «игрушек»), так и различные дистрибутивы Linux или Chrome OS.
Моя текущая работа — это разработка приложений для Андроид. В этой работе очень желательны тесты на реальных устройствах на различных версиях системы. Есть у меня пара миникомпьютеров от компаний Rockchip и Amlogic, на которых я также выполняю свои тесты. Андроид, как операционная система, довольно динамично развивается и сейчас на рынке используются ее модификации от 4.4 до 10 версии. А на подходе уже Андроид 11-й версии.
Многие компании, занимающиеся разработкой телеприставок на базе Андроид, вынуждены иметь недолгий срок сопровождения свои детищ в виду быстрого развития как аппаратных, так и программных средств. Один из моих основных рабочих инструментов для тестов — это приставка KM8P на процессоре S912 с двумя гигабайтами ОЗУ и предустановленной операционной системой Андроид версии 7.1. Время идет, и за пару-тройку лет на рынке последовательно появились версии 8.1, 9.0 и 10.0 ОС Андроид.
Очень хотелось бы потестировать свое приложение под этими самыми версиями. Но что делать? Или нужно покупать зверушки на новых процессорах и версиях Андроид, или заниматься самостоятельной адаптацией новых версий Андроида на имеющихся устройствах. Первый путь легок и прост: заплатив не очень большую сумму, проблема легко решается. Но легких путей мы не ищем, поэтому выбираем второй путь. Второй путь гораздо труднее, но интереснее. К тому же, и сам чип S912 является отличным 8-ядерным процессором, не намного уступающим по производительности новейшим процессорам Amlogic на чипе S905x.
Итак, был выбран второй вариант, как более интересный и отвечающий моим потребностям. Встал вопрос: а каким путем пойти? Текущая версия Андроид 7.1 под капотом имеет ядро Linux 3.14.29 и ПЗУ NAND на чипе SK Hynix H27UCG8T2ETR, для которого Amlogic разработала собственный драйвер aml_nftl_dev.ko.
Все новейшие версии Андроид базируются на ядре 4.9. И желательно использовать именно его. Однако, политика Amlogic такова, что последние несколько лет SDK Android компания предоставляет только юридическим компаниям, занимающимся производством устройств на базе чипов Amlogic.
Тем не менее, на просторах github’а можно найти исходники ядра 4.9 на основе SDK Android от Amlogic 2017-18 года. Например, git-репозитарий компании Khadas. Однако, дело, в том, что драйвер aml_nftl_dev для версии ядра 4.9 отсутствует. Что делать? Адаптировать данный драйвер для ядра 4.9? Но помимо адаптации драйвера, придется также править так называемое дерево устройств ядра. Это трудный путь.
Множество устройств на процессоре S912 имеет более современное ПЗУ с контроллером EMMC. К счастью, для обладателей таких устройств совсем недавно (в июне-июле 2020 года) появились прошивки на Андроид 9, собранные энтузиастами (ознакомиться можно здесь и здесь). Я не мог воспользоваться данными прошивками в виду отсутствия на моем устройстве чипа EMMC. Однако, прекрасно понимал, что имея на приставке слот для SD-карточки, для работы с которым используется все тот же драйвер MMC, что и для работы с микросхемой EMMC, можно попытаться использовать SD-карту вместо ПЗУ.
К сожалению, ситуация осложнялась тем, что Amlogic изначально не предусмотрел старт системы с SD-карты. Тем не менее, кое-что было. Amlogic реализовала возможность обновления прошивок с SD-карты. Эта и другие возможности были достигнуты компанией Amlogic путем существенной доработки загрузчика u-boot под свои нужды. В частности, имеется возможность запустить ядро системы с FAT-раздела SD-карты. Итак, было принято решение выяснить, можно ли адаптировать драйвер MMC для возможности старта с SD-карты. Я погрузился в изучение исходного кода драйвера.
Изучая исходный код, я выяснил, во-первых, что драйвер для монтирования загрузочного раздела ограничивается работой только с микросхемой EMMC, а остальные устройства игнорирует. А такими устройствами как раз является SDMMC-слот и SDIO-порт. А почему бы не изменить код так, чтобы драйвер не пропускал устройство SDMMC, а продолжал бы с ним работать, как с EMMC?
Во-вторых, было определено, что разработчики Amlogic используют собственную структуру данных для хранения таблицы разделов диска и записывают ее по некоторому смещению на диске. Структура данных несложная, в ней хранится смещение, имя, размер и некоторые другие характеристики раздела. После определения типа устройства, драйвер читает таблицу разделов на диске и создает блочные устройства в системе согласно этой таблице.
Получается, что разрешив драйверу работать с SDMMC, как с EMMC и записав таблицу разделов по заранее известному адресу на SD-карте, я смогу, таким образом, сымитировать EMMC и загрузить систему с SD-карты! Подумал, почему бы не сделать утилиту, которая будет записывать таблицу разделов в нужном формате и при необходимости проверять ее корректность. Сказано — сделано. Тем более, что сделать ее было несложно, благо практически вся инфраструктура уже была описана в исходном коде драйвера. Исходный код утилиты размещен на github’е, репозиторий amlpt. Утилита создана в ОС Ubuntu. Но, думаю, при необходимости, ее не сложно будет перенести и на Windows.
Для начала нужно заполнить параметры таблицы разделов в файле mmcparts_a9.c, указав там имена, смещения, размеры и тип разделов. Для обычных разделов указывается тип — 0x1, для разделов типа cache — 0x2, а для разделов типа data — 0x4. За начальное смещение первого раздела я взял значение 0x2800000 (40Мб). Далее заполнил имена, размеры и типы разделов в структурах partitions согласно таблице разделов из дерева устройств. Для 9-го Андроида таких разделов насчиталось 17.
Заполнив данные в файле mmcparts_a9.c, создаем утилиту для записи таблицы разделов, запустив скрипт make_amlptwrt.sh. Данный скрипт создает исполняемый файл amlptwrt, с помощью которого можно сформировать двоичный файл mmc_parts.bin. Это и есть наша таблица разделов, которую читает драйвер MMC. Аналогично запускаем скрипт make_amlptrdr.sh для создания утилиты чтения таблицы разделов amlptrdr, с помощью которой мы можем проверить правильность заполнения данной таблицы. После запуска amlptrdr в консоли отобразится таблица разделов с именами, смещениями и размерами в мегабайтах. Примерно так:
/AML/amlpt$ ./amlptrdr
[mmc_verify_partition_tbl] mmc read partition OK!
show_mmc_partitions
[disk p01] logo offset 40 Mb, size 8 Mb
[disk p02] recovery offset 48 Mb, size 24 Mb
[disk p03] misc offset 72 Mb, size 8 Mb
[disk p04] dtbo offset 80 Mb, size 8 Mb
[disk p05] cri_data offset 88 Mb, size 8 Mb
[disk p06] rsv offset 96 Mb, size 16 Mb
[disk p07] metadata offset 112 Mb, size 16 Mb
[disk p08] vbmeta offset 128 Mb, size 2 Mb
[disk p09] param offset 130 Mb, size 16 Mb
[disk p10] boot offset 146 Mb, size 16 Mb
[disk p11] tee offset 162 Mb, size 32 Mb
[disk p12] vendor offset 194 Mb, size 130 Mb
[disk p13] odm offset 324 Mb, size 128 Mb
[disk p14] system offset 452 Mb, size 1350 Mb
[disk p15] product offset 1802 Mb, size 128 Mb
[disk p16] cache offset 1930 Mb, size 1120 Mb
[disk p17] data offset 3050 Mb, size 4050 Mb
Для того, чтобы драйвер MMC заработал с устройством SDMMC, я внес два небольших исправления в исходный код драйвера, в файл drivers/amlogic/mmc/emmc_partitions.c:
а) Во-первых, разрешаем драйверу работать с устройствами, отличными от EMMC. Для этого меняем функцию is_card_emmc следующим образом:
Конечно, это самое никчемное изменение, которое можно было придумать, но для достижения моей цели этого достаточно. Как говорится, матушка-лень впереди планеты всей.
б) Определяем смещение, по которому будет читаться таблица разделов. Правку делаем в функции mmc_read_partition_tbl:
Если посмотрим на исходный код драйвера, то сумма констант MMC_BOOT_PARTITION_SIZE + MMC_BOOT_PARTITION_RESERVED равна 36 Мб. Следует отметить, что данные правки подходят для моего варианта, когда в устройстве отсутствует чип EMMC или в дереве устройств он отключен. Для других случаев придется придумывать более корректный вариант правок.
Итак, смещение, по которому будет записана таблица разделов на SD-карте равна 36 Мб. Для того, чтобы разместить нашу таблицу разделов, созданную утилитой amlptwrt, на SD-карте достаточно выполнить команду:
При этом предполагается, что /dev/sdb — это SD-карта.
Далее компилируем ядро, создаем boot.img с нулевым initrd и примерно такими параметрами ядра:
Вспомним, что u-boot от Amlogic умеет стартовать ядро Linux c SD-карты с раздела FAT. Создаем на SD-карте в самом начале раздел FAT размером 32 Мб. Этого вполне достаточно для размещения нашего boot.img и dtb.img. В дереве устройств dtb.img необходимо отключить EMMC, чтобы нашей SD-карте было присвоено имя /dev/mmcblk0. Или не отключать, но тогда нужно будет изменить в boot.img параметры ядра, чтобы ядро смогло успешно подключить системный раздел, который в данном случае будет иметь имя /dev/mmcblk0p14.
И, как заключительная часть марлезонского балета, осталось записать разделы Андроид-прошивки на SD-карту. Для этого распаковываем прошивку и записываем на SD-карту подходящие разделы согласно смещениям в таблице разделов:
Те разделы, которые отсутствуют в прошивке, я просто заполнял нулями. Некоторые разделы, такие как system или vendor и некоторые другие, могут являться sparse-разделами. Их предварительно необходимо преобразовать в обычные разделы:
С разделами cache и data нужно поступить немного по-другому. Смотрим нашу таблицу разделов, созданную утилитой amlptwrt, и с помощью программы fdisk создаем соответствующие разделы с нужными смещениями и размерами на SD-карте и форматируем их в файловую систему ext4:
После форматирования, с помощью той же утилиты fdisk, удаляем уже ненужные разделы /dev/sdb2 и /dev/sdb3.
Чтобы загрузчик u-boot распознал, что нужно загрузиться именно с SD-карты, размещаем в FAT-разделе файл aml_autoscript. Сам файл aml_autoscript может быть создан с помощью утилиты mkimage из простого текстового файла следующего содержания:
Вот и все, что необходимо для переноса прошивки с Андроид на борту на SD-карту.
Несколько прошивок, которые были сделаны по данному методу, опубликованы в соответствующей теме на форуме 4PDA. Если что-то непонятно, задавайте вопросы в комментариях. Чем смогу — помогу.
За сим позвольте откланяться и удачи всем в переносе прошивок!
Источник