¿Qué es una actualización del kernel con "Bump ABI"?

19

Como puede ver en el registro de cambios para el kernel de Linux , hay mensajes de actualización como "Bump ABI - Maverick ABI 28".

De acuerdo con Ubuntu Wiki , ABI es algo así como un puente entre el espacio del kernel y los otros módulos (mi interpretación).

¿Tal actualización agrega características adicionales y / o correcciones de errores? ¿Debo actualizar mi kernel a la próxima versión?

Lekensteyn
fuente

Respuestas:

12

NB: no soy un experto en kernel, por lo que esto se basa en el conocimiento y la experiencia recopilados.

Un "golpe" de ABI no debería traer nuevas características, aunque puede "corregir" errores en algunos módulos / aplicaciones que buscan una versión superior de ABI. Aún debe instalar estas actualizaciones, ya que generalmente mantener todos los componentes sincronizados garantizará la estabilidad y la seguridad.

RolandiXor
fuente
12

En primer lugar, no está mirando el registro de cambios para el kernel de Linux. Estás viendo el metapaquete, que es un paquete que depende del último núcleo. Probablemente desee algo como: http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35- 28.50 / registro de cambios

El propósito de este metapaquete es hacer la transición del usuario a través de estos baches ABI.

Tengo la misma vista que usted en el ABI y el núcleo. Hablando en términos prácticos, un golpe ABI significa que todos los módulos deben reconstruirse en el núcleo actualizado.

Mi comprensión también está en línea con Roland, en el sentido de que un aumento de ABI no significa nuevas características, solo correcciones críticas y actualizaciones de seguridad.

usuario1974
fuente
2
Gracias por señalar que es solo un metapaquete. Me he olvidado de eso. aptitude changelog linux-image-2.6.35-28-genericMuestra una lista de cambios. No estoy seguro de por qué el metapaquete no contiene las actualizaciones de los linux-{image,headers}-*-genericpaquetes; tal vez porque también hay linux-{image,headers}-*-serverpaquetes?
Lekensteyn
4

El ABI es la interfaz binaria de la aplicación (no debe confundirse con la API, la interfaz de programación de la aplicación). El ABI define los tamaños, los signos y el orden de los números que usa la aplicación.

Para ser claros, aquí hay un ejemplo: quiero codificar la edad de un edificio, expresada en años. Para hacerlo, puedo usar una C unsigned char, que es un tipo cuyo tamaño es de 1 byte, y que puede codificar valores de 0 a 255. Ahora supongamos que descubro que 255 es un límite demasiado bajo porque hay edificios que se construyeron más que hace 255 años. Entonces puedo usar una C unsigned int, que tiene 4 bytes de longitud y puede codificar valores de 0 a 65535.

Cambiando el tipo de chara int, no he cambiado el significado semántico del campo (era una edad expresada en años y todavía lo es), sin embargo, he cambiado su tamaño. No será necesario cambiar cada software que interactúe con mi aplicación, sin embargo, hablará un "idioma" diferente.

Por lo tanto, cuando un kernel cambia su ABI, significa que ha cambiado el idioma que habla, pero no se han agregado, eliminado o modificado funcionalidades. Todos los módulos de terceros que tienen que interactuar con el kernel deben volver a compilarse para hablar este nuevo idioma, pero no necesitan modificarse de ninguna manera para que funcionen correctamente.

Andrea Corbellini
fuente