Ядро Android основано на исходном ядре Linux с долгосрочной поддержкой (LTS), которое можно найти по адресу . В Google ядра LTS объединяются с исправлениями для Android, чтобы сформировать так называемые общие ядра Android (ACK) .
Более новые ACK (версия 5.4 и выше) также известны как ядра GKI , поскольку они поддерживают разделение аппаратно-независимого кода Generic Core Kernel и аппаратно-независимых модулей GKI . Ядро GKI взаимодействует с модулями аппаратных поставщиков, содержащими систему на кристалле (SoC) и код, специфичный для платы. Взаимодействие между ядром GKI и модулями поставщиков обеспечивается интерфейсом модулей ядра (KMI) , состоящим из списков символов, идентифицирующих функции и глобальные данные, требуемые модулями поставщиков. На рис. 1 показана архитектура ядра GKI и модуля поставщика:
Глоссарий ядра
Этот раздел содержит термины, используемые в документации ядра.
Типы ядра
- Общее ядро Android (ACK)
- Ядро, которое является нижестоящим по течению от ядра LTS и включает исправления, представляющие интерес для сообщества Android, которые не были объединены в основную линейку Linux или ядра с долгосрочной поддержкой (LTS). Более новые ACK (версия 5.4 и выше) также известны как ядра GKI, поскольку они поддерживают разделение аппаратно-независимого кода Generic Kernel и аппаратно-независимых модулей GKI.
- Ядро проекта Android с открытым исходным кодом (AOSP)
- См. Общее ядро Android.
- Ядро функции
- Ядро, для которого гарантированно реализованы функции релиза платформы. Например, в Android 12 двумя ядрами функций были android12-5.4 и android12-5.10. Функции Android 12 нельзя перенести на ядра 4.19; набор функций будет аналогичен устройству, запущенному с 4.19 на R и обновленному до S).
- общее основное ядро
- Часть ядра GKI , общая для всех устройств.
- Ядро общего образа ядра (GKI)
- Любое более новое (5.4 и выше) ядро ACK (в настоящее время только 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 с использованием списков символов для каждого партнера.
- Модуль ядра GKI
- Динамически загружаемые модули, созданные Google, которые можно динамически загружать на устройства, где это применимо. Эти модули создаются вместе с ядром GKI и поставляются вместе с GKI в виде образа
system_dlkm
. Модули ядра GKI подписываются Google с помощью пары ключей времени сборки ядра и совместимы только с общим ядром, с которым они созданы. Модули ядра GKI представляют собой тип ДЛКМ . - Модуль поставщика
- Аппаратно-ориентированный модуль, разработанный партнером и содержащий функциональные возможности SoC и конкретных устройств. Модуль поставщика — это тип динамически загружаемого модуля ядра.
Что дальше?
- Если вы новичок в разработке ядра Android, вы можете начать со следующего:
- Долгосрочные стабильные ядра — сведения о ядрах восходящего потока LTS, которые передаются в ACK.
- Общие ядра Android — справочная информация о ACK.
- Если вы новичок в разработке ядра GKI, начните с чтения GKI development .
- Если вы используете версию ядра 4.19 или более раннюю и ищете соответствующую документацию, обратитесь к разделу Обзор предыдущих ядер (<=4.19) .