Atualizando o kernel do Linux no Debian

 

Image de início da construção do kernel utilizando o script "kernelbuild"

O Projeto Debian é mais do que uma simples distribuição GNU/Linux. Entre suas principais características está a estabilidade, que é obtida por um ciclo de gerenciamento das versões de cada pacote bem definido.

A versão estável do Debian (Debian stable) recebe um codinome inspirado em personagens do Toy Story e geralmente tem uma garantia de atualizações de segurança e manutenção por parte do Debian de vários anos. Por este motivo, ao usar o Debian stable você pode estar com o software atrasado em novidades, mas geralmente bem estável e largamente testado, além de contar com suporte de segurança por 3 anos (e em alguns casos, por mais 2 anos de Long Term Support).

Snap e Flatpak

Para utilizar versões mais novas de alguns programas no Debian stable, existem algumas opções. Uma delas, que não interfere com o seu software no sistema, seria utilizar a versão do programa utilizando o Snap ou Flatpak. Ambos estão disponíveis no Debian como uma fonte de software alternativa, e você pode fazer isso facilmente pelo gerenciador de pacotes.

No KDE por exemplo, você pode usar o Firefox ESR (extented release support) que está nos repositórios do Debian, ou utilizar o Firefox mais atual, instalando ele via Flatpak direto do Discover. Siga os passos no site oficial do Snapcraft e do Flatpak para configurar seu Debian para usar essas fontes de programas.

Backports

Já para atualizar componentes base o processo de usar os canais Snap ou Flatpak não se aplica. Por exemplo, se você precisar de um kernel mais novo ou firmware mais recente para o seu hardware. Uma forma que o próprio projeto Debian oferece é por meio do canal de software backports. Por meio deste canal, os desenvolvedores do Debian disponibilizam, para aqueles que preferirem, uma versão atualizada do pacote que é construída em cima da "base" do Debian stable.

No Debian Backports você vai então encontrar uma versão do Kenel e Fimware mais nova. No momento da escrita deste artigo, o Kernel 5.14.9 estava disponível no backports. Para usar o backports, primeiro é necessário adicionar a linha do repositório no seu arquivo sources.list e depois instalar o pacote do kernel de lá. Pelo terminal, você pode realizar isso da seguinte maneira:
echo "deb http://deb.debian.org/debian bullseye-backports main" |\
    sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
sudo apt install -t bullseye-backports linux-image-amd64 -y
A diferença basicamente é utilizar o parametro extra -t bullseye-backports para instalar os pacotes. O mesmo pode ser feito para os pacotes firmware-linux*.

Na raça: compilando a partir do código-fonte!

Já se você quer ter o kernel sempre atualizado, por exemplo, para tirar proveito de alguma funcionalidade introduzida recentemente nas releases estáveis, pode utilizar o guia de customização do Kernel do Debian para aprender como criar um pacote .deb do kernel e integrar ele ao seu sistema.

Mas este artigo não estaria completo sem uma ajudinha minha pra isso, não é mesmo? Você pode utilizar uma ferramenta simples que eu implementei que permite criar seu kernel customizado com um único comando. Para obter o script você pode clonar o repositório github.com/ronoaldo/tools ou baixar apenas o script  bin/kernelbuild.

O script é bem simples e basicamente faz alguns passos pra você ter o kernel mais novo rapidamente:
  • Ele irá baixar e verificar o código fonte de kenel.org
  • O código é descompactado e configurado usando utilizando o seu .config atual
  • O script irá gerar os pacotes .deb para que você possa instalar
Baixe o script e coloque em um diretório local de executáveis que esteja em seu $PATH:
RAW="https://raw.githubusercontent.com/ronoaldo/tools/master/bin/kernelbuild"
curl -L $RAW | sudo tee /usr/local/bin/kernelbuild
sudo chmod +x /usr/local/bin/kernelbuild
Teste a instalação da seguinte maneira:
kernelbuild --help
Com o script instalado, você poderá então executar ele a partir de um diretório em seu $HOME. Por padrão, sem especificar nenhum parâmetro, ele irá baixar a versão mais recente do Kernel e permitir que você faça a configuração manual usando o make menuconfig. Isso pode não ser muito simples, e eu geralmente faço da seguinte maneira:
kernelbuild --safe-config --fast
Desta forma, ele irá tentar usar o máximo de threads e vai auto-configurar o kernel com base no que você tem rodando atualmente. Ele irá mostrar um prompt antes de começa a compilar, basta responde 'y' e pessionar ENTER, e agora é só esperar 😄☕ ... O tempo de construir o pacote pode levar de 1h30 (como é o caso do meu laptop Ideapad com Ryzen 7 3700U) ou 11 minutos (se você der a louca e fize uma máquina muito heavy metal como eu fiz).

Depois de construir o kernel, basta instalar ele com o dpkg e reiniciar a máquina para testar:
sudo dpkg -i *.deb
Caso algo não dê certo, basta reiniciar e escolher no Grub a versão anterior.

Agora é com você: Faça seu kernel build customizado e compartilhe nos comentários abaixo como foi sua experiência de compilar e executar o kernel na raça!

Observação: neste kernel customizado, o secure boot deve estar desligado. Em breve teremos aqui um post ensinando como fazer para criar as suas próprias chaves e manter o secure boot ligado! Deixem nos comentários as dúvidas ou sugestões!

Comentários