ABI เป็น Application Binary Interface (เพื่อไม่ให้สับสนกับ API, Application Programming Interface) ABI กำหนดขนาดสัญญาณและคำสั่งของหมายเลขที่แอปพลิเคชันใช้
เพื่อให้ชัดเจนนี่คือตัวอย่าง: ฉันต้องการเข้ารหัสอายุของอาคารซึ่งแสดงเป็นปี ในการทำเช่นนั้นฉันสามารถใช้ C unsigned char
ซึ่งเป็นชนิดที่มีขนาด 1 ไบต์และสามารถเข้ารหัสค่าได้ตั้งแต่ 0 ถึง 255 ตอนนี้สมมติว่าฉันพบว่า 255 มีขีด จำกัด ต่ำเกินไปเนื่องจากมีอาคารที่สร้างขึ้นมากกว่า กว่า 255 ปีที่แล้ว ฉันสามารถใช้ C unsigned int
ซึ่งมีความยาว 4 ไบต์และสามารถเข้ารหัสค่าได้ตั้งแต่ 0 ถึง 65535
การเปลี่ยนประเภทจากchar
เป็นint
ฉันไม่ได้เปลี่ยนความหมายเชิงความหมายของฟิลด์ (มันเป็นอายุที่แสดงในปีและยังคงเป็น) แต่ฉันได้เปลี่ยนขนาดของมัน ซอฟต์แวร์ทั้งหมดที่ตอบโต้กับแอปพลิเคชันของฉันไม่จำเป็นต้องเปลี่ยน แต่จะพูดเป็น "ภาษา" ที่แตกต่างกัน
ดังนั้นเมื่อเคอร์เนลเปลี่ยน ABI ของมันก็หมายความว่ามันได้เปลี่ยนภาษาที่พูด แต่ไม่มีการเพิ่มลบหรือแก้ไขฟังก์ชันการทำงาน โมดูลของบุคคลที่สามทั้งหมดที่ต้องโต้ตอบกับเคอร์เนลจำเป็นต้องทำการคอมไพล์ใหม่เพื่อพูดภาษาใหม่นี้ แต่พวกเขาไม่จำเป็นต้องเปลี่ยนวิธีใด ๆ เพื่อให้ทำงานได้อย่างถูกต้อง
aptitude changelog linux-image-2.6.35-28-generic
แสดงรายการการเปลี่ยนแปลง ฉันไม่แน่ใจว่าทำไม meta-package ไม่ได้มีการปรับปรุงของlinux-{image,headers}-*-generic
แพคเกจ; อาจเป็นเพราะมีlinux-{image,headers}-*-server
แพ็คเกจด้วย?