การอัพเดทเคอร์เนลด้วย“ Bump ABI” คืออะไร?


19

อย่างที่คุณเห็นในรายการเปลี่ยนแปลงสำหรับเคอร์เนล Linuxมีข้อความอัปเดตเช่น "Bump ABI - Maverick ABI 28"

ตามUbuntu Wiki , ABI เป็นเหมือนสะพานเชื่อมระหว่างพื้นที่เคอร์เนลและโมดูลอื่น ๆ (การตีความของฉัน)

การอัปเดตดังกล่าวเพิ่มคุณสมบัติพิเศษและ / หรือข้อบกพร่องหรือไม่ ฉันควรอัพเกรดเคอร์เนลเป็นเวอร์ชั่นถัดไปหรือไม่

คำตอบ:


12

หมายเหตุ: ฉันไม่ใช่ผู้เชี่ยวชาญเคอร์เนล - ดังนั้นจึงขึ้นอยู่กับความรู้และประสบการณ์ที่รวบรวมได้

ABI "bump" ไม่ควรนำคุณสมบัติใหม่มาถึงแม้ว่ามันอาจ "แก้ไข" ข้อบกพร่องในบางโมดูล / แอปพลิเคชันที่กำลังมองหา ABI รุ่นที่สูงขึ้น คุณยังคงควรติดตั้งการอัปเดตเหล่านี้เนื่องจากโดยทั่วไปการซิงค์ส่วนประกอบทั้งหมดจะทำให้มั่นใจได้ถึงความเสถียรและความปลอดภัย


12

ก่อนอื่นคุณไม่ได้ดูการเปลี่ยนแปลงสำหรับเคอร์เนล linux คุณกำลังดูแพ็คเกจเมตาซึ่งเป็นแพ็คเกจที่ขึ้นอยู่กับเคอร์เนลล่าสุด คุณอาจต้องการบางสิ่งเช่น: 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 / การเปลี่ยนแปลง

วัตถุประสงค์ของแพคเกจเมตานี้คือการเปลี่ยนผู้ใช้ผ่านการกระแทก ABI เหล่านี้

ฉันถือมุมมองเดียวกับคุณใน ABI และเคอร์เนล ในทางปฏิบัติการชน ABI หมายความว่าโมดูลทั้งหมดต้องถูกสร้างใหม่กับเคอร์เนลที่อัพเดต

ความเข้าใจของฉันก็สอดคล้องกับ Roland เช่นกันในการที่ ABI bump ไม่ได้หมายถึงคุณสมบัติใหม่เพียงแก้ไขที่สำคัญและการปรับปรุงความปลอดภัย


2
ขอบคุณที่ชี้ให้เห็นว่ามันเป็นเพียงเมตาดาต้าแพ็คเกจ ฉันลืมไปแล้ว aptitude changelog linux-image-2.6.35-28-genericแสดงรายการการเปลี่ยนแปลง ฉันไม่แน่ใจว่าทำไม meta-package ไม่ได้มีการปรับปรุงของlinux-{image,headers}-*-genericแพคเกจ; อาจเป็นเพราะมีlinux-{image,headers}-*-serverแพ็คเกจด้วย?
Lekensteyn

4

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 ของมันก็หมายความว่ามันได้เปลี่ยนภาษาที่พูด แต่ไม่มีการเพิ่มลบหรือแก้ไขฟังก์ชันการทำงาน โมดูลของบุคคลที่สามทั้งหมดที่ต้องโต้ตอบกับเคอร์เนลจำเป็นต้องทำการคอมไพล์ใหม่เพื่อพูดภาษาใหม่นี้ แต่พวกเขาไม่จำเป็นต้องเปลี่ยนวิธีใด ๆ เพื่อให้ทำงานได้อย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.