Compilando um Kernel customizado a partir do código-fonte do Kernel do Debian 12

O Debian, geralmente oferece uma boa estabilidade, mas as vezes algum módulo precise ser compilado no kernel para ativar um recurso específico no sistema ou até mesmo para o reconhecimento de algum periférico não compatível com o Debian.

[ Hits: 4.986 ]

Por: Mauricio Ferrari em 21/07/2024 | Blog: https://www.youtube.com/@LinuxDicasPro


Preparação e Compilação



Vamos então iniciar o processo de compilação e construção do pacote.

1. Ativando os repositórios source

Primeiramente, estou assumindo que você já tenha os repositórios do Debian configurados minimamente no arquivo /etc/apt/source.list. Eu usei como base essa fonte (https://gist.github.com/hakerdefo/5e1f51fa93ff37871b9ff738b05ba30f), conforme abaixo (use o comando para editá-lo: sudo nano /etc/apt/sources.list):

deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
# deb-src http://deb.debian.org/debian bookworm main contrib non-free-firmware

deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
# deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware

# deb http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware
# deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
# deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware

Aí, você descomenta os deb-src tirando o sinal de # do início das linhas que o possuem:

deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm main contrib non-free-firmware

deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware

# deb http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware
# deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware

Se você quiser ativar o bookworm-backports, sem problemas. Use as teclas CTRL + O para salvar e CTRL + X para fechar o arquivo.

2. Instalando as Dependências Necessárias

Opcional, pois a próxima etapa já baixa tais dependências, mas coloquei caso alguém queira acompanhar com um kernel mais atualizado, ou baixado direto do site do kernel.

sudo apt install build-essential
sudo apt build-dep linux

3. Instalando o Source do Kernel Debian

Usando esse comando:

uname -r

O resultado foi:

6.1.94

Então, baixe o kernel desse jeito:

sudo apt install linux-source-6.1
tar xaf /usr/src/linux-source-6.1.tar.xz
cd linux-source-6.1

4. Limpeza Inicial

Para garantir que o código está limpo use:

make mrproper

5. Usar a Configuração Padrão para a Arquitetura

Esse comando usa o padrão pré-definido. Essa etapa é opcional e pode ser pulada. Isso vai te dar o kernel mais genérico possível.

make defconfig

6. Usar .config Customizado

Geralmente, esse é o comando recomendado nesses casos:

zcat /proc/config.gz > .config

Mas, o Debian não tem esse recurso por padrão. Então, deve ser usado um desses métodos alternativos para copiar o .config do /boot:

  • cat /boot/config-$(uname -r) > .config
  • cp /boot/config-$(uname -r) .config
Não vai só copiando o comando direto, pode ter mais de um config em boot ou ter outros nomes.

7. Gerar uma Configuração Baseada no Kernel em Execução e nos Módulos Carregados

Também é opcional mas é o que pode fazer a diferença, pois ele vai configurar o kernel especificamente para sua máquina, mantendo apenas os módulos que você precisa. Mas também é o comando que pode tirar demais e acabar faltando algum módulo que você precisa depois.

make localmodconfig

A compilação usará menos tempo e espaço em disco se as informações de depuração estiverem desabilitadas.

scripts/config --disable DEBUG_INFO
scripts/config --disable CONFIG_DEBUG_INFO_BTF

8. Interface para Configurar os Módulos do Kernel

Tem várias, use aquela que você gostar mais, o mais usado e o recomendado é o menuconfig:

  • make menuconfig
  • make nconfig
  • make gconfig
  • make xconfig

Se precisar:

  • sudo apt install libncurses-dev # nconfig
  • sudo apt install libgtk2.0-dev libglib2.0-dev libglade2-dev # gconfig
  • sudo apt install qtbase5-dev # xconfig
Lembre de carregar os módulos e salvar os módulos no final da configuração dos módulos.

9. Verificar os Módulos que serão compilados

Esses comandos ajudam a saber quantos módulos serão compilados:

grep =y .config | wc -l
grep =m .config | wc -l

10. Compilando o kernel

Como estamos no Debian, vamos compilar e gerar o pacote direto.

make bindeb-pkg

11. Instalando o novo Kernel

No final, serão gerados vários pacotes no diretório /home:

linux-headers-6.1.94_6.1.94-4_amd64.deb
linux-image-6.1.94_6.1.94-4_amd64.deb
linux-image-6.1.94_6.1.94-4-dbg_amd64.deb
linux-libc-dev_6.1.94-4_amd64.deb

Instale esse:

sudo dpkg -i ~/linux-image-6.1.94_6.1.94-4_amd64.deb

Este comando descompactará o kernel, gerará o initrd se necessário e configurará o bootloader para tornar o kernel recém-instalado o padrão. Após isso, é só reiniciar e já estará pronto.

sudo shutdown -r now

Aqui está o vídeo do Canal do YouTube para ajudar a entender o processo.



Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparação e Compilação
   3. Conclusão
Outros artigos deste autor

Mate Desktop no Slackware

Fazendo o Mate Terminal iniciar sem a Barra de Menu

Instalar LibreOffice 7.0 no Slackware Current

Criando acima de quatro partições no HD

Abrindo aplicações Java de uma vez por todas

Leitura recomendada

Instalando o Slackware com suporte HT - SMP

Novidades do Kernel 2.6.35

Controle de tráfego utilizando HTB no Debian Sarge

Kernel 2.6.7 compilado e configurado para nVIDIA

Compilando o kernel no Conectiva Linux 10

  
Comentários
[1] Comentário enviado por raulgrangeiro em 22/07/2024 - 15:09h

Que artigo interessante, nunca compilei um kernel. Vou ver o vídeo indicado!


Creia no Senhor Jesus Cristo e serás salvo!

[2] Comentário enviado por maurixnovatrento em 25/07/2024 - 18:29h


Valeu;
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10

[3] Comentário enviado por danniel-lara em 29/07/2024 - 08:07h


Muito Bom , Parabéns pelo Artigo

[4] Comentário enviado por jairus em 04/09/2024 - 15:47h

Olá,

Parabéns pelo artigo, muito bem explicado. Fez-me lembrar algum tempo atrás quando eu fazia algumas compilações de Kernel's aqui na empresa, para otimizar pc's.

Att,
Jairus Lopes

[5] Comentário enviado por richards em 05/09/2024 - 23:00h


Mto legal o artigo! Compilar o kernel serviria também para voce ter suporte a algum driver mais novo ou com bugs corrigidos tb? além do desempenho ficando compilado para seu sistema ne?

[6] Comentário enviado por maurixnovatrento em 07/09/2024 - 16:48h


[5] Comentário enviado por rrodrigues345 em 05/09/2024 - 23:00h


Mto legal o artigo! Compilar o kernel serviria também para voce ter suporte a algum driver mais novo ou com bugs corrigidos tb? além do desempenho ficando compilado para seu sistema ne?


Isso mesmo. Mas dependendo do dispositivo pode ser necessário também atualizar a versão do kernel, pois esse foi com base na versão do kernel do debian, mas ainda assim já funciona para ativar o suporte a bastante driver.
Em relação a bugs corrigidos as atualizações de kernel do debian deve já cobrir.


Contribuir com comentário