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

Aprendendo de forma prática e simples o processo de compilação do kernel, onde o usuário terá facilidade em executar. Serão sete passos bem práticos, onde iremos explicar cada comando utilizado pelo usuário para que ele não venha só a memorizar uma sequência de comandos, mas saber tudo o que está fazendo.

[ Hits: 7.503 ]

Por: Fabio Mendes em 03/11/2014


Introdução / Procedimentos



Introdução

Uma das grandes vantagens dos sistemas Unix, é de poder utilizar um kernel específico. No GNU/Linux, o código do sistema operacional (kernel) é aberto, isto torna-se ainda mais fácil.

Quais as vantagens de compilar o kernel?
  • Otimizar o tipo do processador da sua máquina;
  • Remoção dos drivers desnecessários para economizar processamento e, principalmente, memória.

Exemplo:
  • Desligar emulação matemática, SCSI, roteamento avançado, etc.
  • Suporte a dispositivos que tinham sido desabilitados em compilação anterior.
  • Se determinado driver está instável e é necessário testar com um kernel mais novo (driver mais novo).
  • O kernel que estou usando não tem suporte a determinado dispositivo, logo, sou obrigado a instalar um kernel mais novo.

Vou agora dar 7 passos explicando o que iremos fazer para compilar/atualizar o nosso kernel de uma forma bem simplificada, onde iremos automatizar esse processo que irá gerar pacotes do gerenciador do dpkg e depois instalamos esses pacotes .deb.

Esses pacotes já configuram o GRUB, instalam o kernel nos locais corretos e você não precisa fazer inúmeras configurações, principalmente, no gerenciador de boot. Mão na massa.

Procedimentos práticos para a compilação do kernel

1. O nosso primeiro procedimento será instalar os pacotes necessários para a compilação do kernel, onde esses pacotes serão responsáveis pela compilação:

# apt-get install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip libncurses5-dev dpatch udev

2. Baixar o fonte do kernel

Como sabemos qual a última versão do kernel? Acessando o site oficial do kernel do Linux:
Você vai localizar a última versão do kernel ou a versão que você precisa, no meu caso, instalei o kernel 3.17.1 (stable), pois é a última versão estável do kernel no momento que este artigo é escrito.

Ao acessar o site do kernel, você vai ver listada as 10 últimas versões do kernel, sendo que a versão "stable", ou seja estável, é uma versão já concluída, não irá sofrer mais alterações em seu fonte. A última versão estável do kernel será conhecida pelo nome: Latest Stable Kernel.

Iremos utilizar o comando wget para baixar o fonte .tar.xz:

Exemplo:

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.17.1.tar.xz

3. Preparar o ambiente para compilação

Por padrão, toda compilação do kernel é feita na pasta /usr/src, independentemente de onde você baixou o kernel .tar.xz. Descompactaremos o fonte do kernel na pasta /usr/src com o comando:

# tar -xvf linux-3.17.1.tar.xz -C /usr/src

Dentro do diretório:

# cd /usr/src

Com o comando ls você vai poder visualizar o diretório de compilação do kernel. Ex.: linux-3.17.1.

Crie um link simbólico apontando para o diretório do kernel, para deixar tudo bem organizado:

# ln -s /usr/src/linux-3.17.1 /usr/src/linux

Onde ele irá criar um arquivo linux apontando para o diretório kernel (linux-3.17.1).

4. Copiar as configurações do kernel atual

# cd /usr/src/linux #Todo nosso trabalho será feito dentro desse diretório.
# cat /boot/config-`uname -r` > .config

Esse último comando irá gerar um arquivo .config (arquivo de configuração do kernel que você irá compilar) com as informações do arquivo /boot/config-`uname -r` - que é o seu kernel atual.

No meu caso, estou atualizando o kernel 3.2.0-4-amd64, eu poderia colocar também o nome do diretório sem problema nenhum.

# cat /boot/config-3.2.0-4-amd64 > .config

Copiamos as configurações do kernel atual para nos servir de base para a compilação do novo kernel. Porque isso é interessante?
  • Isso vai lhe poupar tempo, porque o kernel já tem a configuração padrão dele.
  • Caso você esqueça de alguma configuração (ex.: esqueci de marcar o módulo da minha placa de rede e esqueci de marcar o módulo da minha placa de vídeo). Se esqueceu, tem que compilar o kernel de novo.

Então, você vai usar uma configuração totalmente funcional para utilizar no seu novo kernel. Irá facilitar muita coisa.

5. Menu de configuração do kernel

# make menuconfig #Esse é o menu de configuração do kernel.

Nele, você pode habilitar ou desabilitar opções de configuração, caso você queira padronizar o seu kernel. Eu aconselho a deixar como está, pois o arquivo de configuração já foi gerado, pois já escolhemos a nossa configuração. Se você acessou menuconfig, dê um Exit.

6. Iniciando a compilação

# make-kpkg clean

Para limpar construções anteriores do kernel (ex.: uma compilação do kernel que deu um erro ou uma configuração errada de um processo de compilação antigo), ou seja, ele apaga as configurações anteriores.

# time fakeroot make-kpkg -j4 --initrd kernel_image kernel_headers

Essa sequência de comandos irá fazer a compilação do kernel, irá testar a compilação do kernel, gerar as imagens e o cabeçalho do nosso kernel.

Obs.: a compilação começou, logo em seguida, irão ser feitas algumas solicitações de algumas funcionalidades do kernel. Deixe tudo como padrão, aperte Enter quantas vezes for necessário sem digitar nada.

Você irá dar vários Enter, até iniciar o processo. O final dessa compilação é a criação dos dois arquivos .deb dentro do diretório /usr/src.

7. Instalar pacotes do novo kernel

# cd /usr/src
# dpkg -i linux-image-3.17*.deb linux-headers-3.17*.deb #Comando para instalar os dois pacotes que foram gerados após a compilação.
# reboot #Comando para reiniciar o sistema.
# uname -a #Para você conferir no sistema a atualização.


Parabéns, o seu kernel foi atualizado com sucesso.

   

Páginas do artigo
   1. Introdução / Procedimentos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

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

Aplicando patches no kernel

Alterando as permissões de um arquivo

Empacotamento de Kernel em Sistemas Debian-Based

OpenVZ - Instalando no Debian Squeeze AMD64

  
Comentários
[1] Comentário enviado por nicolo em 03/11/2014 - 11:10h

BOM artigo, o Debian e DEBS são as distros mais populares, e de fato o debian fica mais rápido com um kernel recompilado. Não é tão difícil.

[2] Comentário enviado por serph em 30/11/2014 - 14:55h

Mas se no menu de config eu alterar o tipo de precessador e salvar... eu vou perder o arquivo .config copiado? (cat /boot/config-`uname -r` > .config)

[3] Comentário enviado por apogee em 14/12/2014 - 20:43h

Muito bom esse tutorial, parabens.

Só uma duvida, como faço para compilar o mesmo kernel 2x usando configuração diferente e gerar 2 .deb? Quando compilo 2x e gero os .deb uma instalação sobrescreve a outra, e não está adicionando 2 entradas no grub.

Provavelmente pq gera aqueles vmlinuz, config... tudo com o mesmo nome nas 2x, nao sei..


Att,


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts