Что такое обновление ядра с помощью «Bump ABI»?

18

Как вы можете видеть в сводке изменений для Ядро Linux , есть сообщения об обновлениях, такие как «Bump ABI - Maverick ABI 28».

Согласно Ubuntu Wiki , ABI - это нечто вроде моста между пространством ядра и другими модулями ( моя интерпретация).

Поддерживает ли такое обновление дополнительные функции и / или исправления? Должен ли я обновить ядро ​​до следующей версии?

    
задан Lekensteyn 21.03.2011 в 16:14
источник

3 ответа

11

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

ABI «bump» не должен приносить новые функции, даже если он может «исправлять» ошибки в некоторых модулях / приложениях, которые ищут более высокую версию ABI. Вы должны установить эти обновления, поскольку в целом синхронизация всех компонентов обеспечит стабильность и безопасность.

    
ответ дан RolandiXor 21.03.2011 в 17:41
источник
11

Во-первых, вы не смотрите на журнал изменений для ядра linux. Вы смотрите на мета-пакет, который является пакетом, который зависит от последнего ядра. Вероятно, вы хотите что-то вроде: Ссылка

Цель этого мета-пакета - перевести пользователя через эти ABI-удары.

Я придерживаюсь того же представления, что и вы в ABI и ядре. Практически говоря, баг ABI означает, что все модули необходимо перестроить против обновленного ядра.

Мое понимание также согласуется с Roland, поскольку баги ABI не означают новых функций, просто критических исправлений и обновлений безопасности.     

ответ дан user1974 21.03.2011 в 18:02
2

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

Чтобы быть ясным, вот пример: я хочу кодировать возраст здания, выраженный в годах. Для этого я могу использовать C unsigned char , который является типом, размер которого составляет 1 байт, и который может кодировать значения от 0 до 255. Теперь предположим, что я обнаружил, что 255 является слишком низким пределом, потому что есть здания, которые были построены более 255 лет назад. Затем я могу использовать C unsigned int , который имеет длину 4 байта и может кодировать значения от 0 до 65535.

Изменив тип от char до int , я не изменил семантический смысл поля (это был возраст, выраженный в годах, и он все еще есть), однако я изменил его размер. Каждое программное обеспечение, которое взаимодействует с моим приложением, не нуждается в изменении, однако оно будет говорить на другом «языке».

Поэтому, когда ядро ​​меняет свой ABI, это означает, что он изменил язык, на котором он говорит, но никакие функциональные возможности не были добавлены, удалены или изменены. Все сторонние модули, которые должны взаимодействовать с ядром, должны быть перекомпилированы, чтобы говорить на этом новом языке, но их не нужно каким-либо образом изменять, чтобы работать правильно.

    
ответ дан Andrea Corbellini 03.11.2014 в 11:52