El kernel de Android se basa en un kernel de Linux con soporte a largo plazo (LTS) . En Google, los kernels LTS se combinan con parches específicos de Android para formar lo que se conoce como Android Common Kernels (ACK) .
Los ACK más nuevos (versión 5.4 y superiores) también se conocen como núcleos GKI . Los núcleos GKI admiten la separación del código del núcleo central genérico independiente del hardware y los módulos GKI de los módulos de proveedores específicos del hardware.
El kernel GKI interactúa con módulos de proveedores específicos de hardware que contienen sistema en un chip (SoC) y código específico de la placa. La interacción entre el kernel GKI y los módulos del proveedor está habilitada por la Interfaz del Módulo del Kernel (KMI) que consta de listas de símbolos que identifican las funciones y los datos globales requeridos por los módulos del proveedor. La Figura 1 muestra la arquitectura del módulo del proveedor y del kernel de GKI:
Glosario del núcleo
Esta sección contiene términos utilizados en toda la documentación del kernel.
Tipos de kernel
- Núcleo común de Android (ACK)
- Un kernel que es posterior a un kernel LTS e incluye parches de interés para la comunidad de Android que no se han fusionado con la línea principal de Linux o con los kernels con soporte a largo plazo (LTS). Los ACK más nuevos (versión 5.4 y superiores) también se conocen como núcleos GKI, ya que admiten la separación de código de núcleo genérico independiente del hardware y módulos GKI independientes del hardware.
- Kernel del Proyecto de código abierto de Android (AOSP)
- Consulte Kernel común de Android.
- Núcleo de características
- Un kernel para el cual se garantiza la implementación de las características de lanzamiento de la plataforma. Por ejemplo, en Android 12, los dos núcleos de funciones eran android12-5.4 y android12-5.10. Las funciones de Android 12 no se pueden respaldar a los kernels 4.19; el conjunto de funciones sería similar a un dispositivo que se lanzó con 4.19 en R y se actualizó a S).
- núcleo central genérico
- La parte del kernel GKI que es común en todos los dispositivos.
- Kernel de imagen de kernel genérico (GKI)
- Cualquier kernel ACK más nuevo (5.4 y superior) (actualmente solo aarch64). Este kernel tiene dos partes: el kernel GKI principal con código común en todos los dispositivos y módulos GKI desarrollados por Google que se pueden cargar dinámicamente en los dispositivos cuando corresponda.
- Kernel de interfaz de módulo de kernel (KMI)
- Ver núcleo GKI .
- Lanzar núcleo
- Un kernel que es válido para iniciar un dispositivo para una versión determinada de la plataforma Android. Por ejemplo, en Android 12, los kernels de lanzamiento válidos eran 4.19, 5.4 y 5.10.
- Kernel con soporte a largo plazo (LTS)
- Un kernel de Linux con soporte de 2 a 6 años. Los kernels LTS se lanzan una vez al año y son la base de cada uno de los ACK de Google.
Tipos de sucursales
- Rama del kernel ACK KMI
- La rama para la que se crean los núcleos GKI . Por ejemplo, android12-5.10 y android13-5.15.
- Línea principal de Android
- La rama de desarrollo principal para funciones de Android. Cuando se declara un nuevo kernel LTS en sentido ascendente, el nuevo kernel GKI correspondiente se ramifica desde android-mainline.
- Línea principal de Linux
- La rama de desarrollo principal para los kernels de Linux ascendentes, incluidos los kernels LTS.
Otros terminos
- Imagen de arranque certificada
- El kernel se entregó en formato binario (
boot.img
) y se instaló en el dispositivo. Esta imagen está certificada en el sentido de que contiene certificados integrados para que Google pueda verificar que el dispositivo se entrega con un kernel certificado por Google. - Módulo de kernel cargable dinámicamente (DLKM)
- Un módulo que se puede cargar dinámicamente durante el arranque del dispositivo según las necesidades del dispositivo. GKI y los módulos de proveedores son ambos tipos de DLKM. Los DLKM se publican en formato
.ko
y pueden ser controladores o ofrecer otras funciones del kernel. - proyecto GKI
- Un proyecto de Google que aborda la fragmentación del kernel separando la funcionalidad central común del SoC y el soporte de placa específicos del proveedor en módulos cargables.
- Imagen de kernel genérica (GKI)
- Una imagen de inicio certificada por Google que contiene un kernel GKI creado a partir de un árbol de fuentes ACK y es adecuada para actualizarse en la partición de inicio de un dispositivo Android.
- KMI
- Una interfaz entre el kernel GKI y los módulos del proveedor que permite que los módulos del proveedor se actualicen independientemente del kernel GKI. Esta interfaz consta de funciones del kernel y datos globales que se han identificado como dependencias de proveedores/OEM mediante listas de símbolos por socio.
- módulos GKI
- Módulos de kernel creados por Google que se pueden cargar dinámicamente en dispositivos cuando corresponda. Estos módulos se crean como artefactos del kernel de GKI y se entregan junto con GKI como el archivo
system_dlkm_staging_archive.tar.gz
. Los módulos GKI están firmados por Google utilizando el par de claves de tiempo de compilación del kernel y solo son compatibles con el kernel GKI con el que están construidos. - Módulo de vendedor
- Un módulo específico de hardware desarrollado por un socio y que contiene SoC y funcionalidad específica del dispositivo. Un módulo de proveedor es un tipo de módulo de kernel que se puede cargar dinámicamente.
¿Que sigue?
- Si eres nuevo en el desarrollo del kernel de Android, quizás quieras comenzar leyendo lo siguiente:
- Kernels estables a largo plazo : antecedentes sobre los kernels LTS ascendentes que alimentan los ACK.
- Kernels comunes de Android : antecedentes sobre los ACK.
- Si es nuevo en el desarrollo del kernel de GKI, comience leyendo Desarrollo de GKI .
- Si está utilizando una versión de kernel 4.19 o anterior y busca documentación relacionada, consulte la sección de descripción general de Kernels anteriores (<=4.19) .