sábado, 7 de maio de 2011

Atualizar o kernel no Debian 64

Durante minha instalação do Debian64 descrita no post Debian 64 - A nova aventura..., eu achei que ainda não havia sofrido o suficiente para um técnico experiente, então resolvi ampliar meu sofrimento compilando a versão mais recente do kernel, eu já havia feito download do novo kernel pra tentar usar os 04 GB de Ram no Debian Lenny 32bits, o que foi um fiasco total, então... "já que está dentro, relaxa e....".

     Primeiramente, a versão usada nesse caso foi a 2.6.38-5, que nesse dia era a stable.
     No Debian nem se sofre tanto no momento de se compilar um novo kernel, fiquei até com saudades do Slack. O Debian faz quase tudo automático pra você, isso me lembra um outro sistema operacional que minhas convicções religiosas não me permitem citar aqui.
     Maaasss, vamos ao que interessa:

     Passos para instalação:

  1. Instalar os pacotes que facilitam necessários a compilação: 
    • aptitude install build-essential kernel-package libncurses5-dev libqt3-mt-dev.
    • Aceite a instalação de todas as dependências
  2. Baixar a versão do kenel em www.kernel.org;
  3. Descompacte o arquivo na pasta /usr/src e crie o link com o nome "linux" para esse novo diretório:
    • tar -xjvf linux-2.6.38.5.tar.bz2 /usr/src;
    • cd /usr/src
    • ln -s linux-2.6.38.5 linux
  4. Entre nesse novo diretório:
    • cd linux
  5. Copie o arquivo de configuração de sua versão atual do kernel, claro que isso será útil se o seu sistema estiver funcionando com todos os seus hardwares e fará com que você tenha que escolher menos opções, maaassss, se você for sadomasoquista pode iniciar do zero, mas prepare-se para ler bastante e compre algumas latinhas de coca-cola e café solúvel.
    • cp ../.config .
  6. Abra o menu de configuração do kernel:
    • make menuconfig
  7. Nesse momento é que você deve definir o que será alterado no kernel para que valha a pena uma recompilação, o item principal a ser alterado, em minha opinião, é em relação à arquitetura do seu processador, já que isso faz com que o kernel utilize funções específicas do seu processador e não as genéricas, aumentando assim o desempenho de seu processador. Abra
    • escolha  Processor type and features  --->
    • escolha  Processor family --->
    • escolha a opção que que se refere ao seu processado especificamente.
  8. Em algumas versões do kernel existe algo estranho, eu não vou dizer que é um bug porque se fosse já estaria resolvido, mas é algo que eu ainda não consegui entender e, na verdade, nem tentei, é o fato de existir uma linha dentro do arquivo /usr/src/linux-xxx/Documentation/lguest/Makefile que provoca um problema na compilação, então edite o arquivo e altere a linha "all: lguest" para "all: ".
  9. Até aqui são os mesmo passos para a maioria das distros, mas nesse ponto vem a mágica do Debian, ele nos permite gerar um pacote que será instalado a partir de seu gerenciador de pacotes padrão. (Tá bom, nesse ponto eu não senti saudades do Slack )
    • make-kpkg --initrd --bzimage modules_image kernel_image kernel_headers
  10. O passo anterior faz com que seja criado um pacote debian no diretórios /usr/src, então é só sair do diretório atual e instalar o pacote criado:
    • cd ..
    • dpkg -i linux-image-2.6.38.5_2.6.38.5-10.00.Custom_amd64.deb
  11. Pronto, o novo kernel já está compilado e instalado.
  12. Nesse momento você pode tentar reiniciar o computador e se tudo funcionar corretamente, meus parabéns você atualizou seu kernel e pode usufruir dos benefícios dele, que com certeza incluirão maior rendimento devido ao fato de ele estar configurado para sua arquitetura de processador.
  13. Massss, nem tudo são louros, e se você se deparar com um belíssimo "kernel Panic" é sinal que as coisas não correram muito bem, normalmente é devido aos sistemas de arquivo que você usava e que, sabe Deus porque, não foram compilado diretamente no kernel e então você deverá usar o sistema genérico initrd.img, para isso continue os passos desse tutorial, sendo que essa parte foi totalmente implementada por mim, os passos anteriores eu consegui juntando alguns artigos na internet e consultando manuais e fazendo pequenas alterações nos arquivos originais, mas os seguintes foram bem mais complicados já que não havia nada especificamente então foram  "pescados" em pequenos pedaços de artigos e manuais.
  14. Consulte seu diretório /lib/modules e veja que lá existe um diretório com a versão dos kernel que você acabou de instalar (/lib/modules/2.6.38.5).
  15. Crie sua imagem initrd:
    • mkinitramfs -o /boot/initrd.img-2.6.38.5    2.6.38.5
  16. Atualize seu arquivo /boot/menu.lst inserindo bem abaixo das linhas referente ao novo kernel as linhas a seguir, claro que colocando a configuração conforme o seu caso, principalmente em relação ao "/dev/sda3" que deve ser a sua partição raiz.
    • kernel /vmlinuz-2.6.38.5 root=/dev/sda3 ro quiet
    • initrd /initrd.img-2.6.38.5
  17. Esse passo só precisei efetuar quando fiz a compilação em um sistema 32 bits, tive que copiar o arquivo /usr/src/linux/arch/i386/boot/bzimage para a pasta /boot.
  • cp /usr/src/linux/arch/i386/boot/bzimage   /boot
Agora é só reiniciar e você já terá seu novo kernel funcionando perfeitamente.
Claro que podem ocorrer erros, então não desinstale seu kernel antigo enquanto você não tiver plena certeza de que tudo está correndo bem, eu não desinstalo nunca.


Se você tiver algum firmware non-free (bnx2 por exemplo), instale-o antes de gerar o pacote.

Boa sorte.

Um comentário:

Lex Aleksandre disse...
Este comentário foi removido por um administrador do blog.