Compilando Kernel 3.0 do Linux
A nova versão 3.0 do kernel saiu faz 3 dias (22/07/2011) e eu resolvi compilar e instalar nos meus notebooks e postar o resultado aqui. Fiz primeiro em um Ubuntu 11.04 e depois no Arch Linux, mas o processo é semelhante para qualquer distribuição do Linux.
Obs.: No Arch Linux existe também a possibilidade de compilar o kernel usando o sistema ABS + Pacman. Mas por enquanto, só comentarei sobre o método tradicional.
ATENÇÃO! Essa é uma versão nova e com vários bugs, realizei a instalação apenas por fins educativos. Recomendo aguardar mais algumas semanas pelo pacote disponibilizado pela sua distribuição, que te poupará algumas horas de compilação e possíveis crashes.
Esse tutorial também é útil para quem precisa modificar algum módulo ou aplicar algum patch para ativar novas features ou suportar um novo hardware. As etapas são bastante simples e se algo der errado você provavelmente conseguirá voltar com o kernel anterior, mas de qualquer forma, aja com cuidado e crie backups de seus arquivos importantes, não me responsabilizo por possíveis problemas resultantes da instalação do novo kernel.
Procedimentos:
-
Instale todas as ferramentas de desenvolvimento utilizadas para a compilação
No Ubuntu:
$ sudo apt-get install gcc
No Arch:
$ sudo pacman -S gcc
-
Baixe o pacote do kernel. Aqui usarei a disponível em http://www.kernel.org, pois ainda é o único v3.0 disponível. Em breve sairão versões personalizadas para outras distribuições
$ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2
-
Descompacte o pacote em alguma pasta (usei
~/src
aqui)$ tar jxvf linux-3.0.tar.bz2 -C ~/src
-
É recomendável (não necessário) copiar as configurações atuais e apenas modificar o que for preciso.
cp /usr/src/linux-headers-2.6.38-8-generic-pae/.config ~/src/linux-3.0
Na .config do Ubuntu vi que VÁRIOS itens podem ser removidos. Remova TODOS os drivers de rede, wireless, vídeo e de outros dispositivos que você não possui ou não vai precisar. Isso vai reduzir bastante o tempo de compilação e carregamento do kernel.
-
Vá para a pasta que acabou de ser extraída (
cd ~/src/linux-3.0
) para iniciar a configuração.Temos as seguintes opções de ferramentas:
$ make config
-> Em modo texto puro. Contém várias perguntas para serem respondidas.$ make menuconfig
-> Interface ncurses$ make xconfig
-> GUI em QT.$ make gconfig
-> GUI em GTK
Aqui usarei o
menuconfig
, por não precisar do X, mas para iniciantes rodando QT, gostei bastante doxconfig
, pois ele dá acesso mais fácil à ajuda.Vá navegando pelos menus e escolhendo o que deve ser modificado.
Y
-> Faz com que o item seja embutido no kernelM
-> Faz com que o item seja compilado como um módulo carregávelN
-> Desativa o item?
-> Ajuda relativa ao item/
-> PesquisaESC
-> Sobre um nível ou sai da configuração
Salve as configurações.
-
Comece a compilar o kernel e vá fazer outra coisa. Aqui demorou mais de uma hora.
$ make -j2
Em processadores dualcore é melhor usar “make -j3”, em quadcores é melhor
make -j5
e assim por diante (make -jX
; ondeX = cores+1
). -
Após a compilação, você precisa instalar o kernel e os módulos
$ make modules $ sudo make modules_install $ sudo make install
-
Verifique se o seu
/boot/grub/grub.cfg
foi alterado. Se não foi, adicione o novo kernel. Aqui ele adicionou as seguintes linhas automaticamente:menuentry 'Ubuntu, with Linux 3.0.0Julio' --class ubuntu --class gnu-linux --class gnu --class os { recordfail set gfxpayload=$linux_gfx_mode insmod part_msdos insmod ext2 set root='(/dev/sda,msdos6)' search --no-floppy --fs-uuid --set=root 6d6b6bce-af80-450f-943f-23c0a2bed958 linux /vmlinuz-3.0.0Julio root=/dev/sda7 ro quiet splash vt.handoff=7 }
-
Reinicie o computador e boot o kernel novo.
$ sudo reboot
Se acontecer um
kernel panic
, você pode dar boot pelo kernel antigo e tentar corrigir o erro.
Links
- https://wiki.archlinux.org/index.php/Kernel_Compilation_from_Source
- https://wiki.archlinuhttps://wiki.archlinux.org/index.php/Kernel_Compilation_from_Sourcex.org/index.php/Kernel_Compilation_from_Source_for_New_Users
- https://wiki.archlinux.org/index.php/Kernel_Panics
- https://wiki.archlinux.org/index.php/Kernel_Compilation