Обзор разделов

Устройства Android содержат несколько разделов или определенных секций дискового пространства, используемых для хранения определенных частей программного обеспечения устройства. Каждый раздел содержит образ раздела (файл IMG) или снимок всего программного обеспечения для раздела. На рисунке 1 показана схема основных разделов на устройстве:

Компоновка основных разделов.

Рисунок 1. Схема расположения основных разделов.

Разделы классифицируются на три категории:

  • Системные разделы — это разделы, которые обновляются при обновлении ОС и других функций. system , boot и init_boot являются основными системными разделами.

  • Разделы поставщика содержат код, специфичный для устройств и оборудования, который может никогда не обновляться после первоначального выпуска. Разделы vendor , vendor_boot и odm являются основными разделами поставщика.

  • Необновляемые разделы — это разделы, содержимое которых либо не обновляется, либо обновляется пользовательскими данными.

Код в системных и вендорных разделах может взаимодействовать с помощью стабильного интерфейса, называемого вендорным интерфейсом (VINTF) .

Системные разделы

Ниже приведен список всех системных разделов и их использование:

  • boot раздел. Этот раздел содержит Generic Kernel Image (GKI). Этот раздел также содержит generic ramdisk в устройствах, запущенных в Android 12 и ниже. Для получения дополнительной информации о generic ramdisk см. Generic ramdisk image content .

  • Раздел init_boot (Android 13 и выше). Этот раздел содержит общий ramdisk. В Android 11 и 12 общий ramdisk находится в boot разделе.

  • system раздел. Этот раздел содержит образ системы, используемый для OEM-продуктов.

  • Раздел system_ext . Этот раздел содержит системные ресурсы и фирменные системные модули, которые расширяют общий образ системы в system разделе.

  • Раздел system_dlkm . Этот раздел содержит модули GKI. Для получения дополнительной информации об этом разделе см. раздел Реализация раздела модуля GKI .

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

  • Раздел pvmfw . В этом разделе хранится защищенная прошивка виртуальной машины (pvmfw), которая является первым кодом, запускаемым в защищенных виртуальных машинах. Для получения дополнительной информации см. раздел Защищенная прошивка виртуальной машины .

  • Раздел generic_bootloader . Этот раздел содержит универсальный загрузчик.

Разделы поставщика

Ниже приведен список всех разделов поставщиков и их использование:

  • Раздел vendor_boot . Этот раздел содержит загрузочный код, специфичный для поставщика. Для получения дополнительной информации см. раздел Vendor boot partitions .

  • Раздел recovery . Этот раздел хранит образ восстановления, который загружается во время процесса обновления по воздуху (OTA). Устройства, поддерживающие бесшовные обновления, могут хранить образы восстановления в виде ramdisk, содержащегося в образе boot или init_boot . Для получения дополнительной информации о бесшовных обновлениях см. A/B (бесшовные) обновления .

  • Раздел vbmeta . Этот раздел содержит информацию Verified Boot для всех разделов. Эта информация подтверждает, что образы, установленные в каждом разделе, являются доверенными. Для получения дополнительной информации о Verified Boot см. Verified Boot .

  • Раздел vendor . Этот раздел содержит любой двоичный файл, специфичный для поставщика и недостаточно универсальный для распространения в AOSP.

  • Раздел vendor_dlkm . Этот раздел содержит модули ядра поставщика. Сохраняя модули ядра поставщика в этом разделе вместо раздела vendor , вы можете обновлять модули ядра без обновления раздела vendor . Для получения дополнительной информации см. Разделы Vendor и ODM DKLM .

  • Раздел odm . Этот раздел содержит настройки оригинального производителя дизайна (ODM) для пакетов поддержки плат (BSP) поставщика систем на кристалле (SoC). Такие настройки позволяют ODM заменять или настраивать компоненты SoC и внедрять модули ядра для компонентов, специфичных для платы, демонов и функций, специфичных для ODM, на уровнях абстракции оборудования (HAL). Этот раздел является необязательным. Обычно этот раздел используется для хранения настроек, чтобы устройства могли использовать один образ поставщика для нескольких аппаратных SKU. Для получения дополнительной информации см. разделы ODM .

  • Раздел odm_dlkm . Этот раздел предназначен для хранения модулей ядра ODM. Сохраняя модули ядра ODM в этом разделе вместо раздела odm , вы можете обновлять модули ядра ODM без обновления раздела odm . Для получения дополнительной информации см. Разделы Vendor и ODM DKLM .

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

Необновляемые разделы

Ниже приведен список всех необновляемых разделов и их использование:

  • Раздел cache . Этот раздел содержит временные данные и является необязательным, если ваше устройство использует бесшовные обновления. Этот раздел не обязательно должен быть доступным для записи из загрузчика, но должен быть стираемым. Размер раздела зависит от типа устройства и доступности места на userdata ; обычно достаточно 50–100 МБ.

  • Раздел userdata . Этот раздел содержит установленные пользователем приложения и данные, включая данные настройки.

  • Раздел metadata . Если ваше устройство использует шифрование метаданных , этот раздел содержит ключ шифрования метаданных. Размер этого раздела составляет 16 МБ или больше, он не зашифрован, и его данные не сохраняются. Этот раздел стирается при сбросе устройства к заводским настройкам.

Правила и рекомендации по обновлению разделов

Мы рекомендуем обновить все системные разделы как единое целое и все разделы поставщика как единое целое. Обновив набор разделов как единое целое, вы можете проверить, что интерфейсы между образами в каждом разделе остаются стабильными.

Независимо от того, как вы обновляете свои разделы, следующие разделы необходимо обновить из-за тесно связанных зависимостей и отсутствия стабильных API:

  • Разделы boot и system_dlkm
  • разделы init_boot , system , system_ext и product

Динамические разделы

Устройства под управлением Android 11 и выше могут поддерживать динамические разделы, которые представляют собой систему разбиения пользовательского пространства для Android, позволяющую создавать, изменять размер или уничтожать разделы во время обновлений по беспроводной сети (OTA). Для получения дополнительной информации см. Динамические разделы .

  • Раздел misc . Этот раздел используется разделом восстановления и имеет размер 4 КБ или больше.

  • Раздел tos . Этот раздел содержит двоичный образ Trusty OS и используется только в том случае, если устройство включает Trusty. Для получения дополнительной информации см. разделы Trusty OS (TOS) .

Варианты продукта Soon

Система сборки Soong использует варианты образов для разделения зависимостей сборки. Собственные модули ( /build/soong/cc ) могут мутировать модули системного процесса в основной вариант, а модули процесса поставщика в вариант поставщика; модуль в одном варианте образа не может ссылаться на другие модули в другом варианте образа.

В Android 12 или выше системный модуль с vendor_available: true создает вариант поставщика в дополнение к основному варианту. Чтобы создать вариант продукта, необходимо определить product_available: true . Некоторые библиотеки VNDK без product_available: true недоступны для модулей продукта.