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.