Ядро Android основано на ядре Linux с долгосрочной поддержкой (LTS). В Google ядра LTS объединяются с исправлениями для Android, в результате чего получаются общие ядра Android (ACK).
ACK создаются из репозитория kernel/common. Этот репозиторий представляет собой надмножество исходного кода ядра Linux с дополнительными исправлениями для Android.
ACK версии 5.10 и выше также называются ядрами *Generic Kernel Images (GKI). Ядра GKI поддерживают разделение кода универсального ядра, не зависящего от оборудования, и модулей GKI от модулей поставщика, зависящих от оборудования.
Взаимодействие между ядром GKI и модулями поставщика обеспечивается интерфейсом модуля ядра (KMI), состоящим из списков символов, которые идентифицируют функции и глобальные данные, необходимые модулям поставщика. На рисунке 1 показана архитектура ядра GKI и модуля поставщика:

Рисунок 1. Архитектура ядра GKI и модуля поставщика.
Глоссарий ядра
Ниже приведены термины, используемые в документации по ядру.
Типы ядер
- Общее ядро Android (ACK)
- Ядро, которое является производным от LTS-ядра и включает исправления, важные для сообщества Android. Эти исправления не были объединены с основной веткой Linux или долгосрочными ядрами GKI.
Ядра версий 5.10 и выше также называются ядрами Generic Kernel Image (GKI).
- Ядро Android Open Source Project (AOSP)
- Подробнее об общих ядрах Android…
Функции Android 12 нельзя перенести на ядра 4.19. Набор функций будет аналогичен устройству, которое было выпущено с Android 11 и ядром 4.19, а затем обновлено до Android 12.
- Ядро Generic Kernel Image (GKI)
Любая версия ядра ACK 5.10 и выше(только для архитектуры aarch64). Ядро GKI состоит из двух частей:
Общее ядро. Часть ядра GKI, которая является общей для всех устройств.
Модули GKI – модули ядра, созданные Google, которые можно динамически загружать на устройствах, где это применимо. Эти модули создаются как артефакты ядра GKI и поставляются вместе с GKI в виде архива
system_dlkm_staging_archive.tar.gz. Модули GKI подписываются Google с помощью пары ключей, созданной во время сборки ядра, и совместимы только с ядром GKI, с которым они были созданы.
- Интерфейс модуля ядра (KMI)
Подробнее о ядре GKI…
- Ядро с долгосрочной поддержкой (LTS)
Ядро Linux, которое поддерживается от двух до шести лет. Ядра LTS выпускаются раз в год и служат основой для общих ядер Android.
Типы ветвей
- Ветка ядра ACK KMI
- Ветка, для которой создаются ядра GKI. Названия ветвей соответствуют версиям ядра, например
android15-6.6. - Android-mainline
- Основная ветка разработки функций Android. Когда объявляется о выходе нового ядра LTS, соответствующее новое ядро GKI ответвляется от android-mainline.
Основная ветка Linux. Основная ветка разработки для вышестоящих ядер Linux, включая ядра LTS.
Прочие термины
- Сертифицированный загрузочный образ
- Ядро, предоставленное в двоичной форме (
boot.img) и записанное на устройство. Этот образ считается сертифицированным, поскольку содержит встроенные сертификаты, позволяющие Google проверить, что устройство поставляется с сертифицированным Google ядром. - Динамически загружаемый модуль ядра (DLKM)
- Модуль, который можно динамически загрузить во время загрузки устройства в зависимости от его потребностей. GKI и модули поставщика – это типы DLKM. DLKM выпускаются в виде
.koи могут быть драйверами или предоставлять другие функции ядра. - Проект GKI
- Проект Google, направленный на устранение фрагментации ядра путем отделения общих основных функций ядра от функций, относящихся к определенной системе на чипе и поддержке платы, в загружаемые модули.
Образ ядра общего назначения (GKI) – это загрузочный образ, сертифицированный Google, который содержит ядро GKI, созданное на основе дерева исходного кода ACK, и подходит для записи в загрузочный раздел устройства Android.
- Интерфейс модуля ядра (KMI)
- Интерфейс между ядром GKI и модулями поставщика, позволяющий обновлять модули поставщика независимо от ядра GKI. Этот интерфейс состоит из функций ядра и глобальных данных, которые были определены как зависимости от поставщика или OEM с помощью списков символов для каждого партнера.
- Модуль поставщика
- Модуль, разработанный партнером для определенного оборудования и содержащий функции, относящиеся к процессору и устройству. Модуль поставщика – это тип динамически загружаемого модуля ядра.
Что дальше
Если вы только начинаете разрабатывать ядро Android, ознакомьтесь со следующими материалами:
- Стабильные ядра с долгосрочной поддержкой – информация о ядрах LTS, которые используются в ACK.
- Общие ядра Android – информация о ACK.
Если вы не знакомы с разработкой ядра GKI, начните с раздела Разработка GKI.