Como compilar o Kernel em qualquer distribuição GNU/Linux

Neste artigo vou explicar o que é o Kernel, por que compilá-lo e, mais do que isso, como compilar o Kernel do GNU/Linux de forma simples e rápida, sem enrolação. Além disso, este artigo pode ser levado como base para algumas questões da prova LPIC-2.

[ Hits: 9.830 ]

Por: Mateus Gabriel Müller em 27/09/2017 | Blog: http://4fasters.com.br/


Aprenda definitivamente como compilar o Kernel do Linux



Antes de tudo, entenda que o Kernel é desenvolvido pela Kernel.org. O topo máximo desta cadeia é o Sr. Linus Torvalds, criador do kernel Linux. Todas as revisões e quem bate o martelo para lançar um Kernel, é ele.

Em meu equipamento, estou utilizando um Debian Stretch com Kernel 4.9.0-3 e estarei atualizando para o Kernel 4.12.4. Este modo de compilação serve para qualquer distribuição.

Para realizar o download do Kernel, clique link para aqui e selecione a opção "Latest Stable Kernel".
Linux: Como compilar o Kernel em qualquer distribuição Linux
Veja que, na parte de baixo, há uma lista de versões mais antigas do Kernel. Você pode tentar compilar qualquer uma delas baixando o tarball.

Dependências

Dependências para compilar o Kernel:

Obs.: as dependências abaixo são para distribuições Debian-based, ou seja, se você usa RedHat-based ou Slackware-based, precisa identificar os pacotes equivalentes a estes.
  • Build-essential: Este é um pacotão de compiladores. Ele contém o make, gcc, gcc++, dpkg-dev, etc. É necessário porque vamos instalar o make, comando que vai entender as instruções e compilar o Kernel.
  • libssl-dev: Librarie de segurança que utiliza o protocolo SSL.
  • libncurses5-dev: Necessário para criar uma interface gráfica para criação do arquivo de configuração do Kernel. Neste caso, instalando somente esta lib pode não funcionar, então, sugiro instalar todo o pacote do ncurses.

Vamos lá:

sudo su
# apt-get install build-essential libssl-dev ncurses* -y

Agora, vamos extrair o Kernel baixado:

# cd /home/mateus/Downloads
# tar xvf linux-4.12.4.tar.xz

Uma pasta "Linux-4.12.4" foi criada. Vamos acessá-la e verificar o que consta dentro:

# cd linux-4.12.4.
# ls --color
Linux: Como compilar o Kernel em qualquer distribuição Linux
Agora, vamos configurar o Makefile para compilarmos posteriormente (se você não sabe o que é um Makefile, leia este artigo:

# make menuconfig

Uma tela como esta será aberta. Nela, é possível personalizar o que você deseja ou não compilar deste Kernel, personalizando conforme sua necessidade:
Linux: Como compilar o Kernel em qualquer distribuição Linux
Obs.: o comando make config faz a mesma coisa que o make menuconfig, porém, sem interface gráfica.

Depois de finalizado este processo, um arquivo ".config" será criado e o arquivo Makefile será modificado com as instruções que selecionamos na interface gráfica acima.

Agora vamos, de fato, compilar o Kernel:

# make -j4

Obs.: se você não sabe o que o parâmetro "-j" faz, leia este artigo.

Este processo demora bastante, se você não usar a opção "-j". Então, meu amigo, vá ver um filme, tomar um café, correr com sua namorada.

Depois de finalizado, vamos compilar os módulos:

# make modules

Após compilar, vamos instalar os módulos:

# make modules_install
Linux: Como compilar o Kernel em qualquer distribuição Linux
E, para finalizar, vamos instalar o Kernel com os módulos compilados:

# make install

Processo finalizado. Vamos testar?

Reinicie o equipamento e acesse as opções avançadas de boot:
Linux: Como compilar o Kernel em qualquer distribuição Linux
Você verá o seu Kernel antigo e o Kernel novo (default):
Linux: Como compilar o Kernel em qualquer distribuição Linux
Depois de iniciar o Linux, é possível verificar se o Kernel foi compilado com o seguinte comando:

# uname -a
Linux: Como compilar o Kernel em qualquer distribuição Linux

Informações extras sobre a compilação de Kernel

Existe outra forma de compilar o Kernel?

Existe outra variação para compilar e instalar o Kernel utilizando o make bzImage. A diferença é que você terá que criar o arquivo Initrd manualmente e depois adicionar uma entrada de boot no Grub. Aqui, temos um exemplo no blog do Diolinux.

Como desinstalar o Kernel

Se você quiser desinstalar o Kernel, você pode simplesmente deletar todos os arquivos que possuem a extensão do Kernel 4.12 dentro do diretório /boot. Depois disso, deletar toda a pasta de módulos deste Kernel em /lib/modules.

E, para finalizar, rodar o comando abaixo novamente para reescrever o menu de boot:

# update-grub

Qual a diferença entre make mrproper e make clean

Caso você queira iniciar o procedimento de compilação do zero, é interessante que você zere os arquivos e módulos já compilados (extensões ".o" e ".ko").

Para remover somente os arquivos de objeto (extensões ".o" e ".ko") você pode rodar o comando:

# make clean

Se você quiser remover todos os objetos e, ainda mais, remover o ".config", arquivos de dependência e todo o resto que o make menuconfig (ou make config) cria, você pode utilizar o comando:

# make mrproper


Obrigado e até a próxima!

Página anterior    

Páginas do artigo
   1. O que é o Kernel? Por que compilar? Problemas?
   2. Aprenda definitivamente como compilar o Kernel do Linux
Outros artigos deste autor

Entenda o Bootstrap

Leitura recomendada

Como explicar o que é kernel para um leigo

Compilar e habilitar os módulos ip_table e iptable_nat no kernel 2.6.26 no Debian Linux

Compilando o Kernel do OpenBSD 4.3 (GENERIC)

Recompilando o kernel na distribuição Debian

Empacotamento de Kernel em Sistemas Debian-Based

  
Comentários
[1] Comentário enviado por removido em 27/09/2017 - 21:51h

Excelente dica,entretanto faltou falar que librarie é uma biblioteca para Linux e que toda biblioteca para Linux começa com lib.Porém essa dica que falei é para iniciantes.

[2] Comentário enviado por kowalskii em 02/10/2017 - 11:50h

Bom artigo.
Apenas algumas observações:


Este processo demora bastante, se você não usar a opção "-j". Então, meu amigo, vá ver um filme, tomar um café, correr com sua namorada.

Quem compila kernel não tem namorada.


Uma tela como esta será aberta. Nela, é possível personalizar o que você deseja ou não compilar deste Kernel, personalizando conforme sua necessidade:

Essa parte eu particularmente acho meio complexa, eu não sou um usuário avançado por exemplo, como eu posso saber o que ativar?
Parabéns pelo artigo, abraço!
-----------------------------------------
---- Linux Counter #606350 ----

[3] Comentário enviado por johnf em 03/10/2017 - 16:23h




Uma tela como esta será aberta. Nela, é possível personalizar o que você deseja ou não compilar deste Kernel, personalizando conforme sua necessidade:
Essa parte eu particularmente acho meio complexa, eu não sou um usuário avançado por exemplo, como eu posso saber o que ativar?
Parabéns pelo artigo, abraço!
-----------------------------------------
---- Linux Counter #606350 ----

Mesma dúvida dele, bom trabalho.

[4] Comentário enviado por mateusgabriel em 05/10/2017 - 16:37h


[2] Comentário enviado por kowalskii em 02/10/2017 - 11:50h

Bom artigo.
Apenas algumas observações:


Este processo demora bastante, se você não usar a opção "-j". Então, meu amigo, vá ver um filme, tomar um café, correr com sua namorada.
Quem compila kernel não tem namorada.


Uma tela como esta será aberta. Nela, é possível personalizar o que você deseja ou não compilar deste Kernel, personalizando conforme sua necessidade:
Essa parte eu particularmente acho meio complexa, eu não sou um usuário avançado por exemplo, como eu posso saber o que ativar?
Parabéns pelo artigo, abraço!
-----------------------------------------
---- Linux Counter #606350 ----


Hahaha, boa!

Cara, aquela tela tu vai simplesmente selecionar o que você quer o ou não compilar. Imagina assim: Tenho um placa de vídeo da NVIDIA. Por que eu vou compilar os módulos da AMD junto se não vou usar? Ali seria para selecionar apenas o que você precisa para rodar seu hardware, podendo otimizar muito ele se descartar esse lixo todo. Claro que é muito mais complexo, tem muitas coisas ali que eu não sei pra que serve, pra diferentes tipos de hardware. Mas essa é a ideia! Abraço.

[5] Comentário enviado por mateusgabriel em 05/10/2017 - 16:37h


[1] Comentário enviado por Capitao_Zap em 27/09/2017 - 21:51h

Excelente dica,entretanto faltou falar que librarie é uma biblioteca para Linux e que toda biblioteca para Linux começa com lib.Porém essa dica que falei é para iniciantes.


Valeu capitão :)

[6] Comentário enviado por mateusgabriel em 05/10/2017 - 16:37h


[3] Comentário enviado por johnf em 03/10/2017 - 16:23h




Uma tela como esta será aberta. Nela, é possível personalizar o que você deseja ou não compilar deste Kernel, personalizando conforme sua necessidade:
Essa parte eu particularmente acho meio complexa, eu não sou um usuário avançado por exemplo, como eu posso saber o que ativar?
Parabéns pelo artigo, abraço!
-----------------------------------------
---- Linux Counter #606350 ----

Mesma dúvida dele, bom trabalho.



Cara, aquela tela tu vai simplesmente selecionar o que você quer o ou não compilar. Imagina assim: Tenho um placa de vídeo da NVIDIA. Por que eu vou compilar os módulos da AMD junto se não vou usar? Ali seria para selecionar apenas o que você precisa para rodar seu hardware, podendo otimizar muito ele se descartar esse lixo todo. Claro que é muito mais complexo, tem muitas coisas ali que eu não sei pra que serve, pra diferentes tipos de hardware. Mas essa é a ideia! Abraço.

[7] Comentário enviado por kowalskii em 06/10/2017 - 08:21h

Obrigado pelas informações @mateusgabriel! :D
-----------------------------------------
---- Linux Counter #606350 ----


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts