Pular para o conteúdo

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.
Mauricio Ferrari (LinuxProativo) maurixnovatrento
Hits: 5.760 Categoria: Linux Subcategoria: Kernel
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 2: 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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.



O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Preparação e Compilação
   3. Conclusão

Placas de vídeo que já perderam o suporte no Linux

Mate Desktop no Slackware

LXDE Desktop no Slackware

Quer achar uma distro descontinuada? Veja as alternativas

Abrindo aplicações Java de uma vez por todas

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

Como instalar o bootsplash no Debian 3.1 Sarge a partir do zero

Compilação de Kernel

O kernel do Linux: A definição, importância e funcionalidades

Blu-ray: Reproduzindo, copiando, ripando e assistindo no GNU/Linux

#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!
#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

Entre na sua conta para comentar.