Compilando Kernel 3.0 do Linux

jul. 25, 2011·
Julio Batista Silva
Julio Batista Silva
· 3 minutos de leitura
blog Linux
ARTIGO INCOMPLETO!

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:

  1. Instale todas as ferramentas de desenvolvimento utilizadas para a compilação

    No Ubuntu:

    $ sudo apt-get install gcc
    

    No Arch:

    $ sudo pacman -S gcc
    
  2. 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
    
  3. Descompacte o pacote em alguma pasta (usei ~/src aqui)

    $ tar jxvf linux-3.0.tar.bz2 -C ~/src
    
  4. É 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.

  5. 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 do xconfig, 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 kernel
    • M -> Faz com que o item seja compilado como um módulo carregável
    • N -> Desativa o item
    • ? -> Ajuda relativa ao item
    • / -> Pesquisa
    • -> O espaço alterna entre opções
    • ESC -> Sobre um nível ou sai da configuração

    Salve as configurações.

  6. 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; onde X = cores+1).

  7. Após a compilação, você precisa instalar o kernel e os módulos

    $ make modules
    $ sudo make modules_install
    $ sudo make install
    
  8. 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
    }
    
  9. 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.


Julio Batista Silva
Authors
Senior Cloud Developer

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! 🙂

comments powered by Disqus