Qu'est-ce qu'une mise à jour du noyau avec «Bump ABI»?

19

Comme vous pouvez le voir dans le changelog pour le noyau Linux , il y a des messages de mise à jour comme "Bump ABI - Maverick ABI 28".

Selon le wiki Ubuntu , ABI est quelque chose comme un pont entre l'espace du noyau et les autres modules (mon interprétation).

Une telle mise à jour ajoute-t-elle des fonctionnalités supplémentaires et / ou des corrections de bugs? Dois-je mettre à jour mon noyau vers la prochaine version?

Lekensteyn
la source

Réponses:

12

NB: Je ne suis pas un expert du noyau - c'est donc basé sur les connaissances et l'expérience collectées.

Un "bump" ABI ne devrait pas apporter de nouvelles fonctionnalités, même s'il peut "corriger" des bugs dans certains modules / applications qui recherchent une version supérieure de l'ABI. Vous devez toujours installer ces mises à jour, car généralement garder tous les composants synchronisés garantira la stabilité et la sécurité.

RolandiXor
la source
12

Tout d'abord, vous ne regardez pas le changelog pour le noyau linux. Vous regardez le méta package, qui est un package qui dépend du dernier noyau. Vous voulez probablement quelque chose comme: 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 / changelog

Le but de ce méta-package est de faire passer l'utilisateur à travers ces bosses ABI.

Je suis du même avis que vous sur l'ABI et le noyau. En pratique, un bump ABI signifie que tous les modules doivent être reconstruits par rapport au noyau mis à jour.

Ma compréhension est également en accord avec Roland, en ce sens qu'un bump ABI ne signifie pas de nouvelles fonctionnalités, juste des correctifs critiques et des mises à jour de sécurité.

user1974
la source
2
Merci d'avoir souligné qu'il ne s'agit que d'un méta-package. J'ai oublié ça. aptitude changelog linux-image-2.6.35-28-genericaffiche une liste des modifications. Je ne sais pas pourquoi le méta-package ne contient pas les mises à jour des linux-{image,headers}-*-genericpackages; peut-être parce qu'il y a aussi des linux-{image,headers}-*-serverpackages?
Lekensteyn
4

L'ABI est l'interface binaire d'application (à ne pas confondre avec l'API, l'interface de programmation d'application). L'ABI définit les tailles, les signes et les ordres des nombres que l'application utilise.

Pour être clair, voici un exemple: je veux encoder l'âge d'un bâtiment, exprimé en années. Pour ce faire, je peux utiliser un C unsigned char, qui est un type dont la taille est de 1 octet, et qui peut coder des valeurs de 0 à 255. Supposons maintenant que je découvre que 255 est une limite trop basse car il y a des bâtiments qui ont été construits plus il y a 255 ans. Je peux ensuite utiliser un C unsigned int, qui est long de 4 octets et peut coder des valeurs de 0 à 65535.

En changeant le type de charen int, je n'ai pas changé la signification sémantique du champ (c'était un âge exprimé en années et il l'est toujours), mais j'ai changé sa taille. Tous les logiciels qui interagissent avec mon application n'auront pas besoin d'être modifiés, mais ils parleront une "langue" différente.

Par conséquent, lorsqu'un noyau change son ABI, cela signifie qu'il a changé la langue qu'il parle, mais qu'aucune fonctionnalité n'a été ajoutée, supprimée ou modifiée. Tous les modules tiers qui doivent interagir avec le noyau doivent être recompilés pour parler ce nouveau langage, mais ils ne doivent en aucun cas être modifiés pour fonctionner correctement.

Andrea Corbellini
la source