Descripción general del núcleo

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: Arquitectura de módulo de proveedor y kernel de GKI

Figura 1. Arquitectura del módulo del proveedor y 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?