Proceso de lanzamiento de imágenes genéricas de kernel (GKI)

En esta página, se describe cómo se lanzan las GKI, incluidas las versiones semanales, mensuales y fuera de banda de emergencia. El objetivo de este documento es proporcionar a los OEMs una guía sobre dónde recoger el GKI, así como el proceso para las correcciones de emergencia fuera de banda. Los OEMs también pueden usar el desarrollo de GKI para obtener más información sobre cómo trabajar con el equipo del kernel de Android y optimizar el kernel de GKI para sus productos.

Cadencia de lanzamiento de GKI

GKI se lanza con una cadencia mensual después de la inmovilización de KMI.

Lanzamiento de GKI de Android 13, 14 y 15

La siguiente tabla solo se aplica a android13-5.10, android13-5.15 y android14-5.15.

Compilaciones mensuales certificadas de GKI Fecha límite de entrada Fecha de preparación de la precarga de GKI ¿Confirmado?
Noviembre 11 de noviembre de 2024 27 de noviembre de 2024
Enero 17 de enero de 2025 31 de enero de 2025
Marzo 14 de marzo de 2025 31 de marzo de 2025

La siguiente tabla solo se aplica a android14-6.1 y android15-6.6.

Compilaciones mensuales certificadas de GKI Fecha límite de entrada Fecha de preparación de la precarga de GKI ¿Confirmado?
Octubre 1 de octubre de 2024 14 de octubre de 2024
Noviembre 1 de noviembre de 2024 15 de noviembre de 2024
Diciembre 2 de diciembre de 2024 16 de diciembre de 2024
Enero 6 de enero de 2025 22 de enero de 2025

Versión de GKI de Android 12

Después de mayo de 2024, los lanzamientos de GKI de android12-5.10 tendrán una cadencia trimestral y se publicarán a mediados de mes. La siguiente tabla solo se aplica a android12-5.10.

Compilaciones mensuales certificadas de GKI Fecha límite de entrada Fecha de preparación de la precarga de GKI ¿Confirmado?
Noviembre 1 de noviembre de 2024 15 de noviembre de 2024
Febrero 3 de febrero de 2025 17 de febrero de 2025

Validez de compilación de GKI para OEM

Los OEMs pueden usar un GKI de Android lanzado recientemente. Los OEMs pueden lanzar compilaciones con certificación de GKI, siempre y cuando cumplan con los requisitos de LTS en el Boletín de seguridad de Android (ASB).

Lanzamientos de desarrollo semanales

Las versiones se prueban con Cuttlefish para garantizar que pasen una barra de calidad mínima.

Los objetos binarios de GKI están disponibles para el autoservicio desde Android CI a medida que se combinan los cambios. Las compilaciones semanales no se certificarán, pero se pueden usar como un modelo de referencia para el desarrollo y las pruebas. Las compilaciones semanales no se pueden usar para las compilaciones de dispositivos de producción destinadas a los usuarios finales.

Lanzamientos mensuales certificados

Las versiones mensuales de GKI contienen un boot.img probado que incluye un certificado insertado por Google para certificar que los objetos binarios se compilaron a partir de un modelo de referencia de código fuente conocido.

Cada mes, se selecciona una versión candidata mensual de GKI (no certificada) después de la fecha límite de registro, que suele ser la segunda compilación semanal de ese mes. Después de seleccionar la versión candidata mensual, no se aceptarán cambios nuevos en la versión de ese mes. Durante el período de la ventana cerrada, solo se pueden abordar las correcciones de errores que causan fallas en las pruebas. La versión candidata se somete a control de calidad, como se describe en la sección de calificación de GKI, para garantizar que las pruebas de cumplimiento se aprueben en la compilación de GSI+GKI con un dispositivo de referencia y cuttlefish.

Cronograma de la cadencia de lanzamientos de GKI Figura 1: Cronograma de lanzamientos de GKI

Proceso de reenvío de emergencia

Un relanzamiento se refiere al proceso de volver a combinar, compilar, volver a probar y volver a certificar un objeto binario después de un lanzamiento público del kernel de GKI. Puedes solicitar una nueva compilación de un binario certificado en cualquiera de las siguientes circunstancias:

  • Para actualizar una lista de símbolos.
  • Para aplicar una corrección a un error, incluidos los errores encontrados durante la aprobación del lab del operador.
  • Para agregar un hook del proveedor.
  • Para aplicar un parche a un componente existente.
  • Aplicar un parche de seguridad (después de 6 meses)

Los parches de seguridad se combinan automáticamente en una rama de lanzamiento hasta 6 meses después del lanzamiento de la rama. Después del corte de 6 meses, debes solicitar una nueva revisión para aplicar parches de seguridad a una rama.

Lineamientos para las solicitudes de relanzamiento

Antes de solicitar una nueva revisión, ten en cuenta los siguientes lineamientos:

  • Los relanzamientos solo se permiten en las ramas de versión después de que se lanza el lanzamiento público inicial de una compilación mensual.

  • Las solicitudes de reintento solo se aceptan para una rama de lanzamiento determinada durante un máximo de seis meses después del lanzamiento público inicial. Después de seis meses, las ramas son aptas para el reenvío solo para los parches de seguridad que se citan en un boletín de seguridad de Android.

  • Cuando los requisitos de LTS, definidos por el Boletín de seguridad de Android (ASB) hacen que la rama no cumpla con los requisitos, deja de estar disponible. No se aceptan las solicitudes de relanzamiento de ramas obsoletas. La fecha de baja de una rama de lanzamiento de GKI determinada se incluye en las notas de compilación de lanzamiento de GKI mensuales en Lanzamientos. Para la planificación futura, los requisitos de LTS se actualizan anualmente en mayo y noviembre. Por ejemplo, la rama android12-5.10-2023-07 (5.10.177) no es compatible con los reintentos después del 1 de mayo de 2024, ya que la rama android12-5.10-2023-07 (5.10.177) no cumple con los requisitos de LTS de ASB-2024-05.

  • Los reenvíos solo se aplican para correcciones de errores urgentes, actualizaciones de listas de símbolos o para aplicar un parche para corregir una función existente.

  • Todos los parches que se incluyen en la rama de lanzamiento mensual ya deben combinarse con la rama principal de desarrollo de GKI. Por ejemplo, si se requiere un parche para un reintento de android12-5.10-2022-09, ya debe haberse fusionado en android12-5.10.

  • Debes elegir los parches de la rama principal de desarrollo de GKI y subirlos a la rama de lanzamiento mensual.

  • En la solicitud de reenvío, debes asignarle una prioridad (urgencia). Esta prioridad ayuda al equipo de GKI a asistir mejor a los socios de manera oportuna. Para solicitudes críticas o urgentes, marca la prioridad como P0. En el caso de las solicitudes P0 y P1, también debes justificar la urgencia. En la siguiente tabla, se proporciona una asignación de la prioridad de errores y el tiempo de resolución (ESRT):

    Prioridad ESRT
    P0 Dos días hábiles
    P1 5 días hábiles
    P2 10 días hábiles
    P3 15 días laborables
  • Debes enviar una solicitud de revisión por separado para cada rama de lanzamiento. Por ejemplo, si se necesita un reenvío para android12-5.10-2022-08 y android12-5.10-2022-09, debes crear dos solicitudes de reenvío.

  • Después de proporcionar una compilación y marcar una solicitud de reenvío como corregida, no deberías volver a abrir la solicitud de reenvío para agregar CL adicionales. Debes enviar una nueva solicitud de revisión si hay parches adicionales que se deben combinar.

  • Para cada CL en consideración, agrega las siguientes etiquetas.

    • Bug: El ID del error se debe agregar al mensaje de confirmación de cada CL.
    • Change-Id: Debe ser idéntico al ID de cambio de la rama base.
  • Si una solicitud de nueva revisión requiere tu respuesta y no respondes en un plazo de tres días hábiles, la prioridad se reduce en un nivel (por ejemplo, P0 se reduce a P1). Si no respondes durante dos semanas, el error se marca como No se corregirá (obsoleto).

Cómo enviar una solicitud de revisión

En el siguiente diagrama, se muestra el proceso de reenvío. El proceso comienza cuando el socio OEM (tú) envía la solicitud de nueva revisión.

Proceso de reenvío de emergencia Figura 2: El proceso de reenvío

Para ingresar al proceso de reenvío, haz lo siguiente:

  1. Completa el formulario de solicitud de GKI Respin y comunícate con tu administrador técnico de cuentas de Google de inmediato. Este formulario crea un error de solicitud de rechazo de GKI. Tú (el solicitante), el equipo de GKI y las personas específicas que agregues a la lista de Cc del error pueden ver los errores de la solicitud de reenvío.
    • Si ya tienes una solución, la solicitud debe apuntar al envío de parches en AOSP para que Google pueda revisarla. Si no es posible enviar el parche, este se debe adjuntar como archivo de texto a la solicitud.
    • Si no tienes una solución, la solicitud debe contener la mayor cantidad de información posible, incluidos el número de versión del kernel y los registros, para que Google pueda ayudar a depurar el problema.
  2. El equipo de GKI de Google revisará la solicitud y la aprobará o te la volverá a asignar si se necesita más información.
  3. Después de que se apruebe una corrección, el equipo de GKI de Google revisa el código (CR+2) del cambio. La revisión inicia el período del ESRT. El equipo de GKI combina, compila, prueba la regresión y certifica el cambio.
  4. El objeto binario se publica en ci.android.com. Finaliza el período de la ESRT y el equipo de GKI de Google marca la solicitud como corregida y hace referencia a la compilación de respin. La compilación de relanzamiento también se publicará en la página de compilaciones de lanzamiento de la imagen genérica de kernel (GKI).

Calificaciones de GKI

Tipos de compilaciones de GKI Aplicación de los estándares de calidad Notas
Semanal Pruebas de Cuttlefish
  • Inicio
  • Subconjunto de VTS
  • Subconjunto de CTS
  • Sin certificación. Solo para pruebas y para que aparezca el dispositivo
    .
  • No se puede usar para iniciar dispositivos.
Mensual (certificado) Pruebas de Cuttlefish
  • Inicio
  • VTS
  • CTS
Pruebas de hardware de referencia
  • Inicio
  • VTS
  • CTS
Reintentos (certificados) Pruebas de Cuttlefish
  • Inicio
  • VTS
  • Subconjunto de CTS
Pruebas de dispositivos de referencia
  • Inicio
  • VTS
  • Se compila a partir de una compilación certificada por GKI.
  • La compilación se certifica después de la calificación.

Dónde obtener artefactos de compilación

Los artefactos de todas las versiones se pueden obtener en ci.android.com.

Puedes encontrar más información sobre la CI, incluidos los resultados de las pruebas, en el panel de Integración continua de Android.

Preguntas frecuentes

Estas son algunas preguntas frecuentes relacionadas con el proceso de lanzamiento de GKI.

¿Es posible compilar un nuevo GKI binario basado en un GKI que ya se lanzó?

Sí, esto se conoce como un reintento. El proceso de nueva resolución es compatible, siempre y cuando la compilación de GKI publicada (en la que se solicita la nueva resolución) cumpla con los requisitos de LTS en el Boletín de seguridad de Android (ASB).

¿Es posible reproducir objetos binarios de GKI?

Sí, este es un ejemplo:

GKI 2.0
5.10 kernel prebuilts from build 7364300
https://ci.android.com/builds/submitted/7364300/kernel_aarch64/latest

Para reproducir el ejemplo, descarga manifest_$id.xml y ejecuta el siguiente comando:

repo init -u https://android.googlesource.com/kernel/manifest
mv manifest_7364300.xml .repo/manifests
repo init -m manifest_7364300.xml --depth=1
repo sync
# build the GKI images
# You may want to use LTO=thin to build faster for development
BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
# (optional) build virtual platform modules
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.aarch64 build/build.sh

Puedes recuperar la copia de tu artefacto de GKI desde out/.../dist.

¿Se compiló el objeto binario de GKI (incluido el parche de giro de emergencia) en la base de código más reciente?

No. Los reintentos solo contienen parches que se encuentran sobre los kernels mensuales certificados que se eligieron. Estas revisiones contienen todas las correcciones de errores de bloqueo de inicio que los OEMs informaron hasta un momento determinado con la versión mensual base correspondiente. Observa el siguiente ejemplo de cómo ocurre este tipo de situación.

  • OEM1 y OEM2 deciden usar la versión binaria de GKI a partir de noviembre de 2021.
  • OEM1 y OEM2 encuentran problemas que requieren parches para la asistencia. Estos parches pueden ser diferentes o iguales.
  • Los respins sobre el binario de noviembre de 2021 tienen correcciones de bloqueo del inicio que informaron OEM1 y OEM2 durante el período de respin, pero nada más.
  • Los problemas mencionados en el segundo punto también se incluyen en las versiones mensuales posteriores de GKI.

La revisión de octubre tiene todos los parches enviados por los OEM, pero otros parches de OEM nos afectan, ya que no se probaron específicamente con nuestros productos. ¿Es posible incluir solo nuestro parche?

No es posible. Una ruta de relanzamiento "por OEM" no es escalable. En cambio, el equipo de GKI analiza cada cambio que se produce en las compilaciones de relanzamiento y prueba los cambios con todo el hardware disponible antes de crear una compilación nueva. Si el equipo de GKI determina que el problema es específico de un OEM, un dispositivo o un modelo, puede garantizar que el código que agrega el cambio solo se ejecute en el dispositivo, el modelo o el SKU afectados.

El principal beneficio de los respins unificados es que todos los dispositivos que usan la misma base de lanzamiento se benefician entre sí, en especial si los errores que descubren son genéricos y se aplican a todos los usuarios. Los errores del kernel principal que se encuentran en las pruebas del operador son un ejemplo específico de este concepto.

¿Hay situaciones en las que Google proporciona información específica sobre los parches y los problemas de los OEM para que los OEM puedan evaluar el impacto y el riesgo de implementar los parches con sus productos?

Google nunca agregará un cambio a una compilación de respin hasta que se comprenda el problema y se hayan recopilado todos los detalles. Esto se puede ver en el registro de cambios (mensaje de confirmación). Google no revela qué dispositivo específico afecta, pero los OEMs siempre pueden encontrar la descripción y la solución del problema en el registro de cambios.