Устройства Android включают в себя несколько разделов, которые выполняют разные функции в процессе загрузки.
Стандартные перегородки
boot
раздел. Этот раздел содержит образ ядра и образ виртуального диска, объединенные с помощьюmkbootimg
. Вы можете использовать виртуальный раздел для прошивки любого образа напрямую без прошивки нового загрузочного раздела.ядро. Виртуальный раздел
kernel
перезаписывает ядро (zImage
,zImage-dtb
,Image.gz-dtb
), записывая новый образ ядра поверх старого образа ядра. Если поставляемое ядро разработки несовместимо, вам может потребоваться обновить разделvendor
,system
илиdtb
(если он есть) с помощью соответствующих модулей ядра.виртуальный диск. Раздел виртуального виртуального
ramdisk
перезаписывает виртуальный диск, записывая новый образ виртуального диска поверх старого образа виртуального диска.
Операция перезаписи определяет начальное местоположение существующего образа в eMMC и копирует новый образ в это место. Новый образ (ядра или виртуального диска) может быть больше существующего; чтобы освободить место, загрузчик может переместить данные вслед за образом или отказаться от операции с ошибкой.
system
раздел. Этот раздел содержит фреймворк Android.odm
раздел. Этот раздел содержит настройки производителя оригинального дизайна (ODM) для пакетов поддержки плат поставщика системы на кристалле (SoC) (BSP). Такие настройки позволяют ODM заменять или настраивать компоненты SoC, а также внедрять модули ядра для компонентов, специфичных для платы, демонов и функций, характерных для ODM, на уровнях аппаратной абстракции (HAL). Этот раздел является необязательным; как правило, он используется для настройки, чтобы устройства могли использовать один образ поставщика для нескольких аппаратных SKU. Дополнительные сведения см. в разделе Разделы ODM .раздел
odm_dlkm
. Этот раздел предназначен для хранения модулей ядра ODM. Хранение модулей ядра ODM в разделеodm_dlkm
(в отличие от разделаodm
) позволяет обновлять модули ядра ODM без обновления разделаodm
.раздел
recovery
. В этом разделе хранится образ восстановления, который загружается во время процесса OTA. Устройства, поддерживающие бесшовные обновления , могут хранить образы восстановления в виде виртуального диска, содержащегося в загрузочном образе (а не в виде отдельного образа).раздел
cache
. Этот раздел хранит временные данные и является необязательным, если устройство использует бесшовные обновления. Раздел кеша не обязательно должен быть доступен для записи из загрузчика, но должен быть стираемым. Размер раздела зависит от типа устройства и наличия места наuserdata
; обычно достаточно 50–100 МБ.раздел
misc
. Этот раздел используется разделом восстановления и имеет размер 4 КБ или больше.userdata
. Этот раздел содержит установленные пользователем приложения и данные, включая данные настройки.раздел
metadata
. Этот раздел используется для хранения ключа шифрования метаданных, когда устройство использует шифрование метаданных . Размер составляет 16 МБ или больше. Он не зашифрован, и его данные не сохраняются. Он стирается при сбросе настроек устройства. Использование этого раздела строго ограничено.раздел
vendor
. Этот раздел содержит любой двоичный файл, который не распространяется на AOSP. Если устройство не содержит конфиденциальной информации, этот раздел можно опустить.раздел
vendor_dlkm
. Этот раздел предназначен для хранения модулей ядра производителя. Хранение модулей ядра поставщика в разделеvendor_dlkm
(в отличие от разделаvendor
) позволяет обновлять модули ядра без обновления разделаvendor
.раздел
radio
. Этот раздел содержит образ радио и необходим только для устройств, которые включают радио с программным обеспечением для радио в выделенном разделе.tos
раздел. В этом разделе хранится двоичный образ Trusty OS, и он используется только в том случае, если устройство включает Trusty. Дополнительные сведения см. в разделе Разделы TOS .
Динамические разделы
Устройства под управлением 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
разделе.
Скоро варианты продукта
Система сборки Soong использует варианты образов для разделения зависимостей сборки. Собственные модули ( /build/soong/cc
) могут преобразовать модули системных процессов в базовый вариант, а модули процессов поставщика — в вариант поставщика; модуль в одном варианте образа не может быть связан с другими модулями в другом варианте образа.
В Android 10 и более ранних версиях системный модуль автоматически создает основные варианты. Он также может создавать варианты поставщиков, определяя
vendor_available: true
в своих файлахAndroid.bp
; это позволяет модулям поставщиков связываться с системными модулями. Библиотеки VNDK, которые являются вендорными вариантамиsystem
библиотек, также могут создавать вендорные варианты для вендорских модулей, определяяvendor_available: true
в своих файлахAndroid.bp
(см. пример ).В Android 11 и более поздних версиях системный модуль также может создать вариант продукта (в дополнение к вариантам ядра и поставщика), определив
vendor_available: true
.