Preguntas frecuentes sobre el kernel de Android

Este documento contiene preguntas frecuentes sobre el kernel de Android, conocido también como kernel de imagen de kernel genérico (GKI). Si no está familiarizado con GKI y la terminología del kernel de GKI, consulte la descripción general del kernel .

¿Se pueden cambiar las listas de símbolos de la interfaz del módulo del núcleo (KMI) en un núcleo estable?

Los cambios que no afectan el KMI existente se pueden agregar a los kernels que están congelados. Estos cambios incluyen nuevas funciones exportadas y entradas de lista de símbolos. Para obtener más información, consulte Gestión de listas de símbolos .

¿Puedo cambiar las estructuras utilizadas por los módulos del proveedor en un kernel estable?

Las estructuras que forman parte de una interfaz KMI no se pueden cambiar en kernels con un KMI congelado. Antes de la congelación de KMI, estas estructuras se pueden cambiar.

¿Puedo cambiar el kernel siempre y cuando no rompa la compatibilidad binaria/fuente?

Los cambios que no afectan el KMI se pueden realizar como se describe en Parches específicos de Android .

¿Cómo maneja GKI la configuración del kernel?

Para obtener información sobre la configuración del kernel, consulte Cambios en gki_defconfig .

¿Cómo manejo las correcciones de errores ascendentes para sobrescribir módulos GKI existentes?

Si crea un módulo de proveedor basado en un controlador en Android Common Kernel (ACK) , depende de usted asegurarse de que las correcciones de errores desde el origen y el ACK se propaguen a su módulo. Generalmente, le conviene utilizar el kernel GKI y los módulos GKI sin modificaciones para que Google proporcione estas actualizaciones de manera constante.

¿Existen pruebas específicas de GKI?

Existen pruebas de Vendor Test Suite (VTS) que verifican que esté instalada una compilación de GKI certificada y también para hacer cumplir los requisitos de GKI por versión. Por ejemplo, existen pruebas VTS de Android 12 para el encabezado de arranque v3 y para verificar la existencia de particiones requeridas en un dispositivo que ejecuta un kernel 5.10.

¿Cómo creo el archivo de fragmento defconfig del proyecto para compilaciones de dispositivos?

Muchos dispositivos compatibles con GKI utilizan un fragmento de configuración para describir las opciones de configuración necesarias, además de gki_defconfig , para construir los módulos del proveedor. Los ejemplos que forman parte de la base del código ACK incluyen Cuttlefish y DB845c. No hay forma de evitar un examen manual de las opciones de configuración para optimizar el fragmento, pero scripts/diffconfig de las fuentes del kernel son útiles para comparar los resultados de gki_defconfig y gki_defconfig+device.fragment .

¿Existe una solución alternativa para que modprobe trate - y _ como equivalente?

La página de manual de modprobe contiene esta descripción: " modprobe agrega o elimina de manera inteligente un módulo del kernel de Linux: tenga en cuenta que, por conveniencia, no hay diferencia entre _ y - en los nombres de los módulos (se realiza la conversión automática de guiones bajos)". El equipo de GKI cumple con la convención ascendente estándar, por lo que las herramientas de los proveedores o las convenciones de nomenclatura de módulos deben tener en cuenta este cumplimiento.

¿Cómo habilito debugfs para uso interno?

Para obtener detalles sobre cómo habilitar debugfs, consulte Funciones de depuración intrusivas posteriores .

¿Cómo puedo resolver ABI que no coinciden entre el kernel GKI con una configuración de módulo específica habilitada?

Las ABI no coincidentes entre el kernel de GKI y la configuración del módulo representan una dependencia implícita de la configuración del módulo, donde habilitar un módulo provoca que se incorpore una configuración binaria en la imagen del kernel resultante. Comuníquese con el equipo del kernel de Android ( kernel-team@android.com ) para determinar el camino a seguir. Una vez determinada la lista de símbolos, cree un error en el Rastreador de problemas y cargue un cambio en la lista de símbolos.

Tengo dispositivos compatibles con GKI 1.0 en el campo que ejecutan el kernel 5.4 que se lanzó con Android 11 y 12. ¿Qué opciones de actualización del kernel están disponibles y cómo puedo probar estos dispositivos al actualizar a Android 12 y 13?

Consulte la matriz de compatibilidad para obtener una lista de versiones del kernel compatibles para las versiones de lanzamiento y actualización. Aquí hay dos ejemplos de actualización.

Ejemplo 1: un usuario con un dispositivo que inicia Android 11 con el kernel android11-5.4 ( GKI 1.0 ) puede elegir cualquiera de estas opciones al actualizar a Android 12:

  • Actualice al kernel android12-5.10 GKI 2.0 (muy recomendable).

  • Mantenga el kernel android11-5.4 .

  • Actualice al kernel android12-5.4 .

Ejemplo 2: un usuario con un dispositivo que se inicia con Android 12 con el kernel android12-5.4 o android12-5.10 puede elegir cualquiera de estas opciones al actualizar a Android 13:

  • Actualice al kernel android13-5.10 o android13-5.15 GKI 2.0 (muy recomendable).

  • Mantenga el kernel android12-5.4 GKI 1.0 .

  • Mantenga el kernel android12-5.10 GKI 2.0 .

Específicamente para las pruebas de cumplimiento de Treble, le recomendamos realizar una de las siguientes acciones:

  • Reemplace el kernel asociado con el kernel GKI 1.0 certificado ( android11-5.4 o android12-5.4 ).

  • Se envía con el kernel GKI 2.0 certificado ( android12-5.10 , android13-5.10 o android13-5.15 ) según su selección.

Puede descargar compilaciones de GKI 2.0 desde las compilaciones de lanzamiento de Generic Kernel Image (GKI) .