Обзор ядра

Ядро Android основано на ядре Linux с долгосрочной поддержкой (LTS) . В Google ядра LTS объединяются с патчами, специфичными для Android, чтобы сформировать так называемые общие ядра Android (ACK) .

Более новые ACK (версия 5.4 и выше) также известны как ядра GKI . Ядра GKI поддерживают отделение аппаратно-независимого общего кода ядра и модулей GKI от модулей поставщика, зависящих от аппаратного обеспечения.

Ядро GKI взаимодействует с модулями производителей аппаратного обеспечения, содержащими систему на кристалле (SoC) и код, специфичный для платы. Взаимодействие между ядром GKI и модулями поставщика обеспечивается интерфейсом модуля ядра (KMI), состоящим из списков символов, идентифицирующих функции и глобальные данные, необходимые модулям поставщика. На рисунке 1 показано ядро ​​GKI и архитектура модуля поставщика:

архитектура ГКИ
Рисунок 1. Архитектура GKI

Глоссарий ядра

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

Типы ядра

Общее ядро ​​Android (ACK)
Ядро, которое является последующим ядром LTS и включает в себя патчи, представляющие интерес для сообщества Android, которые не были объединены с основными ядрами Linux или ядрами с долгосрочной поддержкой (LTS). Более новые ACK (версия 5.4 и выше) также известны как ядра GKI, поскольку они поддерживают разделение аппаратно-независимого кода общего ядра и аппаратно-независимых модулей GKI.
Ядро Android с открытым исходным кодом (AOSP)
См. Общее ядро ​​Android.
Функциональное ядро
Ядро, для которого гарантированно реализованы функции выпуска платформы. Например, в Android 12 двумя ядрами функций были android12-5.4 и android12-5.10. Функции Android 12 нельзя перенести в ядра версии 4.19; набор функций будет аналогичен устройству, которое было запущено с версией 4.19 на R и обновлено до S).
общее ядро ​​ядра
Часть ядра GKI , общая для всех устройств.
Ядро общего образа ядра (GKI)
Любое новое ядро ​​ACK (5.4 и выше) (в настоящее время только aarch64). Это ядро ​​состоит из двух частей: ядро ​​GKI с кодом, общим для всех устройств, и модули GKI, разработанные Google, которые можно динамически загружать на устройства, где это применимо.
Ядро интерфейса модуля ядра (KMI)
См. ядро ​​GKI .
Запустить ядро
Ядро, подходящее для запуска устройства для данной версии платформы Android. Например, в Android 12 допустимыми ядрами запуска были версии 4.19, 5.4 и 5.10.
Ядро с долгосрочной поддержкой (LTS)
Ядро Linux, поддерживаемое от 2 до 6 лет. Ядра LTS выпускаются раз в год и являются основой для каждого ACK Google.

Типы ветвей

Ветка ядра ACK KMI
Ветка, для которой собираются ядра GKI . Например, android12-5.10 и android13-5.15.
Android-основная линия
Основная ветка разработки функций Android. Когда новое ядро ​​LTS объявляется в исходной версии, соответствующее новое ядро ​​GKI является ответвлением от android-mainline.
Основная ветка Linux
Основная ветка разработки исходных ядер Linux, включая ядра LTS.

Другие условия

Сертифицированный загрузочный образ
Ядро доставил в бинарном виде ( boot.img ) и прошил на устройство. Этот образ сертифицирован в том смысле, что он содержит встроенные сертификаты, позволяющие Google проверить, что устройство поставляется с ядром, сертифицированным Google.
Динамически загружаемый модуль ядра (DLKM)
Модуль, который можно динамически загружать во время загрузки устройства в зависимости от потребностей устройства. GKI и модули поставщиков являются типами DLKM. DLKM выпускаются в формате .ko и могут быть драйверами или предоставлять другие функции ядра.
проект ГКИ
Проект Google, направленный на решение проблемы фрагментации ядра путем разделения общих функций ядра от специфичных для поставщика SoC и поддержки плат в загружаемые модули.
Общий образ ядра (GKI)
Загрузочный образ, сертифицированный Google, который содержит ядро ​​GKI , созданное на основе дерева исходных кодов ACK , и подходит для прошивки в загрузочный раздел устройства Android.
КМИ
Интерфейс между ядром GKI и модулями поставщика, позволяющий обновлять модули поставщика независимо от ядра GKI. Этот интерфейс состоит из функций ядра и глобальных данных, которые были определены как зависимости поставщика/OEM с использованием списков символов для каждого партнера.
Модули ГКИ
Модули ядра, созданные Google, которые можно динамически загружать на устройства, где это применимо. Эти модули созданы как артефакты ядра GKI и поставляются вместе с GKI в виде архива system_dlkm_staging_archive.tar.gz . Модули GKI подписываются Google с использованием пары ключей времени сборки ядра и совместимы только с ядром GKI, с которым они созданы.
Модуль поставщика
Аппаратно-ориентированный модуль, разработанный партнером и содержащий SoC и функции, специфичные для устройства. Модуль поставщика — это тип динамически загружаемого модуля ядра.

Что дальше?