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.
Parte 2: 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". 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.
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.
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 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: 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 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: Você verá o seu Kernel antigo e o Kernel novo (default): Depois de iniciar o Linux, é possível verificar se o Kernel foi compilado com o seguinte comando:
# uname -a
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.
E, para finalizar, rodar o comando abaixo novamente para reescrever o menu de boot:
# update-grub
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!
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". 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 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: 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 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: Você verá o seu Kernel antigo e o Kernel novo (default): Depois de iniciar o Linux, é possível verificar se o Kernel foi compilado com o seguinte comando:
# uname -a
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!