Что такое обновление ядра с помощью & ldquo; Bump ABI & rdquo ;?

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

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

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

19
задан 21 March 2011 в 18:14

3 ответа

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

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

0
ответ дан 21 March 2011 в 18:14

Во-первых, вы не смотрите журнал изменений для ядра 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 / changelog

Целью этого метапакета является переход пользователя через эти неровности ABI.

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

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

0
ответ дан 21 March 2011 в 18:14

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

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

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

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

0
ответ дан 21 March 2011 в 18:14

Другие вопросы по тегам:

Похожие вопросы: