O que impede as distribuições de usar o kernel Linux mais recente? [fechadas]

13

A maioria das distribuições Linux é fornecida com uma determinada versão do kernel e a atualiza apenas em versões pontuais ( x.y.zpara x.y.(z+1)) e para atualizações de segurança.

Por outro lado, eu sei que o Linux tem uma política muito rigorosa sobre não alterar a ABI do kernel e nunca quebrar o espaço do usuário. De fato, o Linus teve muitas birras públicas direcionadas a desenvolvedores que queriam (intencionalmente ou acidentalmente) mudar o kernel de maneiras não compatíveis com versões anteriores.

Não entendo por que as distribuições usam kernels "estáveis" em vez de sempre atualizar para o kernel mais recente. Isso não é uma crítica, estou apenas curioso sobre o motivo.

imgx64
fonte
1
porque os kernels mais recentes não têm testes. pode conter bugs que podem afetar a estabilidade do sistema e a estabilidade é o foco principal de qualquer mantenedor de distribuição.

Respostas:

8

As interfaces de chamada do sistema do kernel Linux são muito estáveis. Mas o kernel possui outras interfaces que nem sempre são compatíveis.

  • /procé praticamente estável, mas houve algumas mudanças no passado (por exemplo, algumas interfaces que se mudam para /sysalgum tempo após a /syscriação).
  • Várias interfaces relacionadas ao dispositivo foram removidas no passado.
  • /syscontém algumas interfaces estáveis ​​(listadas em Documentation/ABI/stable) e outras que não são. Você não deve usar os que não são, mas às vezes as pessoas usam, e uma simples atualização de segurança e estabilidade não deve prejudicar as coisas.
  • Houve incompatibilidades com o modutils no passado (kernels mais novos exigindo uma versão mais recente do modutils), embora eu ache que isso foi há algum tempo.
  • Também houve incompatibilidades com relação ao processo de inicialização em algumas configurações incomuns. Mesmo aumentar o tamanho do kernel pode causar problemas em alguns sistemas embarcados.
  • Enquanto as interfaces externas do kernel são bastante estáveis, as interfaces internas não são. A regra para interfaces internas é que qualquer pessoa pode quebrá-las desde que conserte usos internos, mas a fixação de módulos de terceiros é de responsabilidade do autor dos referidos módulos. No geral, muitas instalações executam módulos de terceiros: drivers extras para hardware que não era suportado pelo kernel (se o hardware for suportado pelo novo kernel, tudo bem, mas e se não for), drivers proprietários ( embora o mundo seja um lugar melhor se todos os drivers forem de código aberto, esse não é o caso; por exemplo, se você deseja um bom desempenho da GPU 3D, está praticamente preso aos drivers proprietários), etc.
  • Algumas pessoas precisam recompilar seu kernel ou alguns módulos de terceiros. Os kernels mais recentes geralmente não podem ser compilados com compiladores mais antigos.

Em suma, o principal motivo para não mudar para uma versão mais recente do kernel são os módulos de terceiros.

No entanto, algumas distribuições oferecem kernels recentes como uma opção. Por exemplo, o Debian disponibiliza os kernels de teste para os usuários da versão estável por meio de backports. Da mesma forma, no Ubuntu LTS, os kernels de versões mais recentes do Ubuntu estão disponíveis, mas não são usados ​​por padrão. Isso é útil principalmente para novas instalações em hardware que ainda não eram suportadas quando a distribuição foi finalizada.

Gilles 'SO- parar de ser mau'
fonte
9

Não estou trabalhando para uma distribuição, mas posso pensar em pelo menos dois motivos:

  • Algumas distribuições aplicam seus patches personalizados ao Kernel que ainda não foram mesclados na linha principal. Isso significa que, para cada atualização do Kernel, eles precisam garantir que seus patches não quebrem nada e ainda funcionem corretamente.
  • Até a última versão estável do Kernel pode conter um bug, as distribuições que levam a sério a confiabilidade vão querer passar por alguns procedimentos / processos de teste antes de entregar um Kernel aos seus clientes.
repetição
fonte
2
Os patches específicos da distribuição não são necessariamente destinados ao upstream, de qualquer maneira. E o kernel upstream mais recente conterá, em média, mais erros do que o kernel "estoque" testado de uma distribuição. Muito do que o kernel distribuído por uma distribuição faz é tentar eliminar / corrigir o máximo de erros possível, sem alterar o código mais do que o necessário.
Faheem Mitha
0

Distribuições mais conservadoras seguem (e participam ativamente) das versões estáveis ​​do kernel, pelo bem da estabilidade. Os mais aventureiros usam uma versão do kernel uma ou mais por trás da mais recente e melhor baunilha, além de uma mancha de correções suportadas pela dica de desenvolvimento (e algumas desenvolvidas em casa).

A política atual de desenvolvimento do kernel é que a versão do Linus avança com brinquedos novos e brilhantes e não tem medo de mudanças no atacado. Algumas versões são consideradas estáveis ​​o suficiente (em termos de desenvolvimento) para formar a base para testes e estabilização rigorosos, fornecendo séries estáveis.

Tudo isso é possível devido às ferramentas em uso, todos podem preparar sua própria árvore git , manter galhos e árvores interessantes a montante sincronizados localmente, furtar os comprometimentos de outras pessoas e compartilhar mudanças locais livremente.

vonbrand
fonte
A série estável do kernel não é escolhida com base na estabilidade de uma versão específica, é arbitrária. A partir deste ano, a série estável será baseada na primeira versão lançada a cada ano ... Cada versão do kernel deve ser estável e nunca quebrar a compatibilidade com versões anteriores.
Stephen Kitt