Introdução
A versão 3 do kernel, foi lançada em 22 de Julho de 2011 em comemoração aos 20 anos do
Linux, com alterações bastante técnicas incluindo suporte a mais dispositivos, redução na fragmentação no sistema de arquivos Btrfs e um backend de armazenamento para o Xen.
Outras mudanças aparecem como suporte mais amplo a placas de rede Wireless, WebCams, etc.
Configurar, compilar e instalar o kernel
Nesse artigo, utilizei o
Debian 7 e o
CentOS 6.5, ambos 32 bits.
Antes de compilar qualquer versão do kernel, comece instalando os pacotes abaixo para resolver as dependências durante a compilação:
No Debian:
# aptitude install make gcc g++ autoconf libncurses5 libncurses5-dev ncurses-base ncurses-bin ncurses-term initramfs-tools
No CentOS:
# yum install ncurses-devel
# yum groupinstall "Development Tools"
Obs.: se estiver usando o CentOS minimal, use o seguinte comando:
# yum groupinstall "Base"
Assim, ele vai instalar diversas ferramentas que serão necessárias para o uso do sistema.
O próximo passo, é obter o código fonte do kernel a partir do site:
No momento que escrevo o artigo, a versão estável é a 3.16.3.
Vamos acessar o diretório
/usr/src para baixar a fonte do kernel, isso se for respeitar a FHS:
# cd /usr/src/
Vamos realizar o download com o comando
wget:
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.3.tar.xz
Agora, vamos descompactar o arquivo baixado:
# tar -Jxf linux-3.16.3.tar.xz
Vamos criar um link simbólico para manter uma organização:
# ln -s /usr/src/linux-3.16.3 /usr/src/linux
# cd linux
Agora, vamos adicionar uma EXTRAVERSION, a fim de organizar uma eventual estrutura de módulos no
/lib.
Para gerar uma
string de extraversion, vamos usar o comando
date:
# date +"-%Y%m%dc1"
-20141002c1
Vamos adiciona-la no
Makefile do kernel:
# cd /usr/src/linux-3.16.3
# vim Makefile
EXTRAVERSION = -20141002c1
Vamos compilar o kernel utilizando o
make menuconfig. Essa opção usa a interface
ncurses.
Antes de começar a compilar o kernel, vamos dar uma limpeza no diretório do fonte do kernel:
# make mrproper
Depois disso, vamos iniciar o processo de configuração:
# make menuconfig
Nesta parte, pode-se escolher o processador correto, quais módulos desejamos adicionar ou remover, se deseja colocar o logo do Tux para iniciar junto ao sistema, etc.
Não vou fazer nenhuma alteração nele, pois irei apenas atualizar o kernel do sistema. Após salvar as configurações na opção
Save, vamos salvar o arquivo gerado em local seguro:
# cp .config /boot/config-3.16.3-20141002c1
Agora, vamos começar a compilar o kernel:
# make CONFIG_DEBUG_SELECTION_MISMATCH=y
Obs.: caso o seu processador possua mais de um núcleo, use a flag
-j para acelerar a compilação, por exemplo:
# make CONFIG_DEBUG_SELECTION_MISMATCH=y -j2
Isso, se o processador for de 2 núcleos, se for 4, use
-j4.
Agora pode descansar um pouco, pois isso é bem demorado...
Após acabar o processo, vamos copiar os módulos para o diretório apropriado em
lib/modules:
# make modules
# make modules_install
Depois disso, será gerado um arquivo de imagem, o
bzImage, dentro do diretório
/usr/src/linux3.16.3/arch/XXX/boot.
Onde
XXX, é a arquitetura do seu processador.
Copie para o diretório
/boot, com o nome
vmlinuz (este é o nome dado ao kernel):
# cd arch/i386/boot
# file bzImage
# cp bzImage /boot/vmlinuz-3.16.3-20141002c1
Vamos criar uma image de boot, pois ela é necessária para que os módulos sejam carregados durante o boot.
Vamos construir o arquivo
initrd em
/boot.
No Debian:
# mkinitramfs -o /boot/initrd.img-3.16.3-20141002c1 /lib/modules/3.16.3-20141002c1
No CentOS:
# mkinitrd /boot/initrd-3.16.3-20141002c1.img /lib/modules/3.16.3-20141002c1
Agora, vamos finalizar configurando o bootloader:
# update-grub
Se já estiver com o GRUB 2 instalado, a configuração será feita de forma automática, basta reiniciar e usar o novo kernel.
Depois de reiniciar, basta verificar a nova versão do kernel com o comando:
# uname -r
Fim.