Статьи

Введение в прошивку Android

Телефоны и планшеты Android, как правило, гораздо более открыты, чем их коллеги с такими операционными системами, как iOS , Tizen или Windows 10 Mobile . Если вам не нравится прошивка, которую производитель устройства установил на ваше устройство Android, вы можете заменить ее собственной кастомной прошивкой. CyanogenMod , Paranoid Android и Pure Nexus Project — примеры пользовательских прошивок, которые пользуются большой популярностью среди пользователей Android.

Кастомная прошивка также является единственным способом установки более новых версий Android на устройства, которые больше не поддерживаются их производителями. Если у вас нет устройства, которое принадлежит к серии Nexus или Android One , я уверен, что вы уже знали это.

В этой статье я помогу вам понять, что такое прошивка Android и как ее использует устройство Android. Я также познакомлю вас с инструментами, которые вы можете использовать для замены прошивки устройства.

Замена прошивки — это рискованная операция, которая может привести к невозможности использования вашего устройства. В большинстве случаев это также аннулирует гарантию вашего устройства. Убедитесь, что у вас есть резервная копия ваших данных и копия заводского образа вашего устройства, прежде чем вы начнете экспериментировать с прошивкой кастомной прошивки.

Первоначально, встроенное программное обеспечение было термином, используемым для обозначения крошечных, критически важных программ, установленных в постоянном запоминающем устройстве или ПЗУ электронного устройства. Модификация прошивки была либо невозможна, либо требовала специального оборудования, которое обычно было недоступно обычным конечным пользователям.

Прошивка Android, однако, сильно отличается. Он включает в себя всю операционную систему Android и хранится в доступной для записи форме памяти, называемой флэш-памятью NAND, того же типа памяти, которая используется в устройствах хранения, таких как USB-накопители и SD-карты. Слово « прошивка» используется только потому, что производители устройств не удосужились придумать новое слово для него.

Микропрограмму Android также часто называют Android ROM, потому что по умолчанию пользователи не могут напрямую писать в нее.

Прошивка, установленная на устройстве Android его производителем, содержит сборку операционной системы Android и две дополнительные программы с закрытым исходным кодом, которые обычно незаменимы, загрузчик и прошивка для радио .

Загрузчик Android — это небольшой фрагмент закрытого кода, который отвечает за запуск операционной системы Android при включении устройства Android. Однако загрузчик почти всегда выполняет еще одну задачу. Он проверяет подлинность запускаемой операционной системы.

Как это решает, что является подлинным? Он проверяет, был ли загрузочный раздел подписан с использованием уникального OEM-ключа , сокращенного от ключа изготовителя оригинального оборудования . OEM-ключ, разумеется, принадлежит производителю устройства, является частным, и вы никак не можете узнать, что это такое.

Из-за проверки подлинности вы не можете напрямую установить пользовательское ПЗУ на устройстве Android. К счастью, в наши дни большинство производителей устройств разрешают пользователям отключать проверку. В жаргоне Android они позволяют пользователям разблокировать загрузчик.

Точная процедура, которую вы должны выполнить, чтобы разблокировать загрузчик, зависит от вашего устройства. Некоторые производители, такие как Sony и HTC, ожидают, что вы предоставите секретный токен разблокировки. Другие просто ожидают, что вы запустите фиксированный набор команд с помощью терминала.

Обычно для запуска команд разблокировки используется инструмент fastboot , который является частью Android SDK. Например, если у вас есть устройство Nexus, вы можете разблокировать его загрузчик, выполнив следующую команду:

1
fastboot flashing unlock

Вы узнаете больше о fastboot позже в этой статье. Обратите внимание, что если у вас есть устройство с загрузчиком, который нельзя разблокировать, у вас не будет простого способа изменить или заменить его прошивку.

Это может вас удивить, но ваш Android-смартфон на самом деле работает под управлением другой операционной системы на независимом процессоре, называемом процессором основной полосы частот . Радиопрограмма относится к операционной системе, которая работает на процессоре основной полосы частот.

Обычно это ОСРВ, которой не хватает операционной системы реального времени , и она отвечает за управление возможностями сотовой радиосвязи устройства. Другими словами, это то, что позволяет вашему устройству совершать звонки и подключаться к Интернету, используя беспроводные технологии, такие как 2G, 3G и 4G LTE.

RTOS является частной частью кода, и популярные производители процессоров основной полосы частот, такие как Qualcomm, MediaTek и Spreadtrum, следят за тем, чтобы его внутренняя работа оставалась секретной. Операционная система Android обычно связывается с ОСРВ с помощью сокетов и обратных вызовов.

Как правило, это не очень хорошая идея, чтобы заменить радио прошивку вашего устройства.

Сборка Android — единственная часть прошивки, созданная из открытого исходного кода. Следовательно, это единственная часть, которую вы можете изменять и расширять. Когда вы слышите, как энтузиасты Android говорят: «Я запустил новый ROM на моем устройстве», вы можете быть уверены, что они говорят о новой сборке Android.

Сборка Android обычно предоставляется в виде ZIP-файла, который может использоваться fastboot . Он имеет следующее содержание:

1
2
3
4
5
6
update.zip
|— android-info.txt
|— boot.img
|— recovery.img
|— system.img
`— userdata.img

android-info.txt представляет собой текстовый файл, определяющий предварительные условия сборки. Например, он может указывать номера версий загрузчика и прошивки радио, которые нужны для сборки. Вот пример файла android-info.txt :

1
2
3
require board=herring
require version-bootloader=I9020XXJK1
require version-baseband=I9020XXKD1

boot.img — это двоичный файл, содержащий ядро ​​Linux и виртуальный диск в виде архива GZIP. Ядро представляет собой загрузочный исполняемый файл zImage, который может использоваться загрузчиком.

RAM-диск, с другой стороны, является файловой системой только для чтения, которая монтируется ядром в процессе загрузки. Он содержит хорошо известный процесс инициализации , первый процесс, запускаемый любой операционной системой на основе Linux. Он также содержит различные демоны, такие как adbd и healthd , которые запускаются процессом init . Вот как выглядит дерево каталогов виртуального диска :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ramdisk/
|— charger -> /sbin/healthd
|— data
|— default.prop
|— dev
|— file_contexts
|— fstab.grouper
|— init
|— init.environ.rc
|— init.grouper.rc
|— init.grouper.usb.rc
|— init.rc
|— init.recovery.grouper.rc
|— init.trace.rc
|— init.usb.rc
|— init.zygote32.rc
|— proc
|— property_contexts
|— sbin
|
|
|
|
|— seapp_contexts
|— selinux_version
|— sepolicy
|— service_contexts
|— sys
|— system
|— ueventd.grouper.rc
`— ueventd.rc

system.img — это образ раздела, который будет смонтирован в пустом системном каталоге, который вы видите в приведенном выше дереве. Он содержит двоичные файлы, необходимые для работы операционной системы Android. Он включает в себя системные приложения, шрифты, файлы JAR, библиотеки, медиакодеки и многое другое. Очевидно, что это файл, который больше всего интересует пользователей Android при прошивке нового ПЗУ.

Системный образ также является файлом, который заставляет большинство пользователей Android проявлять интерес к прошивке пользовательских прошивок. Файлы системных образов, предоставляемые производителями устройств, часто полны ненужных приложений и настроек, неофициально называемых вредоносными программами. Единственный способ удалить вредоносное ПО — это заменить образ системы производителя более желательным образом системы.

userdata.img — это образ раздела, который будет смонтирован в пустом каталоге данных, который вы можете увидеть в дереве каталогов ramdisk. При загрузке пользовательского ПЗУ это изображение обычно пустое и используется для сброса содержимого каталога данных .

recovery.img очень похож на boot.img . Он имеет загрузочный исполняемый файл ядра, который может использовать загрузчик, и виртуальный диск. Следовательно, образ восстановления также можно использовать для запуска устройства Android. Когда он используется вместо Android, запускается очень ограниченная операционная система, которая позволяет пользователю выполнять административные операции, такие как сброс пользовательских данных устройства, установка новой прошивки и создание резервных копий.

Процедура, которую необходимо выполнить для загрузки с использованием образа восстановления, зависит от устройства. Обычно это включает вход в режим загрузчика, также называемый режимом быстрой загрузки , путем нажатия комбинации аппаратных клавиш, имеющихся на устройстве, и затем выбора варианта восстановления . Например, на устройстве Nexus вам нужно нажать и удерживать кнопку питания в сочетании с кнопкой уменьшения громкости.

Кроме того, вы можете использовать adb , инструмент, включенный в Android SDK, чтобы напрямую войти в режим восстановления.

1
adb reboot recovery

Самый простой способ прошить новую прошивку на вашем устройстве — использовать инструмент fastboot . fastboot следует протоколу fastboot для связи с устройством Android. Тем не менее, он может сделать это только тогда, когда устройство было запущено в режиме быстрой загрузки. Самый быстрый способ войти в режим fastboot — использовать adb :

1
adb reboot bootloader

Для прошивки пользовательского ПЗУ, которое доступно в виде ZIP-файла, содержащего все файлы изображений, которые я упоминал в предыдущем разделе, вы можете использовать команду fastboot update . Например, вот как вы можете прошить ПЗУ в файле с именем update.zip :

1
fastboot update update.zip

Если вы хотите прошить только определенное изображение, вы можете сделать это с помощью команды fastboot flash . Например, вот как вы можете прошить только образ системы:

1
fastboot flash system system.img

Точно так же, если вы хотите заменить только загрузочный образ, вы должны использовать следующую команду:

1
fastboot flash boot boot.img

Всегда полезно проверить, работает ли образ загрузки или восстановления, прежде чем фактически перезаписать его на ваше устройство. Для этого вы можете использовать команду fastboot boot . Например, вот как вы можете проверить, совместим ли пользовательский образ восстановления с именем twrp.img с вашим устройством:

1
fastboot boot twrp.img

Обратите внимание, что ни одна из команд fastboot, упомянутых в этом разделе, не будет работать, если загрузчик вашего устройства не был разблокирован.

Теперь вы знаете, что такое прошивка Android и как ее заменить. Я хочу, чтобы вы поняли, что замена прошивки — это рискованная операция, которая потенциально может сделать ваше устройство непригодным для использования. В большинстве случаев это также аннулирует гарантию вашего устройства. Убедитесь, что у вас есть резервная копия ваших данных и копия заводского образа вашего устройства, прежде чем вы начнете экспериментировать с прошивкой кастомной прошивки.