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 char
ke 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.
aptitude changelog linux-image-2.6.35-28-generic
menampilkan daftar perubahan. Saya tidak yakin mengapa paket meta tidak berisi pembaruanlinux-{image,headers}-*-generic
paket; mungkin karena ada jugalinux-{image,headers}-*-server
paket?