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: 3.340 ]

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

Pendrive MultiBoot com o Ventoy Não Funcionou? Tem Solução!

Liberando Memória ajustando o Tamanho das Strings em C

Criando acima de quatro partições no HD

Aplicativos do Windows que já tiveram suporte no Linux

Como Funciona a Resolução de Dependências no Gslapt

Leitura recomendada

NetFilter Hook em Kernel 2.6

Compilando kernel com suporte a POM (path-omatic) e Layer7 no Debian e Slackware

Compilando kernel 2.6 no Slackware 11

Kernel v3.x no Debian - Compilação em 7 passos práticos

Que tal criar uma mini-distro em 1 disquete?

  
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 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?

[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts