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

Рисунок 1. Архитектура ядра GKI и модулей поставщика.
Словарь терминов ядра
Ниже приведены термины, используемые в документации ядра.
Типы ядер
- Общее ядро Android (ACK)
- Ядро, являющееся частью репозитория ядра LTS и включающее в себя патчи, важные для сообщества Android. Эти патчи не были включены в основную ветку Linux или ядра Long Term GKI.
Ядра версий 5.10 и выше также называются ядрами Generic Kernel Image (GKI) .
- Ядро Android с открытым исходным кодом (AOSP)
- См. Android Common Kernel .
Функции Android 12 невозможно перенести в ядра версии 4.19; набор функций будет аналогичен устройству, выпущенному с Android 11 и обновленному до Android 12.
- Generic Kernel Image (GKI) kernel
Любое ядро ACK версии 5.10 и выше (только для aarch64). Ядро GKI состоит из двух частей:
Универсальное ядро — часть ядра GKI, общая для всех устройств.
Модули GKI — это модули ядра, разработанные Google, которые могут динамически загружаться на устройствах, где это применимо. Эти модули создаются как артефакты ядра GKI и поставляются вместе с GKI в виде архива
system_dlkm_staging_archive.tar.gz. Модули GKI подписываются Google с использованием пары ключей, используемых при сборке ядра, и совместимы только с тем ядром GKI, с которым они были созданы.
- Интерфейс модулей ядра (KMI) ядро
См. ядро GKI .
- Ядро с долгосрочной поддержкой (LTS)
Ядро Linux, поддерживаемое в течение 2–6 лет. Ядра с долгосрочной поддержкой (LTS) выпускаются раз в год и являются основой для каждого из общих ядер Android от Google.
Типы филиалов
- Ветка ядра 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, направленный на решение проблемы фрагментации ядра путем разделения общей функциональности ядра от поддержки SoC и плат, специфичных для конкретного производителя, на загружаемые модули.
Generic Kernel Image (GKI) : Загрузочный образ, сертифицированный Google, содержащий ядро GKI , собранное из исходного кода ACK , и подходящий для прошивки в загрузочный раздел устройства под управлением Android.
- Интерфейс модулей ядра (KMI)
- Интерфейс между ядром GKI и модулями поставщиков, позволяющий обновлять модули поставщиков независимо от ядра GKI. Этот интерфейс состоит из функций ядра и глобальных данных, которые были определены как зависимости от поставщиков/OEM с использованием списков символов для каждого партнера.
- Модуль поставщика
- Аппаратно-специфический модуль, разработанный партнером и содержащий функциональность, специфичную для SoC и устройства. Модуль поставщика — это тип динамически загружаемого модуля ядра.
Что дальше?
Если вы новичок в разработке ядра Android, начните с прочтения следующего:
- Ядра с долгосрочной стабильностью — Общая информация о ядрах LTS, используемых в ответах на подтверждения (ACK).
- Общие сведения об ядрах Android — основы ACK-подтверждений.
Если вы новичок в разработке ядра GKI, начните с изучения разработки GKI .