O que é uma atualização do kernel com o "Bump ABI"?

19

Como você pode ver no changelog do kernel Linux , há mensagens de atualização como "Bump ABI - Maverick ABI 28".

De acordo com o Ubuntu Wiki , ABI é algo como uma ponte entre o espaço do kernel e os outros módulos (minha interpretação).

Essa atualização adiciona recursos e / ou correções extras? Devo atualizar meu kernel para a próxima versão?

Lekensteyn
fonte

Respostas:

12

NB: Não sou especialista em kernel - portanto, isso se baseia no conhecimento e na experiência coletados.

Um "bump" da ABI não deve trazer novos recursos, embora possa "corrigir" bugs em alguns módulos / aplicativos que procuram uma versão superior da ABI. Você ainda deve instalar essas atualizações, pois geralmente manter todos os componentes sincronizados garantirá estabilidade e segurança.

RolandiXor
fonte
12

Primeiro, você não está olhando para o changelog do kernel do linux. Você está olhando para o meta pacote, que é um pacote que depende do kernel mais recente. Você provavelmente deseja algo como: 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

O objetivo deste meta-pacote é fazer a transição do usuário através desses obstáculos da ABI.

Eu tenho a mesma visão que você na ABI e no kernel. Na prática, um problema de ABI significa que todos os módulos precisam ser reconstruídos com relação ao kernel atualizado.

Meu entendimento também está alinhado com a Roland, na medida em que um problema da ABI não significa novos recursos, apenas correções críticas e atualizações de segurança.

user1974
fonte
2
Obrigado por apontar que é apenas um meta-pacote. Eu esqueci disso. aptitude changelog linux-image-2.6.35-28-genericexibe uma lista de alterações. Não sei por que o meta-pacote não contém as atualizações dos linux-{image,headers}-*-genericpacotes; talvez porque também existem linux-{image,headers}-*-serverpacotes?
precisa saber é o seguinte
4

A ABI é a Interface Binária do Aplicativo (não deve ser confundida com a API, a Interface de Programação de Aplicativo). A ABI define os tamanhos, os sinais e as ordens dos números que o aplicativo está usando.

Para deixar claro, aqui está um exemplo: eu quero codificar a idade de um edifício, expressa em anos. Para fazer isso, eu posso usar um C unsigned char, que é um tipo de tamanho de 1 byte, e que pode codificar valores de 0 a 255. Agora, suponha que eu descubra que 255 é um limite muito baixo porque há edifícios que foram construídos mais de 255 anos atrás. Posso então usar um C unsigned int, que tem 4 bytes de comprimento e pode codificar valores de 0 a 65535.

Alterando o tipo de charpara int, não mudei o significado semântico do campo (era uma idade expressa em anos e ainda é), no entanto, mudei seu tamanho. Todo software que interage com meu aplicativo não precisará ser alterado, no entanto, ele falará um "idioma" diferente.

Portanto, quando um kernel altera sua ABI, significa que ele mudou o idioma que fala, mas nenhuma funcionalidade foi adicionada, removida ou modificada. Todos os módulos de terceiros que precisam interagir com o kernel precisam ser recompilados para falar esse novo idioma, mas eles não precisam ser alterados de forma alguma para funcionar corretamente.

Andrea Corbellini
fonte