Может ли прошивка обновляться?
Большинство производителей выпускают обновления для прошивок своих устройств в регулярном порядке, одновременно предоставляя необходимые программные средства, для записи новых прошивок. Тем не менее право выпуска новой прошивки для того или иного устройства остаётся именно за производителем. Для компьютерных комплектующих производитель разрабатывает новую прошивку и предоставляют её своим клиентам, тем самым позволяя произвести обновление, выпускаемое обычно в течение нескольких лет после выпуска устройства.
В качестве примера можно привести производителя материнской платы, выпускающего для неё прошивку, которая может включать новые функции, поддержку новых типов процессоров или оперативной памяти, обновления решающие конкретные проблемы в работе оборудования.
Каждый из производителей может предоставлять обновление прошивки для своих устройств: Wi-Fi роутер может получать такие обновления, увеличивающие стабильность в работе, а оптический привод, после получения новой прошивки, может начать работать с новыми дисками и т.д
Но, важно понимать, если техническая часть устройства не способна выполнять ту или иную функцию, то новая прошивка вряд ли поможет в этом
А где же можно скачать прошивку и откуда её взять? Как правило, найти прошивку можно на сайте производителя
Нужно посмотреть на странице загрузки, загрузить новую прошивку, а для полной осторожности лучше руководствоваться предоставленной документацией
Бывают ситуации, когда производителем заблокирована возможность обновления или замены прошивки, тогда умельцам приходится выпаивать чип памяти и устанавливать другой, уже с необходимой микропрограммой. Сам процесс прошивки является серьёзным шагом, и если что-то пойдёт не так, то устройство может превратиться, как часто говорят про телефоны в «кирпич». Зачастую с решением таких проблем не может помочь даже сотрудник сервисного центра.
Теперь вам известно, что такое прошивка, что она делает и где хранится. При прошивке своего устройства нужно использовать ПО именно для него, будь то смартфон, или материнская плата; знайте, что всё делается на свой страх и риск.
ВАЖНО: устройство Android и терминология
Любая операционная система на базе Android состоит из ряда компонентов:
- загрузчик (recovery) — аналог BIOS в настольных ПК,
- ядро — собственно операционная система без драйверов и утилит,
- драйвера — все необходимое для работы с аппаратным оборудованием,
- набор базовых утилит — необходимы для совершения звонков, отправки смс и других привычных действий (может объединяться с лаунчером в один пакет),
- «лаунчер» — визуальная оболочка, определяющая внешний вид и логику работы с интерфейсом,
- предустановленные программы — все, что необходимо за рамками базовых действий телефона, даже браузер и калькулятор
Будем условно-упрощенно принимать, что собственно «чистый» Android AOSP представляет собой компиляцию ядра, драйверов, базовых утилит и стокового графического интерфейса Google.
Для того, чтобы записать этот набор в накопитель смартфона и запустить его, необходим загрузчик-рекавери. Причем, разным вариантам Android может соответствовать разный рекавери.
Рекавери может быть стандартным (разработки Google), фирменным (от компании-разработчика смартфона) или сторонним (разработанные энтузиастами).
Его можно менять при условии совместимости разных вариантов (примерно так же, как BIOS материнских плат).
Удаляем и добавляем приложения
Все предустановленные программы можно найти в двух папках:
- /system/app/;
- /system/priv-app/.
Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.
Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/. Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.
Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk. А можно и не копировать. Тогда прошивка будет без календаря.
Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.
Building the kernel
Then build the kernel with this:
build/build.sh
The kernel binary, modules, and corresponding image are located in the
directory.
Building with Bazel (Kleaf)
Android 13 introduced building kernels with
Bazel, replacing .
To build the GKI kernel for the aarch64 architecture, check out
an Android Common Kernel branch no earlier than Android 13 and
then runt he following command:
tools/bazel build //common:kernel_aarch64_dist
To create a distribution, run:
tools/bazel run //common:kernel_aarch64_dist -- --dist_dir=$DIST_DIR
Thereafter the kernel binary, modules, and corresponding images are located in the
directory. If is unspecified, see output
of the command for the location of the artifacts. For details, refer to the
documentation on AOSP.
Building the Vendor Modules for the Virtual Device
Android 11 introduced
GKI,
which separates the kernel into a Google-maintained kernel image and vendor maintained-modules,
which are built separately.
This example shows a kernel image configuration:
BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
This example shows a module configuration (Cuttlefish and Emulator):
BUILD_CONFIG=common-modules/virtual-device/build.config.cuttlefish.x86_64 build/build.sh
In Android 12 Cuttlefish and Goldfish converge, so they share
the same kernel: . To build that kernel’s modules, use this build
configuration:
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.x86_64 build/build.sh
Android 13 introduced building kernels with
Bazel (Kleaf), replacing .
To build the ‘s modules, run:
tools/bazel build //common-modules/virtual-device:virtual_device_x86_64_dist
To create a distribution, run:
tools/bazel run //common-modules/virtual-device:virtual_device_x86_64_dist -- --dist_dir=$DIST_DIR
For more details on building Android kernels with Bazel, see.
Kleaf — Building Android Kernels with Bazel.
For details on Kleaf support for individual architectures, see
.
Kleaf support for devices and kernels
The following table lists Kleaf support for individual device kernels. For unlisted devices,
please contact the device manufacturer.
Device | Repo branches | Kleaf support | support |
---|---|---|---|
Rockpi4 |
common-android-4.4 common-android-4.9 common-android-4.14 common-android-4.19 common-android-4.19-stable common-android11-5.4 common-android12-5.4 common-android12-5.10 |
||
common-android13-5.10 common-android13-5.15 |
(official)1 | ||
common-android14-5.15 common-android-mainline |
|||
common-android13-5.10 | |||
common-android13-5.15 | (official)1 | ||
common-android14-5.15 common-android-mainline |
|||
common-android13-5.10 common-android13-5.15 |
(official)1 | ️ (unmaintained)2 | |
common-android14-5.15 common-android-mainline |
|||
common-android13-5.10 common-android13-5.15 |
|||
common-android14-5.15 common-android-mainline |
|||
Rockpi4 | common-android13-5.10 common-android13-5.15 |
||
Rockpi4 | common-android14-5.15 common-android-mainline |
||
hikey-linaro-android-4.14 hikey-linaro-android-4.19 common-android12-5.4 common-android13-5.10 |
|||
common-android12-5.10 common-android13-5.10 common-android13-5.15 |
|||
common-android14-5.15 common-android-mainline |
|||
1″Official» means that this is the official way to build the kernel, 2″Unmaintained» means that building kernel with this method should |
Предварительные ласки, или настройка системы
Для начала определимся с тем, что нам потребуется для сборки AOSP из исходников. Во-первых, Linux, желательно Ubuntu, и, если хочешь собрать Android версии 2.3.x (Gingerbread) и выше, ОС должна быть 64-разрядной. Замечу также, что по заявлению команды разработчиков, «беспроблемная» сборка сейчас возможна только под Ubuntu версий 10.04–11.10, тогда как на 12.04 соберется только последняя версия Android. Тем не менее я проводил все эксперименты на 12.04 и не встретил каких-либо ошибок или некорректной работы прошивки.
Кроме того, нужно позаботиться о достаточном количестве дискового пространства и оперативной памяти. Исходники Android весят около 14 Гб, плюс в процессе сборки испарится еще где-то 15 Гб. Оперативной памяти потребуется не меньше 2 Гб, да и то вкупе с областью подкачки, размером 3–4 Гб. Если все эти требования удовлетворены, можно приступить к подготовке системы. Для начала установим необходимые пакеты:
Немного слов о JDK: рекомендуется использовать Oracle Java JDK, но, так как он больше не поставляется в репозиториях Ubuntu, его нужно скачать с сайта Oracle и установить самостоятельно (goo.gl/N4IB2). Кроме того, нам понадобится гугловский инструмент для работы с репозиториями repo, представляющий собой Python-обертку вокруг системы контроля версий git:
Теперь система готова, и нам нужны исходники Android.
Замена ПО через компьютер
Способов прошивки телефона при помощи ПК может быть несколько, в зависимости от модели устройства и установленного на нём процессора. Однако в любом случае пользователю понадобится качественный USB-кабель, лучше всего тот, что шёл в комплекте с телефоном. Потеря соединения с компьютером в процессе перепрошивки закончится для смартфона плачевно, поэтому не следует пренебрегать этой деталью.
Устройства на процессоре MTK прошивают следующим образом:
- Распаковывают архив прошивки в папку на диске C (в названии последней не должно быть кириллических символов).
- Запускают программу SP Flash Tool, нажимают клавишу Scatter-loading и указывают путь к одноимённому файлу, который находится в папке с распакованной прошивкой.
- Снимают галочку со строки Preloader. Этот пункт обязателен: если в процессе прошивки что-то пойдёт не так, работоспособный загрузчик (preloader) позволит восстановить смартфон даже из состояния «кирпича». Если же файл будет перезаписан неправильно, пользователю придётся потратить на ремонт телефона немалые деньги.
- Нажимают на кнопку Download.
- Подключают к компьютеру выключенный телефон и ждут окончания процесса, об чем уведомит появление окна с зелёным кружочком.
- Отсоединяют смартфон от ПК и включают его.
Прошивка смартфонов на Spreadtrum несколько сложнее. Для осуществления этой процедуры необходимо:
- Скачать файл прошивки в формате .pac и переместить его в корень диска C (распаковывать не нужно).
- Открыть Research Download, нажать на значок шестерёнки в левом верхнем углу и указать путь к прошивке. После этого программа на некоторое время зависнет — это нормально.
- Нажать на кнопку Play, переводя прошивальщик в режим ожидания устройства.
- Выключить телефон, вытащить из него батарею (если она съёмная) и вставить обратно.
- Зажать клавишу уменьшения громкости и подключить смартфон к ПК.
- Если прошивка успешно стартовала, следует дождаться её окончания, то есть надписи Passed. Клавишу громкости лучше не отпускать до завершения процесса. Если же программа выдаёт ошибки либо не реагирует на подключение смартфона, следует убедиться, что на компьютере установлены все необходимые драйверы и посетить сайт разработчика Research Download, чтобы узнать причину проблемы.
- По завершении прошивки нажимают на кнопку «Стоп» в прошивальщике и отключают телефон от компьютера. Если батарея съёмная, её вынимают, вставляют обратно и включают устройство.
Прошивка вручную с помощью кастомных прошивок
Следует отметить, что это ручной метод. Так что, если вы сделаете что-то не так, пеняйте на себя. Мы бы посоветовали вам попробовать этот метод, если вы хорошо подкованы в техническом плане. А также, мы не несем ответственности, если этот метод не работает или повредит ваш телефон. Делайте это на свой страх и риск.
Что потребуется:
- Ваш смартфон
- Сделайте резервную копию вашего устройства, если вы еще не сделали
- Кастомный ROM (прошивка)
- Кастомное рекавери
- Разблокированный загрузчик
- Как минимум 50% заряда на вашем устройстве
Что нужно сделать
№ 1 — скачать прошивку
В Интернете тонны пользовательских прошивок для любого телефона с ОС Android. Итак, найдите ту, которая вам нравится больше всего. Помните, вам нужно найти правильный ROM для вашего телефона. Проверьте, совместима ли прошивка с вашей моделью телефона и т. д. Затем загрузите ее (ZIP-файл) и сохраните на телефоне.
№ 2 — разблокировать загрузчик (необязательно)
Почти все телефоны поставляются с разблокированным загрузчиком. Однако некоторые производители блокируют загрузчик. Если это так, то вам нужно связаться с производителем телефона, чтобы разблокировать загрузчик.
№ 3 — Загрузиться в Recovery
На этот раз вам нужно будет использовать комбинацию кнопок для загрузки в режиме восстановления. Комбинации могут отличаться от устройства к устройству. Вы можете выполнить поиск в Интернете для поиска информации о конкретной комбинации кнопок, чтобы войти в режим восстановления для вашего конкретного устройства.
Однако в большинстве случаев нужно одновременно зажать кнопку уменьшения громкости + питания. Итак, одновременно удерживайте эти две кнопки не менее 5 секунд. При этом ваш телефон загрузится в режиме восстановления.
№ 4 — процесс прошивки
Находясь в режиме восстановления, вы увидите определенный экран, который будет зависеть от рекавери, который вы используете. Доступно несколько рекавери, таких как ClockworkMod, TWRP, Cyanogenmod recovery, Кусщмукн Red Wolf и другие. Однако, поскольку ClockworkMod и TWRP являются наиболее популярными, в этом разделе мы расскажем о методах использования этих двух режимов восстановления.
Итак, выберите «Install» (на TWRP) или «Install zip from sdcard» (на ClockworkMod) на экране режима восстановления, чтобы инициализировать процедуру прошивки. Затем найдите файл с прошивкой, который вы только что загрузили.
После того, как вы нашли и выбрали файл с прошивкой (.zip), вы можете установить ее. Выберите «Swipe to Confirm Flash» (на TWRP) или «Apply sdcard / update.zip» (на ClockworkMod). После этого ваш телефон начнет установку выбранной прошивки.
№ 5 — Очистить кэш
После прошивки телефона вы можете стереть данные кеша на вашем телефоне. Просто вернитесь в режим восстановления и выберите «Wipe cache partion’», чтобы стереть весь кэш.
Поздравляем! Вы только что самостоятельно прошили свой телефон. Тем не менее, есть и другие методы, которые вы также можете использовать для прошивки любого Android-смартфона.
Для этих методов вам потребуется ПК и определенный набор программного обеспечения (Flash Tool) в зависимости от марки вашего телефона. Мы не будем делиться всеми этими методами. Тем не менее, ниже мы поделимся несколькими названиями самых популярных flash-инструментов. Так что, если они вам нужны, вы можете найти их в Интернете.
- Odin (для смартфонов Samsung)
- Nexus Root Toolkit (для телефонов Nexus)
- SP Flash Tool (для устройств с чипсетом от Mediatek)
- FlashTool (для Sony Xperia)
- Miracle Box (для некоторых китайских телефонов)
Custom kernel config for local builds
If you need to switch a kernel configuration option regularly, for example,
when working on a feature, or if you need an option to be set for development
purposes, you can achieve that flexibility by maintaining a local
modification or copy of the build config.
Set the variable POST_DEFCONFIG_CMDS to a statement that is
evaluated right after the usual step is
done. As the files are sourced into the build
environment, functions defined in can be called
as part of the post-defconfig commands.
A common example is disabling link time optimization (LTO) for crosshatch
kernels during development. While LTO is beneficial for released kernels,
the overhead at build time can be significant. The following snippet added
to the local disables LTO persistently when
using .
Что нужно для самостоятельной прошивки телефона
Установить новую модификацию или обновить существующую прошивку можно самостоятельно, однако, не имея достаточного опыта в данной сфере и знаний о принципах работы программного обеспечения, не разбираясь в компьютерных программах, не стоит рисковать. Целесообразнее доверить свой девайс профессионалу с опытом.
Желающим заняться установкой прошивки, следует изучить особенности процесса, а также ознакомиться с составными частями оболочки. Качественной перепрошивке могут подвергаться следующие компоненты:
- «Fullflash» – комплекс всех встроенных программных утилит, формирующих образ памяти.
- «Monsterpark» – программная заливка от производителя. Это пакет программ, состоящий из трех отдельных элементов: «EEROM», «Flex Memory» и собственно прошивки.
Каждый из указанных элементов может удаляться по отдельности или в совокупности с другими составляющими. А поскольку начинающие пользователи сталкиваются с проблемой поиска исходных кодов для обновления данных частей, то вполне вероятно, что вместо оригинала они получат подделку. В результате устройство превратится в бесполезный «кирпич». С учетом таких сложностей в домашних условиях стоит ограничиться заменой непосредственно прошивки, а обновление других компонентов доверить специалистам. При этом все равно целесообразно иметь представление, какие инструменты и оборудование требуется для обновления Android на своем гаджете.
- действующий смартфон;
- компьютер или ноутбук;
- USB-кабель для подключения гаджета к ПК.
Ссылки на исходный код известных дистрибутивов пользовательских прошивок Android
CyanogenMod — https://github.com/CyanogenModSlimROM — https://github.com/SlimRomsParanoidAndroid — https://github.com/ParanoidAndroidAOKP — https://github.com/AOKPЖидкостьГладкая — https://github.com/liquidsmoothПЗУ Xylon –Ледяное желе — https://github.com/IceColdJelly
Итак, вот и все, простое и понятное руководство по компиляции практически любого ПЗУ на базе Android AOSP за 10 простых шагов. Хотя мое руководство посвящено CyanogenMod, вы можете скомпилировать практически любое ПЗУ AOSP, просто изменив ссылки на репозиторий. Или вы можете просто выбрать функции, зафиксировать их, изменить материал и создать свое собственное персонализированное ПЗУ, может быть, также поделиться своим ПЗУ в Интернете?
Недостатки перепрошивки
И вот мы подобрались к самому главному, что хотели узнать: насколько вредна перепрошивка для мобильного телефона. Если вы имеете дело с официальной прошивкой из интернета, которую предлагает загрузить сам телефон, проблем не будет. То же самое касается и работников сервисного центра. А вот если за дело взялись вы сами или какое-то постороннее лицо, ждите следующих неприятностей:
– если ваш телефон до перепрошивки был на гарантии (а обычно это около одного года со дня его покупки), то после перепрошивки вы можете смело с ней попрощаться: на модель, которая перепрошита, гарантия заканчивается, никакой сервисный центр не захочет возмещать убытки и работать с ней по гарантийному обслуживанию, только за деньги;
– возможно, эта перепрошивка станет последним действием, которое вы сможете осуществить со своим телефоном – он вполне может не включаться после этого или во включенном виде никак не реагировать на ваши нажатия, в отдельных случаях пропадает функция звонков;
– часть программных возможностей просто улетучивается – например, отправка сообщений на кириллице, неработающие беспроводные модули и т.п.
Как видите, неприятности вас будут поджидать с высокой вероятностью, хотя никто не исключает и возможности положительного исхода.
Преимущества и недостатки AOSP
Положительная сторона проекта в свободе выбора для производителей электроники и независимых разработчиков. Любой желающий вправе взять исходные файлы и собрать прошивку для различных устройств с наиболее предпочтительным набором приложений и функций. Причем платить отчисления Google не придется. К такой прошивке легко привязать различный интерфейс, один или несколько магазинов приложений.
Зачеркнутые приложения, что недоступны в AOSP.
Как бы некоторые пользователи не возмущались по поводу высокой нагрузки на систему со стороны Google сервисов, без GAPPS такая прошивка никому не интересна, поскольку в ней ничего нет. Ещё и не каждый крупный производитель способен создать, развивать и поддерживать магазин приложений, способный конкурировать с Google Play. Поэтому большинство разработчиков выпускают кастомные прошивки на основе AOSP, внедряют дополнительные функции, а в публикациях отдельно прилагают Google сервисы для самостоятельной установки. Благодаря этому удается избежать ответных мер со стороны поискового гиганта.
Зачем необходимо «прошивать» устройства?
Существует несколько причин, по которым рано или поздно требуется прошивка телефона:
-
Замедление работы устройства со временем. Эта проблема актуальна для Android-устройств, особенно бюджетного класса. Спустя несколько месяцев работы смартфона, пользователи замечают, что он функционирует значительно медленнее, чем сразу после покупки. Основная причина – скапливание большого числа ненужных файлов, засоряющих память. Одно из возможных решений – сброс к заводским настройкам. Но лучше всего установить новую версию прошивки.
-
Улучшенная оптимизация в новых версиях ПО. Конкуренция между производителями становится причиной спешки в выпуске новых устройств. Некоторые из них содержат недоработанное оригинальное ПО. Обычно, все недочеты исправляют в обновлениях и последующих версиях ОС.
-
Желание обновиться. Как Android, так и iOS получают ежегодное обновление в виде новой версии ОС с дополнительными функциями и улучшенной оптимизацией. Например, в iOS 12, если верить производителям, был улучшен функционал управления работающими приложениями и фоновыми процессами, благодаря чему удалось добиться более высокой энергоэффективности. Низкая емкость АКБ – распространенная проблема смартфонов Apple. Поэтому многие пользователи сочли необходимым обновить свои гаджеты.
-
Расширение имеющегося функционала. Некоторые устройства могут содержать функции, не предусмотренные в оригинальной версии ПО. В последующих прошивках они могут быть включены.
-
Необходимость восстановить доступ к устройству, удалить забытые пароли для доступа к некоторым приложениям, подготовить гаджет к продаже и т. д. В перечисленных случаях можно выполнить сброс к заводским настройкам. Но, если на смартфоне установлена старая версия ПО, прошивка – лучший вариант.
-
Устройство работает некорректно или не включается, при этом пользователь подозревает, что проблема носит программный характер. В этом случае прошивка поможет подтвердить или опровергнуть гипотезу.
Building the code
This section is a quick summary to ensure that setup is complete.
Build everything with . can handle parallel
tasks with a argument. If you don’t provide a
argument, the build system automatically selects a parallel task count that it
thinks is optimal for your system.
m
As explained above, you can build specific modules instead of the full
device image by listing their names in your command line. In
addition, provides some pseudotargets for special purposes. Some
examples are:
-
— is the normal
build. This target is here because the default target requires a name. -
— builds everything
that does, plus everything that doesn’t have the
tag. The build server runs this to make sure that everythingthat is in the tree and has an file builds.
-
— Runs builds from the top of the tree.
This is useful
because you can run from within subdirectories. If you have
the environment variable set, it uses that. If you don’t, it
looks up the tree from the current directory, trying to find the top of the
tree. You can either build the whole source code tree by running
without arguments or build specific targets by specifying their names. -
— Builds all of the modules in the
current directory, and their dependencies. -
— Builds all of the modules in the
supplied directories, and their dependencies. -
— to the top of the
tree. -
— deletes all of
the output and intermediate files for this configuration. This is the same as
.
Run to see what other pseudotargets
provides.
Ускорьте сборку с помощью CCACHE
Сборка ПЗУ занимает много времени. Но время можно сократить примерно на 30-45% с помощью CCACHE. CCACHE означает кеш компилятора, он кэширует выходные данные компиляции из ваших более ранних сборок, чтобы их можно было повторно использовать в более поздних сборках.
Обратите внимание, что CCACHE требует много места на вашем жестком диске для кэширования содержимого, поэтому рекомендуется, если и только если ваш раздел жесткого диска находится где-то в районе 200 ГБ или выше. Чтобы настроить CCACHE, откройте Терминал и введите:. cd ~ / android / смэкспорт USE_CCACHE = 1экспорт CACHE_DIR = ~ / .ccacheprebuilts / misc / linux-x86 / ccache / ccache –M 50 ГБ
cd ~ / android / смэкспорт USE_CCACHE = 1экспорт CACHE_DIR = ~ / .ccacheprebuilts / misc / linux-x86 / ccache / ccache –M 50 ГБ
Вы можете изменить выделение максимального размера для CCACHE с 50 ГБ на любое, но для хороших результатов следует использовать минимум около 30 ГБ.
Получение коммитов из других ПЗУ
Вы можете выбрать функции из исходного кода других ПЗУ. Скажем, например, я хочу выбрать функцию A с идентификатором фиксации «12345» из репозитория «github.com/user/reporepo».
Вы переходите к пакету в локальном исходном коде и запускаете его в Терминале.
cd ~ /git выборка https://github.com/user/reporepogit вишневый выбор 12345
Корпуса микросхем
Как видишь, с корпусами у памяти все плохо: помимо показанных на картинке вариантов, можно запросто вспомнить еще с десяток, и не факт, что производитель не решил использовать нечто эксклюзивное, у чего может вообще не быть названия.
Корпуса микросхем
Маркировка
Допустим, тебе повезло найти чип с памятью. Первым делом нам нужно прочитать его маркировку.
Если маркировка есть — немал шанс встретить ее именно в таком формате, как показан на картинке выше. Первые две буквы — код вендора, потом тип памяти в чипе, потом внутренний номер серии — и дальше уже четкой логики не прослеживается.
Так как единого стандарта нет и не предвидится, производители вольны писать на своих чипах, что считают нужным. Это порой приводит к коллизиям, вроде того, что представлено на той же картинке: два чипа разных производителей, оба 29-й серии, но один NOR, а другой — NAND. Короче, не угадаешь, и такие чипы приходится пробивать в поисковиках, чтобы выяснить хоть что‑то.
Типовой дизайн
Устройства одного сегмента проектируются очень похожими — это вполне очевидно. Например, все бытовые роутеры изнутри выглядят почти одинаково. Та же ситуация на рынке устройств SCADA, у которых свои каноны, но они прослеживаются везде без особых изменений.
Я расскажу о пяти категориях устройств, с которыми тебе, возможно, придется иметь дело:
- ПК;
- сетевое оборудование бытового сегмента (роутеры, свитчи, точки доступа);
- оборудование для ответственных применений (на заводах);
- IoT — интернет вещей;
- смартфоны.
Само собой, мир крутится не только вокруг смартфонов да компьютеров, но с ними у тебя шанс встретиться куда больше, чем с каким‑нибудь контроллером для управления ракетными двигателями. Поэтому давай рассмотрим типовое устройство только этих пяти категорий девайсов.
ПК
Устройство обычных ПК подразумевает модульность, то есть почти все детали можно легко вынуть. Из‑за этого на матплате из элементов памяти есть только флешка с BIOS/UEFI. При этом BIOS обычно сидит на микросхемах 24-й серии — I2C EEPROM, а в новых моделях стоит 25-я серия SPI NOR flash с UEFI.
Если же установлен взрослый интеловский процессор с поддержкой ME — на плате можно найти вторую такую же флешку, но с прошивкой для ME. Это делается в целях безопасности: находящуюся на физически отдельной микросхеме прошивку заразить или подменить сложнее.
Бытовые роутеры
С роутерами потребительского класса все довольно просто: тут ставят память SPI NOR 25-й серии, если требуется не больше 8 Мбайт, или NAND-память объемом побольше. Изредка можно найти eMMC, но мне такое пока не попадалось.
Устройства для ответственного применения
Тут все немного сложнее. Стандарты требуют странных вещей, поэтому с большим шансом устройства этой категории будут состоять из нескольких плат, соединенных переходными интерфейсами. Будет много разных запоминающих устройств, чтобы просто пройти сертификацию.
Логи обычно пишутся в EEPROM или FRAM 24-й серии, загрузчик лежит на NOR 25-й серии, а все встроенное ПО кладут на NOR 26-й, 29-й серии. NAND используют редко, а если используют — сразу большими массивами с резервированием.
IoT
Сейчас понятие IoT слишком растяжимое: по сути, туда можно записать вообще все умное домашнее и даже не очень домашнее. Из‑за этого память там может быть любая: хоть EEPROM, хоть eMMC — это когда NAND с хост‑контроллером упакованы в один чип.
Смартфоны
В смартфонах обычно все самое передовое: тут тебе и eMMC, и eUFS, и даже NVMe SSD, как у Apple. При этом, как ни крути, все эти чипы выглядят плюс‑минус одинаково, так что ты их ни с чем не спутаешь.
Прошивка для андроид — что это такое
Стоит начать с того, что подразумевается под понятием «прошивка». Так обычно называют операционную систему со всем входящим в ее состав программным обеспечением, оболочкой и встроенными приложениями. При этом существуют как версии прошивок от производителя (лицензионные), так и кастомные (создаваемые любителями, которые часто предполагают какую-либо оптимизацию официальных версий системы).
Устройство на базе андроид
К сведению! Процесс установки новой системы на смартфон или планшет называют тоже «прошивка» или «перепрошивка». Это непосредственно инсталляция программного обеспечения, которая может производиться разными способами.
Для чего перепрошивать устройство на андроиде
Перепрошивка — совсем не обязательная мера, но продвинутые пользователи иногда не только используют ее для решения проблем, но и устанавливают различные оптимизированные ее версии на новые устройства. Процедура может проводиться в следующих случаях:
- проблемы в работе устройства. Исправить программные ошибки, избавиться от лагов, облегчить работу устаревших телефонов или планшетов может помочь перепрошивка. Она подойдет только в том случае, если неисправности не связаны с поломками каких-либо физических элементов устройства;
- нужен апгрейд. Некоторые прошивки позволяют получить дополнительные функции, ускорить работу и обновить интерфейс. Если аппаратные возможности гаджета позволяют, то перепрошивка будет отличным решением для этих целей;
- не устраивает оболочка системы или ПО от производителя. Многие компании выпускают устройства с собственной оболочкой Android, которая может предусматривать специфический интерфейс и встроенные приложения. При желании пользователя произвести замену оболочки и убрать встроенное ПО можно установить новую прошивку.
Разные оболочки андроида
Обратите внимание! Часто официальная версия системы андроид не использует возможности девайса полностью и работает в ограниченном режиме. Прошивка помогает пользоваться мощностью устройства без ограничений
Сборка
После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat. Скачиваем нужные нам инструменты:
$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https://github.com/xpirt/img2sdat/raw/master/common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/master/sparse_img.py $ sudo apt-get install android-tools-fsutils
Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img:
$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/
1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:
$ img2simg system_new.img system_snew.img
Преобразуем наш образ в system.transfer.list и system.new.dat, которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:
$ rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod +x img2sdat.py $ ./img2sdat.py system_snew.img
Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).
Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):
$ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar файл.zip
Подводные камни
Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.