“Bump ABI” ile çekirdek güncellemesi nedir?


19

Linux çekirdeği değişiklik günlüğünde görebileceğiniz gibi, "Bump ABI - Maverick ABI 28" gibi güncelleme mesajları var.

Ubuntu Wiki'ye göre ABI, çekirdek alanı ile diğer modüller arasında bir köprü gibidir (benim yorumum).

Böyle bir güncelleme ekstra özellikler ve / veya hata düzeltmeleri ekliyor mu? Çekirdeğimi bir sonraki sürüme yükseltmeli miyim?

Yanıtlar:


12

NB: Ben çekirdek uzmanı değilim - bu yüzden toplanan bilgi ve deneyime dayanıyor.

Bir ABI "yumru", ABI'nin daha yüksek bir sürümünü arayan bazı modüllerde / uygulamalarda hataları "düzeltebilse de" yeni özellikler getirmemelidir. Bu güncelleştirmeleri yine de yüklemelisiniz, çünkü genellikle tüm bileşenleri senkronize tutmak kararlılık ve güvenliği sağlayacaktır.


12

Öncelikle, linux çekirdeğinin değişim günlüğüne bakmıyorsunuz. En son çekirdeğe bağlı bir paket olan meta pakete bakıyorsunuz. Muhtemelen şöyle bir şey istersiniz: 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 / Değişiklik

Bu meta paketin amacı kullanıcıyı bu ABI tümseklerinden geçirmektir.

ABI ve çekirdekte sizinle aynı görüşü benimsiyorum. Pratik olarak, bir ABI çarpması, tüm modüllerin güncellenmiş çekirdeğe karşı yeniden oluşturulması gerektiği anlamına gelir.

Anlayışım Roland ile de uyumlu, çünkü bir ABI çarpması yeni özellikler değil, sadece kritik düzeltmeler ve güvenlik güncellemeleri anlamına geliyor.


2
Bunun sadece bir meta paket olduğuna dikkat ettiğiniz için teşekkür ederiz. Bunu unuttum. aptitude changelog linux-image-2.6.35-28-genericdeğişikliklerin bir listesini görüntüler. Meta paketin neden linux-{image,headers}-*-genericpaketlerin güncellemelerini içermediğinden emin değilim ; belki de linux-{image,headers}-*-serverpaketler olduğu için?
Lekensteyn

4

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 charboyutu 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 int4 bayt uzunluğunda ve 0 ile 65535 arasındaki değerleri kodlayabilen bir C kullanabilirim .

Den türünü değiştirmek chariç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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.