Как вы можете видеть в журнале изменений для ядра Linux , есть сообщения об обновлении, такие как «Bump ABI - Maverick ABI 28».
Согласно Ubuntu Wiki , ABI является чем-то вроде моста между пространством ядра и другими модулями (моя интерпретация).
Такое обновление добавляет дополнительные функции и / или исправления? Должен ли я обновить свое ядро до следующей версии?
aptitude changelog linux-image-2.6.35-28-generic
отображает список изменений. Я не уверен, почему метапакет не содержит обновленийlinux-{image,headers}-*-generic
пакетов; может потому что есть еще иlinux-{image,headers}-*-server
пакеты?ABI - это двоичный интерфейс приложения (его не следует путать с API, интерфейсом прикладного программирования). ABI определяет размеры, знаки и порядки номеров, которые использует приложение.
Чтобы быть ясным, вот пример: я хочу закодировать возраст здания, выраженный в годах. Для этого я могу использовать C
unsigned char
, который является типом, размер которого составляет 1 байт, и который может кодировать значения от 0 до 255. Теперь предположим, что я обнаружил, что 255 - это слишком низкий предел, потому что есть здания, которые были построены более чем 255 лет назад. Затем я могу использовать Cunsigned int
, который имеет длину 4 байта и может кодировать значения от 0 до 65535.Изменив тип с
char
наint
, я не изменил смысловой смысл поля (это был возраст, выраженный в годах, и он до сих пор есть), однако я изменил его размер. Каждое программное обеспечение, взаимодействующее с моим приложением, менять не нужно, однако оно будет говорить на другом «языке».Поэтому, когда ядро меняет свой ABI, это означает, что оно изменило язык, на котором оно говорит, но никакие функциональные возможности не были добавлены, удалены или изменены. Все сторонние модули, которые должны взаимодействовать с ядром, должны быть перекомпилированы, чтобы говорить на этом новом языке, но их не нужно менять каким-либо образом для правильной работы.
источник