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 gccNo Arch:
$ sudo pacman -S gccBaixe 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.bz2Descompacte o pacote em alguma pasta (usei
~/srcaqui)$ 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.0Na .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/-> Pesquisa-> O espaço alterna entre opçõesESC-> 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 -j2Em processadores dualcore é melhor usar “make -j3”, em quadcores é melhor
make -j5e 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 installVerifique se o seu
/boot/grub/grub.cfgfoi 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 rebootSe 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

Sou um engenheiro de computação brasileiro baseado na Alemanha, apaixonado por tecnologia, ciência, fotografia e línguas.
Programo há cerca de duas décadas, explorando desde aplicativos móveis e desenvolvimento web até aprendizado de máquina. Atualmente, foco em SRE de nuvem e engenharia de dados.
Sou voluntário nas comunidades de open source e Python, ajudando a organizar a PyCon DE e a PyData Berlin, mentorando e contribuindo com código e traduções.
No meu blog, compartilho dicas de Linux, guias de configuração e notas pessoais que escrevo para referência futura. Espero que outras pessoas também as considerem úteis. O conteúdo está disponível em vários idiomas.
Visite minha galeria para ver algumas das minhas fotografias.
Longe do teclado, você vai me encontrar em shows, tocando clarinete, pedalando, mergulhando ou explorando novos lugares, culturas e culinárias.
Sempre feliz em me conectar! 🙂