Обзор

Устройства 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.

Макет раздела Android

Рисунок 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 .