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

9

A maioria das distribuições do Linux vem com uma determinada versão do kernel e só a atualiza em releases pontuais ( x.y.z to x.y.(z+1) ) e para atualizações de segurança.

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

Eu não entendo porque as distribuições usam kernels "estáveis" ao invés de sempre atualizar para o kernel mais recente. Isso não é uma crítica, estou apenas curioso sobre o motivo.

    
por imgx64 31.01.2016 / 17:06

3 respostas

6

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

  • /proc é praticamente estável, mas houve algumas alterações no passado (por exemplo, algumas interfaces mudaram para /sys algum tempo depois que /sys foi criado).
  • Várias interfaces relacionadas a dispositivos foram removidas no passado.
  • /sys conté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 fazem isso, e uma atualização simples de segurança e estabilidade não deve quebrar as coisas para eles.
  • Houve incompatibilidades com modutils no passado (novos kernels requerendo uma nova versão de modutils), embora eu ache que já faz algum tempo.
  • Também houve incompatibilidades em 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.
  • Embora as interfaces externas do kernel sejam bastante estáveis, as interfaces internas não são. A regra para interfaces internas é que qualquer um pode quebrá-las, desde que consertem usos internos, mas a correção de módulos de terceiros é de responsabilidade do autor dos módulos mencionados. No geral, muitas instalações executam módulos de terceiros: drivers extras para hardware que não eram suportados pelo kernel (se o hardware é suportado pelo novo kernel, tudo bem, mas e se não for), drivers proprietários ( enquanto o mundo seria um lugar melhor se todos os drivers fossem de código aberto, esse não é o caso, por exemplo, se você quer um bom desempenho de GPU 3D, você está bem preso a drivers proprietários, etc.
  • Algumas pessoas precisam recompilar seu kernel ou alguns módulos de terceiros. Kernels mais recentes muitas vezes não podem ser compilados com compiladores 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.

Algumas distribuições, no entanto, oferecem kernels recentes como uma opção. Por exemplo, o Debian faz com que os kernels sejam testados para usuários da versão estável através de backports. Da mesma forma, no Ubuntu LTS, os kernels das 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 tinham suporte quando a distribuição foi finalizada.

    
por 31.01.2016 / 23:58
9

Eu 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 mainline. Isso significa que, para cada atualização do Kernel, eles precisam garantir que seus patches não quebrem nada e ainda funcionem adequadamente.
  • Até mesmo 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 a seus clientes.
por 31.01.2016 / 17:24
0

Distribuições mais conservadoras seguem (e participam ativamente) das versões do kernel stable , por questões de estabilidade. Os mais aventureiros usam uma versão mais ou menos do kernel por trás da mais recente e maior baunilha, além de um conjunto de patches suportados pela dica de desenvolvimento (e alguns de uso doméstico).

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

Tudo isso é possível devido às ferramentas em uso, todos podem preparar sua própria árvore git , mantendo ramos e árvores interessantes a montante sincronizados localmente , furto comete de outros, e compartilhe mudanças locais livremente.

    
por 31.01.2016 / 19:22