El kernel de Android se basa en un kernel anterior con soporte a largo plazo (LTS) de Linux que se encuentra en . 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 superior) también se conocen como kernels GKI, ya que admiten la separación del código Generic Core Kernel independiente del hardware y los módulos GKI independientes del hardware. El kernel GKI interactúa con módulos de proveedores específicos de hardware que contienen un sistema en un chip (SoC) y un código específico de la placa. La interacción entre el kernel de 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 el 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 está aguas abajo de 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 los kernels con soporte a largo plazo (LTS). Los ACK más nuevos (versión 5.4 y superior) también se conocen como núcleos GKI, ya que admiten la separación del código del núcleo genérico independiente del hardware y los módulos GKI independientes del hardware.
- Núcleo del proyecto de código abierto de Android (AOSP)
- Consulte Núcleo común de Android.
- Núcleo de características
- Un núcleo para el que se garantiza la implementación de las funciones 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 adaptar a 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 genérica del kernel (GKI)
- Cualquier kernel ACK más nuevo (5.4 y superior) (actualmente solo aarch64). Este núcleo consta de dos partes: el núcleo GKI central con código común en todos los dispositivos y los módulos del núcleo GKI desarrollados por Google que se pueden cargar dinámicamente en los dispositivos cuando corresponda.
- Núcleo de interfaz de módulo de kernel (KMI)
- Ver Núcleo GKI .
- Núcleo de lanzamiento
- Un núcleo 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.
- Núcleo 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 núcleo ACK KMI
- La rama para la que se construyen los núcleos GKI . Por ejemplo, android12-5.10 y android13-5.15.
- Línea principal de Android
- La rama de desarrollo principal para las características de Android. Cuando se declara un nuevo kernel LTS en sentido ascendente, el nuevo kernel GKI correspondiente se bifurca desde la línea principal de Android.
- 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 forma binaria (
boot.img
) y se mostró en el dispositivo. Esta imagen está certificada en el sentido de que contiene certificados incorporados para que Google pueda verificar que el dispositivo se envía con un kernel certificado por Google. - Módulo 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 tipos de DLKM. Los DLKM se publican en formato
.ko
y pueden ser controladores o pueden proporcionar otras funciones del kernel. - proyecto GKI
- Un proyecto de Google que aborda la fragmentación del kernel al separar la funcionalidad central común del kernel del SoC específico del proveedor y el soporte de la placa en módulos cargables.
- Imagen genérica del kernel (GKI)
- Una imagen de arranque certificada por Google que contiene un kernel GKI creado a partir de un árbol fuente ACK y es adecuada para actualizarse en la partición de arranque de un dispositivo Android.
- KMI
- Una interfaz entre el kernel de GKI y los módulos del proveedor que permite que los módulos del proveedor se actualicen independientemente del kernel de 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ódulo del núcleo GKI
- Módulos cargables dinámicamente creados por Google que se pueden cargar dinámicamente en dispositivos cuando corresponda. Estos módulos están construidos con el kernel GKI y se entregan junto con GKI como la imagen
system_dlkm
. Los módulos del kernel GKI están firmados por Google usando el par de claves de tiempo de compilación del kernel y solo son compatibles con el kernel central genérico con el que están construidos. Los módulos del núcleo GKI son un tipo de DLKM . - Módulo de proveedor
- 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 núcleo cargable dinámicamente.
¿Que sigue?
- Si es nuevo en el desarrollo del kernel de Android, puede comenzar leyendo lo siguiente:
- Núcleos estables a largo plazo : antecedentes sobre los núcleos LTS ascendentes que alimentan los ACK.
- Núcleos 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 de 4.19 o anterior y busca documentación relacionada, consulte la sección de descripción general de kernels anteriores (<= 4.19) .