Устройства Android включают в себя несколько разделов, которые выполняют различные функции в процессе загрузки.
Стандартные перегородки
boot
раздел. Этот раздел содержит образ ядра и создается с помощьюmkbootimg
. Вы можете использовать виртуальный раздел для прямой прошивки любого образа без прошивки нового загрузочного раздела. Этот раздел также содержит общий виртуальный диск на устройствах, выпущенных до Android 13.ядро. Раздел виртуального
kernel
перезаписывает ядро (zImage
,zImage-dtb
,Image.gz-dtb
), записывая новый образ ядра поверх старого образа ядра. Если предоставленное ядро разработки несовместимо, вам может потребоваться обновить разделvendor
,system
илиdtb
(если имеется) с соответствующими модулями ядра.виртуальный диск. Раздел виртуального
ramdisk
перезаписывает виртуальный диск, записывая новый образ виртуального диска поверх старого образа виртуального диска.
Операция перезаписи определяет начальное местоположение существующего образа в eMMC и копирует новый образ в это местоположение. Новый образ (ядро или виртуальный диск) может быть больше существующего; Чтобы освободить место, загрузчик может переместить данные вслед за образом или отказаться от операции с ошибкой.
раздел
init_boot
. Этот раздел содержит общий виртуальный диск для устройств, работающих под управлением 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. Устройства, поддерживающие плавное обновление, могут хранить образы восстановления в виде виртуального диска, содержащегося в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
разделе.
Варианты продукта Сонг
Система сборки Soong использует варианты образа для разделения зависимостей сборки. Собственные модули ( /build/soong/cc
) могут изменять модули системных процессов на базовый вариант, а модули процессов поставщика на вариант поставщика; модуль в одном варианте образа не может ссылаться на другие модули в другом варианте образа.
В Android 10 или более ранней версии системный модуль автоматически создает основные варианты. Он также может создавать варианты поставщиков,
vendor_available: true
в своих файлахAndroid.bp
; это позволяет модулям поставщика связываться с системными модулями. Библиотеки VNDK, которые являются вендорными вариантамиsystem
библиотек, также могут создавать вендорные варианты для вендорных модулей,vendor_available: true
в своих файлахAndroid.bp
(см. пример ).В Android 11 системный модуль также может создать вариант продукта (в дополнение к вариантам ядра и поставщика), определивvendor_available
vendor_available: true
.В Android 12 или более поздней версии системный модуль с
vendor_available: true
создает вариант поставщика в дополнение к основному варианту. Чтобы создать вариант продукта, необходимо указатьproduct_available: true
. Некоторые библиотеки VNDK безproduct_available: true
недоступны для модулей продукта.