Ядро Android основано на ядре Linux с долгосрочной поддержкой (LTS) . В Google ядра LTS объединяются с патчами, специфичными для Android, чтобы сформировать так называемые общие ядра Android (ACK) .
Более новые ACK (версия 5.4 и выше) также известны как ядра GKI . Ядра GKI поддерживают разделение аппаратно-независимого общего кода ядра и модулей GKI от модулей поставщика , зависящих от аппаратного обеспечения.
Ядро GKI взаимодействует с модулями производителей аппаратного обеспечения, содержащими систему на кристалле (SoC) и код, специфичный для платы. Взаимодействие между ядром GKI и модулями поставщика обеспечивается интерфейсом модуля ядра (KMI), состоящим из списков символов, идентифицирующих функции и глобальные данные, необходимые модулям поставщика. На рисунке 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 на Android 11 и обновленному до Android 12.
- общее ядро ядра
- Часть ядра 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 и функции, специфичные для устройства. Модуль поставщика — это тип динамически загружаемого модуля ядра.
Что дальше?
- Если вы новичок в разработке ядра Android, возможно, вам стоит начать с прочтения следующего:
- Долгосрочные стабильные ядра — сведения об исходных ядрах LTS, которые передаются в ACK.
- Общие ядра Android — общие сведения об ACK.
- Если вы новичок в разработке ядра GKI, начните с чтения «Разработка GKI» .
- Если вы используете версию ядра 4.19 или старше и ищете соответствующую документацию, обратитесь к разделу обзора предыдущих ядер (<=4.19) .