Cập nhật kernel với Bump ABI 'là gì?


19

Như bạn có thể thấy trong thay đổi cho nhân Linux , có các thông báo cập nhật như "Bump ABI - Maverick ABI 28".

Theo Ubuntu Wiki , ABI là một cái gì đó giống như một cầu nối giữa không gian hạt nhân và các mô-đun khác (diễn giải của tôi).

Bản cập nhật như vậy có thêm các tính năng bổ sung và / hoặc sửa lỗi không? Tôi có nên nâng cấp kernel của mình lên phiên bản tiếp theo không?

Câu trả lời:


12

NB: Tôi không phải là chuyên gia hạt nhân - vì vậy điều này dựa trên kiến ​​thức và kinh nghiệm thu thập được.

Một "vết sưng" ABI không nên mang lại các tính năng mới, mặc dù nó có thể "sửa" các lỗi trong một số mô-đun / ứng dụng đang tìm kiếm phiên bản cao hơn của ABI. Bạn vẫn nên cài đặt các bản cập nhật này, vì nói chung việc giữ tất cả các thành phần đồng bộ sẽ đảm bảo tính ổn định và bảo mật.


12

Trước hết, bạn không nhìn vào thay đổi cho kernel linux. Bạn đang xem gói meta, đây là gói phụ thuộc vào kernel mới nhất. Bạn có thể muốn một cái gì đó như: http://changelogs.ubfox.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35- 28,50 / thay đổi

Mục đích của gói meta này là để chuyển đổi người dùng thông qua các lần va chạm ABI này.

Tôi giữ quan điểm giống như bạn trên ABI và kernel. Thực tế mà nói, một vết sưng ABI có nghĩa là tất cả các mô-đun cần phải được xây dựng lại dựa trên kernel đã cập nhật.

Sự hiểu biết của tôi cũng phù hợp với Roland, trong đó một vết sưng ABI không có nghĩa là các tính năng mới, chỉ là các bản sửa lỗi quan trọng và cập nhật bảo mật.


2
Cảm ơn bạn đã chỉ ra rằng nó chỉ là một gói meta. Tôi đã quên mất điều đó. aptitude changelog linux-image-2.6.35-28-generichiển thị một danh sách các thay đổi. Tôi không chắc tại sao gói meta không chứa các bản cập nhật của linux-{image,headers}-*-genericgói; Có lẽ vì cũng có linux-{image,headers}-*-servergói?
Lekensteyn

4

ABI là Giao diện nhị phân ứng dụng, (không bị nhầm lẫn với API, Giao diện lập trình ứng dụng). ABI xác định kích thước, dấu hiệu và thứ tự của các số mà ứng dụng đang sử dụng.

Để rõ ràng, đây là một ví dụ: Tôi muốn mã hóa tuổi của một tòa nhà, được thể hiện bằng năm. Để làm như vậy, tôi có thể sử dụng C unsigned char, loại có kích thước là 1 byte và có thể mã hóa các giá trị từ 0 đến 255. Bây giờ giả sử rằng tôi phát hiện ra rằng 255 là giới hạn quá thấp vì có những tòa nhà được xây dựng nhiều hơn hơn 255 năm trước. Sau đó tôi có thể sử dụng C unsigned int, dài 4 byte và có thể mã hóa các giá trị từ 0 đến 65535.

Thay đổi loại từ charsang int, tôi đã không thay đổi ý nghĩa ngữ nghĩa của trường (đó là thời đại được biểu thị bằng năm và nó vẫn còn), tuy nhiên tôi đã thay đổi kích thước của nó. Mọi phần mềm tương tác với ứng dụng của tôi sẽ không cần phải thay đổi, tuy nhiên phần mềm sẽ nói một "ngôn ngữ" khác.

Do đó, khi một hạt nhân thay đổi ABI của nó, điều đó có nghĩa là nó đã thay đổi ngôn ngữ mà nó nói, nhưng không có chức năng nào được thêm, xóa hoặc sửa đổi. Tất cả các mô-đun của bên thứ ba phải tương tác với kernel cần phải được biên dịch lại để nói ngôn ngữ mới này, nhưng chúng không cần phải thay đổi theo bất kỳ cách nào để hoạt động chính xác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.