Revista Do Linux
EDIÇÃO DO MÊS
 CD do Mês
 Jogos
 Kernel

 Entrevista
 Capa
 Tutorial
 Debian
 Programação
 Portáteis
 Segurança

 

Atualizando o kernel
Quer otimizar seu Linux e ganhar em desempenho? Veja neste mini HOWTO como configurar e recompilar o kernel

Introdução

Desculpe pela pretensão, mas tendo observado várias dúvidas de companheiros quanto à atualização do kernel de suas distros, resolvi sair do ghost e enviar este "mini - HOWTO" indicando os passos para a atualização do kernel... A única necessidade "real" de recompilar o kernel, para o usuário novato, é a de adequar o kernel recém-instalado a seu tipo de processador, para não subutilizar a máquina. Para isto é interessante uma primeira compilação.

Claro que a adequação do kernel ao tipo de hardware do usuário também é um bom motivo, mas o usuário comum pode esperar um pouco até dominar mais o Linux. Entretanto, há aqueles que não se contentam com uma simples compilação, e adoram perder horas de sono e convívio familiar, somente pelo prazer de "fuçar" na máquina. Felizmente eu me enquadro nessa categoria, e senti aquela "comichão" quando vi lançado o kernel 2.2.14 — meu slackware 7.0 não podia ficar para trás :)

Apesar de não acreditar muito em "recipes", seguem os passos que executei para a atualização do kernel 2.2.13 para o 2.2.14, no Slackware.

A receita...

Os passos a seguir dizem respeito à compilação do kernel, com a construção e instalação de novos módulos, adequados às necessidades do usuário. Você deve estar logado como root:

  • Baixar o linux-2.2.14.tar.gz do www.kernel.org ou algum mirror;
  • Copiar o linux-2.2.14.tar.gz para /usr/src:
    
    
    # cp linux-2.2.14.tar.gz /usr/src
    
    
  • Em /usr/src, excluir o link simbólico "linux":
    
    
    # rm linux
    
    
  • Descompactar o fonte do kernel copiado em /usr/src - será criado um diretório chamado "linux":
    
    
    # tar -zxvf linux-2.2.14.tar.gz
    
    
  • Renomear o diretório "linux" recém-descompactado:
    
    
    # mv /usr/src/linux /usr/src/linux-2.2.14
    
    
  • Criar um novo link simbólico "linux", desta vez apontando para o novo diretório linux-2.2.14:
    
    
    # ln -s /usr/src/linux-2.2.14 linux
    
    

    Neste ponto você deve ter, em /usr /src, os dois diretórios e um symlink:

    
    
    # pwd
    /usr/src
    # ls
    linux@        linux-2.2.13    linux-2.2.14    rpm     sendmail
    
    

    Essa é a listagem em /usr/src em meu sistema.

    O link simbólico deve apontar para o diretório linux-2.2.14. É nele que o trabalho a seguir deve ser feito. Não delete o diretório linux-2.2.13 ainda, você pode precisar dele mais tarde, se as coisas saírem erradas.

    Continuando, os próximos passos devem ser executados em /usr/src/linux;

    
    
    # cd /usr/src/linux
    # make menuconfig
    

    O comando acima iniciará a configuração em modo gráfico do kernel. Opcionalmente, estando em algum ambiente X (KDE, WindowMaker, Blackbox ...), o comando poderá ser:

    
    # make xconfig
    
    

    Escolha a opção "Store configuration to file" e salve a configuração atual em / com um nome bem claro, do tipo "config.original" ou algo parecido. Mais tarde, se você precisar restaurar a configuração original, basta rodar o make menuconfig e carregar os parâmetros a partir deste arquivo.

    Em seguida escolha a opção "Quit without save" e saia.

    Continuando, digite (em /usr/src/linux):

    
    
    # make mrproper
    
    

    Isto apagará a configuração anterior do kernel no sistema.

    Em seguida, novamente:

    
    
    # make menuconfig (ou make xconfig, se for o caso)
    Escolha as opções que quiser e adapte o kernel ao seu hardware. Salve a configuração e novamente no prompt:
    # make dep
    # make clean
    # make zImage
    
    

    Esses comandos criam as dependências necessárias, limpam arquivos temporários e de instalação, e criam a imagem compactada do novo kernel, em /usr/src/linux/arch/i386/boot

    .

    No meu caso, como a imagem do kernel a ser gerada é muito grande, tenho de usar "make bzImage" ao invés de "make zImage". Significa, literalmente, "make a BIG zImage" ... :) Após algum tempo (que varia de acordo com a máquina), a imagem é gerada e gravada no diretório referido.

    Vá agora para o diretório /lib/modules. O comando "ls" dá a listagem do conteúdo:

    
    
    # cd /lib/modules
    # ls
    2.2.13
    
    

    O único diretório listado, 2.2.13, é onde se encontram os módulos originais da primeira instalação. Caso você esteja apenas compilando um kernel existente, renomeie para, por exemplo, 2.2.13.old. Caso seja uma atualização, deixe-a intacta, pois a seguir será criado um novo diretório.

    Volte para /usr/src/linux:

    
    
    # cd /usr/src/linux
    
    

    Digite os comandos:

    
    
    # make modules
    # make modules_install
    
    

    Os comandos acima criarão e instalarão os novos módulos em /lib/modules. No caso da atualização desta receita, será criado um diretório "2.2.14" em /lib/modules. O trabalho de criação dos módulos pode demorar um pouco, dependendo do tipo de máquina (processador, RAM disponível, etc.).

    Após o prompt ser novamente liberado, mova a imagem compactada do kernel, de /usr/src/linux/arch/i386/boot para o diretório raiz (/):

    
    
    # mv /usr/src/linux/arch/i386/boot/bzImage /
    
    

    Vá para o diretório raiz, e renomeie o novo kernel recém-compilado para um nome facilmente identificável:

    
    
    # cd /
    # mv bzImage vmlinuz-2.2.14
    
    

    O novo kernel, agora, terá o nome acima, vmlinuz-2.2.14. Observe que será necessário indicar ao LILO qual a imagem compactada que deverá ser inicializada no boot da máquina. Vá para /etc e edite o arquivo lilo.conf:

    
    
    # cd /etc
    # pico lilo.conf (ou outro editor)
    
    

    Meu /etc/lilo.conf se parece com isto:

    
    
    # LILO configuration file
    # generated by ‘liloconfig’
    #
    # Start LILO global section
    boot = /dev/hda
    message = /boot/boot_message.txt
    prompt
    timeout = 20
    vga = normal
    image = /vmlinuz
      root = /dev/hda1
      label = Linux
      read-only
    # Linux bootable partition config ends
    
    

    Veja que apenas uma imagem pode ser inicializada. Para adicionar a nova imagem, na seção:

    
    
    image = /vmlinuz
    root = /dev/hda1
    label = Linux
    read-only
    adicione mais uma entrada:
    image = /vmlinuz-2.2.14
    root = /dev/hda1
    label = New
    read-only
    
    

    O arquivo lilo.conf deve ficar assim:

    
    
    # LILO configuration file
    # generated by ‘liloconfig’
    #
    # Start LILO global section
    boot = /dev/hda
    message = /boot/boot_message.txt
    prompt
    timeout = 20
    vga = normal
    image = /vmlinuz
      root = /dev/hda1
      label = Linux
      read-only
    image = /vmlinuz-2.2.14
      root = /dev/hda1
      label = New
      read-only
    # Linux bootable partition config ends
    
    

    Salve o arquivo lilo.conf. No prompt, digite:

    # lilo

    para salvar as alterações. Você poderá ver:

    
    Added
    Linux *
    New
    
    

    Indicando que a imagem vmlinuz-2.2.14 poderá ser inicializada no boot da máquina digitando-se "new" no prompt do lilo. Posteriormente você poderá mesmo eliminar a imagem antiga (vmlinuz) em "/" e mesmo deletar o diretório /lib/modules/2.2.13. Mas espere alguns dias e observe se não ocorrem erros em módulos, e se todas as funcionalidades estão operantes (ppp, etc.). Dê um reboot na máquina, e a nova inicializa&ccedi ;ão deverá apresentar:

    
    
    Welcome to linux 2.2.14
    
    

    indicando que tudo correu como devia e o novo kernel está instalado. Boa diversão!

    Se as coisas derem errado...

    Observe as mensagens de inicialização, às vezes alguns módulos teimam em não ser instalados corretamente. Em caso de kernel panic, inicialize a partir de um disco (você não tem um? o que está esperando para fazer um?) e efetue as alterações necessárias. É possível voltar ao antigo kernel 2.2.13, simplesmente desfazendo as alterações. Lembre-se de que o comando "linux" digitado no prompt do lilo inicializa a imagem antiga do kernel 2.2.13, e o comando "new" a nova imagem, vmlinuz-2.2.14.

    Conclusão

    Não deixe de consultar a documentação referente ao kernel, em especial o "kernel HOWTO" e o guia para o kernel 2.2.XX. Como foi dito, esta é uma receita simples, que visa orientar os iniciantes a trilharem o caminho das pedras e não tem a pretensão de ser nada mais além disto. Espero ter sido útil. Coloco-me à disposição para eventuais esclarecimentos. Um abraço!

  •  

    A Revista do Linux é editada pela Conectiva S/A
    Todos os Direitos Reservados.

    Política de Privacidade
    Anuncie na Revista do Linux