ABI, Uygulama İkili Arayüzüdür (API, Uygulama Programlama Arayüzü ile karıştırılmamalıdır). ABI, uygulamanın kullandığı sayıların boyutlarını, işaretlerini ve siparişlerini tanımlar.
Açık olmak gerekirse, işte bir örnek: Yıllar içinde ifade edilen bir binanın yaşını kodlamak istiyorum. Bunu yapmak için, unsigned char
boyutu 1 bayt olan ve 0 ile 255 arasındaki değerleri kodlayabilen bir tür olan C'yi kullanabilirim. 255 yıl önce. Daha sonra unsigned int
4 bayt uzunluğunda ve 0 ile 65535 arasındaki değerleri kodlayabilen bir C kullanabilirim .
Den türünü değiştirmek char
için int
, bir alanın semantik anlamı değişmemiştir ancak büyüklüğü değişmiştir (o yıllarda tanımlanan bir yaş ve hala). Uygulamamla etkileşime giren her yazılımın değiştirilmesi gerekmeyecek, ancak farklı bir "dil" konuşacak.
Bu nedenle, bir çekirdek ABI'sini değiştirdiğinde, konuştuğu dili değiştirdiği, ancak hiçbir işlev eklenmediği, kaldırılmadığı veya değiştirilmediği anlamına gelir. Çekirdek ile etkileşime girmesi gereken tüm üçüncü taraf modüllerinin bu yeni dili konuşabilmesi için yeniden derlenmesi gerekir, ancak düzgün çalışması için herhangi bir şekilde değiştirilmesi gerekmez.
aptitude changelog linux-image-2.6.35-28-generic
değişikliklerin bir listesini görüntüler. Meta paketin nedenlinux-{image,headers}-*-generic
paketlerin güncellemelerini içermediğinden emin değilim ; belki delinux-{image,headers}-*-server
paketler olduğu için?