Що таке оновлення ядра за допомогою "Bump ABI"?


19

Як ви бачите в журналі змін ядер Linux , є повідомлення про оновлення типу "Bump ABI - Maverick ABI 28".

Згідно з Ubuntu Wiki , ABI - це щось на зразок мосту між простором ядра та іншими модулями (моя інтерпретація).

Чи додає таке оновлення додаткові функції та / або виправлення? Чи варто оновити ядро ​​до наступної версії?

Відповіді:


12

NB: Я не експерт по ядрах, тому це засноване на зібраних знаннях та досвіді.

"Збій" ABI не повинен приносити нові функції, навіть якщо він може "виправляти" помилки в деяких модулях / додатках, які шукають більш високу версію 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 означає, що всі модулі потребують перебудови на оновлене ядро.

Моє розуміння також узгоджується з Роландом, оскільки помилка ABI не означає нових функцій, а лише критичні виправлення та оновлення безпеки.


2
Дякуємо, що вказали, що це лише метапакет. Я про це забув. aptitude changelog linux-image-2.6.35-28-genericвідображає список змін. Я не впевнений, чому метапакет не містить оновлень linux-{image,headers}-*-genericпакетів; може тому, що є також linux-{image,headers}-*-serverпакети?
Лекенштейн

4

ABI - це бінарний інтерфейс програми (не плутати з API, інтерфейсом програмування додатків). ABI визначає розміри, знаки та порядки чисел, якими користується програма.

Щоб було зрозуміло, ось приклад: я хочу кодувати вік будівлі, виражений у роках. Для цього я можу використовувати C unsigned char, який є типом, розмір якого становить 1 байт, і який може кодувати значення від 0 до 255. Тепер припустимо, що я виявив, що 255 є занадто низькою межею, тому що є будівлі, які були побудовані більше ніж 255 років тому. Тоді я можу використовувати C unsigned int, що має 4-байтну довжину і може кодувати значення від 0 до 65535.

Змінюючи тип з charна int, я не змінив смислового значення поля (це був вік, виражений у роках, і все ще є), проте я змінив його розмір. Кожне програмне забезпечення, яке взаємодіє з моєю програмою, не потрібно змінювати, однак воно буде говорити іншою "мовою".

Тому, коли ядро ​​змінює свій ABI, це означає, що воно змінило мову, якою він розмовляє, але ніяких функцій не додано, не видалено чи змінено. Усі модулі сторонніх розробників, які повинні взаємодіяти з ядром, повинні бути перекомпільовані для того, щоб розмовляти цією новою мовою, але їх не потрібно жодним чином змінювати, щоб правильно працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.