Preguntas frecuentes sobre el kernel de Android

Este documento contiene preguntas frecuentes sobre el kernel de Android, también conocido como kernel de imagen genérica del kernel (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 kernel (KMI) en un kernel estable?

Los cambios que no afectan el KMI existente se pueden agregar a los núcleos 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 de proveedores en un núcleo 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 los 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 de upstream y ACK se propaguen a su módulo. Por lo general, le conviene utilizar el núcleo GKI y los módulos GKI sin modificaciones para que Google proporcione estas actualizaciones de forma constante.

¿Hay pruebas específicas de GKI?

Hay pruebas de Vendor Test Suite (VTS) que verifican que se haya instalado una compilación de GKI certificada y también para hacer cumplir los requisitos de GKI por versión. Por ejemplo, hay pruebas de Android 12 VTS 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 crear 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 los scripts/diffconfig de las fuentes del kernel son útiles para comparar los resultados de gki_defconfig y gki_defconfig+device.fragment .

¿Existe alguna solución para el tratamiento de modprobe - y _ como equivalentes?

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 una conversión de subrayado automática)". El equipo de GKI se adhiere a la convención ascendente estándar, por lo que las herramientas del proveedor o las convenciones de nomenclatura de módulos deben tener en cuenta esta adherencia.

¿Cómo habilito debugfs para uso interno?

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

¿Cómo puedo resolver las ABI no coincidentes entre el kernel de 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 hace que se construya 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. Después de determinar la lista de símbolos, cree un error en el Rastreador de problemas y cargue un cambio en la lista de símbolos.