Устройства Android включают в себя несколько разделов, которые выполняют различные функции в процессе загрузки.
Стандартные перегородки
boot
раздел. Этот раздел содержит образ ядра и создается с помощьюmkbootimg
. Вы можете использовать виртуальный раздел для прошивки любого образа напрямую, без прошивки нового загрузочного раздела. Этот раздел также содержит общий ramdisk в устройствах, выпущенных до Android 13.kernel. Виртуальный раздел
kernel
перезаписывает ядро (zImage
,zImage-dtb
,Image.gz-dtb
), записывая новый образ ядра поверх старого образа ядра. Если предоставленное ядро разработки несовместимо, вам может потребоваться обновить разделvendor
,system
илиdtb
(если есть) со связанными модулями ядра.ramdisk. Раздел виртуального
ramdisk
перезаписывает ramdisk, записывая новый образ ramdisk поверх старого образа ramdisk.
Операция перезаписи определяет начальное местоположение существующего образа в eMMC и копирует новый образ в это местоположение. Новый образ (ядро или ramdisk) может быть больше существующего; чтобы освободить место, загрузчик может переместить данные вслед за образом или прекратить операцию с ошибкой.
Раздел
init_boot
. Этот раздел содержит универсальный ramdisk для устройств, запускаемых с Android 13 и выше.system
раздел. Этот раздел содержит фреймворк Android.Раздел
odm
. Этот раздел содержит настройки оригинального производителя дизайна (ODM) для пакетов поддержки плат (BSP) поставщика систем на кристалле (SoC). Такие настройки позволяют ODM заменять или настраивать компоненты SoC и внедрять модули ядра для компонентов, специфичных для платы, демонов и функций, специфичных для ODM, на уровнях абстракции оборудования (HAL). Этот раздел является необязательным; обычно он используется для хранения настроек, чтобы устройства могли использовать один образ поставщика для нескольких аппаратных SKU. Подробности см. в разделе Разделы ODM .Раздел
odm_dlkm
. Этот раздел предназначен для хранения модулей ядра ODM. Хранение модулей ядра ODM в разделеodm_dlkm
(в отличие от разделаodm
) позволяет обновлять модули ядра ODM без обновления разделаodm
.Раздел
recovery
. Этот раздел хранит образ восстановления, который загружается во время процесса OTA. Устройства, поддерживающие бесшовные обновления, могут хранить образы восстановления как ramdisk, содержащийся в образеboot
илиinit_boot
(а не как отдельный образ).Раздел
cache
. Этот раздел хранит временные данные и является необязательным, если устройство использует бесшовные обновления. Раздел кэша не обязательно должен быть доступным для записи из загрузчика, но должен быть стираемым. Размер раздела зависит от типа устройства и доступности места наuserdata
; обычно достаточно 50–100 МБ.Раздел
misc
. Этот раздел используется разделом восстановления и имеет размер 4 КБ или больше.Раздел
userdata
. Этот раздел содержит установленные пользователем приложения и данные, включая данные настройки.Раздел
metadata
. Этот раздел используется для хранения ключа шифрования метаданных, когда устройство использует шифрование метаданных . Размер составляет 16 МБ или больше. Он не зашифрован, и его данные не сохраняются. Он стирается при сбросе настроек устройства до заводских. Использование этого раздела строго ограничено.Раздел
vendor
. Этот раздел содержит любой двоичный файл, который не распространяется в AOSP. Если устройство не содержит конфиденциальной информации, вы можете пропустить этот раздел.Раздел
vendor_dlkm
. Этот раздел предназначен для хранения модулей ядра поставщика. Хранение модулей ядра поставщика в разделеvendor_dlkm
(в отличие от разделаvendor
) позволяет обновлять модули ядра без обновления разделаvendor
.Раздел
radio
. Этот раздел содержит образ радио и необходим только для устройств, которые включают радио с радиоспецифичным программным обеспечением в выделенном разделе.Раздел
tos
. Этот раздел хранит двоичный образ Trusty OS и используется только в том случае, если устройство включает Trusty. Подробности см. в разделе Разделы TOS .Раздел
pvmfw
. В этом разделе хранится защищенная прошивка виртуальной машины (pvmfw), которая является первым кодом, работающим в защищенных виртуальных машинах. Подробнее см. в разделе защищенная прошивка виртуальной машины .
Динамические разделы
Устройства под управлением Android 11 и выше могут поддерживать динамические разделы, которые представляют собой систему разбиения пользовательского пространства для Android, позволяющую создавать, изменять размер или уничтожать разделы во время обновлений по беспроводной сети (OTA). Подробности см. в разделе Динамические разделы .
Назначить критические разделы
Если для работы устройства требуются определенные разделы или данные, необходимо обозначить эти разделы или данные как полностью защищенные или как перепрошиваемые, то есть их можно перестроить, предоставить или извлечь с помощью команды fastboot oem
. Сюда входят такие данные, как заводские настройки для каждого устройства, серийные номера, данные калибровки и многое другое.
Изменения в Android 11
Android 11 включает в себя многочисленные изменения разделов, в том числе ограничения на привязку к библиотекам и новые варианты образов Soong.
Рисунок 1. Схема разделов в Android 11
Единый системный образ (SSI). Новый концептуальный образ, содержащий образы
system
иsystem_ext
. Когда эти разделы являются общими для набора целевых устройств, эти устройства могут совместно использовать SSI и пропустить построение образовsystem
иsystem_ext
.Раздел
system_ext
. Новый раздел, который может использоватьsystem
ресурсы и может включать системные модули, которые:Расширьте системные модули AOSP в
system
разделе. Мы рекомендуем перенести такие модули в AOSP, чтобы их можно было установить вsystem
раздел позже.Связывание OEM или SoC-специфичных модулей. Мы рекомендуем разделять такие модули, чтобы их можно было установить в раздел
product
илиvendor
.
system
раздел. Общий системный образ, используемый для OEM-продуктов. Мы рекомендуем перемещать фирменные модули изsystem
раздела, либо передавая их в AOSP, либо перемещая их в разделsystem_ext
.Раздел
product
. Этот раздел теперь может использовать разрешенные интерфейсы для установки модулей, специфичных для продукта, которые не связаны ни с какими другими разделами.
Изменения в ВНДК
Vendor Native Development Kit (VNDK) — это набор библиотек, устанавливаемых в system
раздел и предназначенных исключительно для поставщиков для реализации их HAL.
В Android 10 и ниже раздел
vendor
может ссылаться на библиотеки VNDK вsystem
разделе, но не может ссылаться на другие библиотеки вsystem
разделе. Собственные модули в разделеproduct
могут ссылаться на любую библиотеку вsystem
разделе.В Android 11 и более поздних версиях разделы
product
иvendor
могут ссылаться на библиотеки VNDK вsystem
разделе, но не могут ссылаться на другие библиотеки вsystem
разделе.
Варианты продукта Soon
Система сборки Soong использует варианты образов для разделения зависимостей сборки. Собственные модули ( /build/soong/cc
) могут мутировать модули системного процесса в основной вариант, а модули процесса поставщика в вариант поставщика; модуль в одном варианте образа не может ссылаться на другие модули в другом варианте образа.
В Android 10 или ниже системный модуль автоматически создает варианты ядра. Он также может создавать варианты вендора, определяя
vendor_available: true
в своих файлахAndroid.bp
; это позволяет модулям вендора связываться с системными модулями. Библиотеки VNDK, которые являются вариантами вендораsystem
библиотек, также могут создавать варианты вендора для модулей вендора, определяяvendor_available: true
в своих файлахAndroid.bp
(см. пример ).В Android 11 системный модуль также может создавать вариант продукта (в дополнение к вариантам ядра и поставщика), определяя
vendor_available: true
.В Android 12 или выше системный модуль с
vendor_available: true
создает вариант поставщика в дополнение к основному варианту. Чтобы создать вариант продукта, необходимо определитьproduct_available: true
. Некоторые библиотеки VNDK безproduct_available: true
недоступны для модулей продукта.