Compilando Kernel 3.0 do 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
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus