Blog do Julio

Hacks, tutoriais e dicas

Compilando Kernel 3.0 Do Linux

| Comments

AINDA EM EDIÇÃO

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 ArchLinux, mas o processo é semelhante para qualquer distribuição do Linux.

Obs.: No ArchLinux 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 imbutido 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
    • 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.


Links:


mudar o default=0 no grub e adicionar panic=30

Comments