Apa itu pembaruan kernel dengan “Bump ABI”?

19

Seperti yang dapat Anda lihat di changelog untuk kernel Linux , ada pembaruan pesan seperti "Bump ABI - Maverick ABI 28".

Menurut Wiki Ubuntu , ABI adalah sesuatu seperti jembatan antara ruang kernel dan modul lainnya (interpretasi saya).

Apakah pembaruan semacam itu menambah fitur dan / atau perbaikan bug tambahan? Haruskah saya memutakhirkan kernel saya ke versi berikutnya?

Lekensteyn
sumber

Jawaban:

12

NB: Saya bukan ahli kernel - jadi ini didasarkan pada pengetahuan dan pengalaman yang dikumpulkan.

"Bump" ABI seharusnya tidak membawa fitur baru, meskipun ia mungkin "memperbaiki" bug di beberapa modul / aplikasi yang mencari versi ABI yang lebih tinggi. Anda harus tetap menginstal pembaruan ini, karena umumnya menjaga semua komponen dalam sinkronisasi akan memastikan stabilitas dan keamanan.

RolandiXor
sumber
12

Pertama, Anda tidak melihat changelog untuk kernel linux. Anda melihat paket meta, yang merupakan paket yang tergantung pada kernel terbaru. Anda mungkin menginginkan sesuatu seperti: 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

Tujuan dari paket meta ini adalah untuk mentransisikan pengguna melalui benjolan ABI ini.

Saya memiliki pandangan yang sama dengan Anda di ABI dan kernel. Secara praktis, benjolan ABI berarti bahwa semua modul harus dibangun kembali terhadap kernel yang diperbarui.

Pemahaman saya juga sejalan dengan Roland, bahwa bump ABI tidak berarti fitur baru, hanya perbaikan kritis dan pembaruan keamanan.

pengguna1974
sumber
2
Terima kasih telah menunjukkan bahwa ini hanya paket meta. Saya sudah lupa tentang itu. aptitude changelog linux-image-2.6.35-28-genericmenampilkan daftar perubahan. Saya tidak yakin mengapa paket meta tidak berisi pembaruan linux-{image,headers}-*-genericpaket; mungkin karena ada juga linux-{image,headers}-*-serverpaket?
Lekensteyn
4

ABI adalah Application Binary Interface, (jangan bingung dengan API, Application Programming Interface). ABI menentukan ukuran, tanda dan urutan angka yang digunakan aplikasi.

Untuk lebih jelasnya, berikut adalah contohnya: Saya ingin menyandikan usia sebuah bangunan, yang dinyatakan dalam bertahun-tahun. Untuk melakukannya, saya dapat menggunakan C unsigned char, yang merupakan tipe yang ukurannya 1 byte, dan yang dapat mengkodekan nilai dari 0 hingga 255. Sekarang anggaplah saya menemukan bahwa 255 adalah batas yang terlalu rendah karena ada bangunan yang dibangun lebih banyak dari 255 tahun yang lalu. Saya kemudian dapat menggunakan C unsigned int, yang panjangnya 4-byte dan dapat mengkodekan nilai dari 0 hingga 65535.

Mengubah jenis dari charke int, saya belum mengubah makna semantik bidang (itu adalah usia yang dinyatakan dalam bertahun-tahun dan masih demikian), namun saya telah mengubah ukurannya. Setiap perangkat lunak yang berinteraksi dengan aplikasi saya tidak perlu diubah, namun akan berbicara "bahasa" yang berbeda.

Oleh karena itu, ketika sebuah kernel mengubah ABI-nya, itu berarti telah mengubah bahasa yang dibicarakannya, tetapi tidak ada fungsi yang ditambahkan, dihapus atau dimodifikasi. Semua modul pihak ketiga yang harus berinteraksi dengan kernel perlu dikompilasi ulang untuk dapat berbicara bahasa baru ini, tetapi mereka tidak perlu diubah dengan cara apa pun agar dapat bekerja dengan benar.

Andrea Corbellini
sumber