YportiLog

Compilando um kernel com patches Debian

Publicado por: Bruno Tsubouchi Yporti em: 2 dUTC Outubro dUTC 2008

Nesse artigo pretendo mostrar como compilar um kernel aplicando os patches do Debian (segurança, correções, etc). Alguns devem estar se perguntando: mas por que não compilar o kernel original e em sua última versão? Bem, um dos motivos seria a estabilidade, uma vez que o foco desse artigo é para usuários do Debian estável. Outros motivos mais específicos incluem compatibilidade com hardware e drivers, principalmente os proprietários. É fato que leva um certo tempo para lançarem tais drivers compatíveis com a última versão do linux, e quando o fazem, nem sempre o mesmo é totalmente estável.

O tutorial atual se baseia na compilação do kernel 2.6.26 no Debian Lenny (congelado), que será lançado em breve como estável. Pequenas modificações, principalmente referentes às versões podem vir a ser necessárias.

Primeiramente, vamos instalar os pacotes necessários:

# apt-get install kernel-package libncurses5-dev linux-patch-debian-2.6.26

Depois, vamos obter o código-fonte do kernel do Debian. ATENÇÃO: o kernel proveniente do kernel.org (site oficial do kernel linux) não serve para este tutorial. Vamos usar o wget para obter a base do kernel do Debian:

$ wget -c http://ftp.br.debian.org/debian/pool/main/l/linux-2.6/linux-2.6_2.6.26.orig.tar.gz

Caso queira obter o link manualmente, basta ir em http://packages.debian.org/source/lenny/linux-2.6, trocando “lenny” no link pelo codinome da sua versão.

Agora, vamos extrair o código-fonte para /usr/src/:

# tar xvzf linux-2.6_2.6.26.orig.tar.gz -C /usr/src/

Você pode, se preferir, mudar o nome do diretório do seu kernel:

# cd /usr/src/

# mv linux-2.6_2.6.26 kernel-otimizado

Agora, considerando que mudamos o nome para “kernel-otimizado”, vamos entrar neste diretório e aplicar os patches:

# cd kernel-otimizado

# python /usr/src/kernel-patches/all/2.6.26/apply/debian

Depois de terminar o processo, podemos configurar o kernel. A configuração não é o foco deste artigo, entretanto, vou sugerir pequenas modificações que garantem um efeito real no desempenho da máquina. Primeiramente, vamos importar a configuração do kernel padrão do Debian:

# cp /boot/config-`uname -r` .config

Abra o configurador menuconfig:

# make menuconfig

Um menu configurável deve ter sido exibido, você pode navegar por ele pelas setas do teclado. As seleções básicas são Y( compilado como built-in), N (não compilar) e M (compilar como módulo). Primeiramente, vá o menu “Processor Type and Features” e:

1 – Se não tem um processador com vários núcleos, desmarque o item “Symmetric multi-processing support”

2 – Configure o item “Processor Family” para o seu processador, ou o mais proximo dele.

3 – Desmarque, se estiver marcado, o item “Generic x86 support”

4 – Altere o “Preemption Mode” para “Voluntaru Kernel Preemption (Desktop)”

5 – Altere o “Timer frequency” para 1000hz se usa Desktop, ou deixe em 250Hz ou 100Hz se usa um Laptop

6 – Se tem menos que 1Gb de memória RAM, altere o item “High Memory Support” para “off”

Essas modificações visam otimizar a compilação (selecionando o processador correto), reduzir recursos desnecessários e aumentar a responsividade do sistema (Kernel Preemption e Timer Frequency). O motivo para não se usar um Timer Frequency tão alto em laptops é que isso aumenta o uso da bateria, diminuindo o tempo de uso útil.

Volte ao menu principal selecionando exit apenas uma vez. Agora vá até “Kernel Hacking” e desmarque o item “Kernel Debugging”. Volte ao menu principal, selecione o item “Save an alternate Configuration File” e de enter. Ele vai perguntar se você deseja salvar a configuração em “.config”, apenas confirme com outro enter. Depois disso, saia do configurador selecionando exit.

De volta ao terminal, vamos voltar à compilação propriamente dita. Vamos compilar o kernel com o utilitário kernel-package, que cria um pacote .deb com o novo kernel, facilitando muito a instalação ou posterior remoção dele no futuro. Para iniciar a compilação, digite:

# make-kpkg --initrd kernel_image

Agora espere o processo terminar, o que depende da velocidade do seu computador e das opções selecionadas. Depois de concluído, vamos instalar o novo kernel:

# cd /usr/src/

# dpkg -i linux-image*.deb

Pronto! Agora basta reiniciar e selecionar o seu novo kernel na inicialização. Espero que o artigo tenha ajudado, eu tive certa dificuldade em encontra um meio de realizar este processo, espero ter sido claro. :)

8 Respostas para "Compilando um kernel com patches Debian"

[...] por Bruno Tsubouchi Yporti (yportimdΘgmail·com) – referência [...]

[...] por Bruno Tsubouchi Yporti (yportimdΘgmail·com) – referência [...]

“3 – Desmarque, se estiver marcado, o item “Generic x86 support””

Por que tenho que desmarcar isso? Essa opção não ajuda em nada não?

Resposta:

Caios, essa opção faz com que otimizações mais genéricas sejam usadas, de modo a funcionar em uma gama maior de processadores. O próprio Debian desativa essa opção na variante 686 do kernel.

Veja um trecho do Linux Kernel in a Nutshell sobre isso:

Generic x86 support

Instead of just including optimizations for the selected x86 variant (e.g., PII, Crusoe, or Athlon), include some more generic optimizations as well. This will make the kernel perform better on x86 CPUs other than the one selected.

This is really intended for distributors who need more generic optimizations.

Até mais e obrigado pela visita.

Um médico que hackeia seu Linux! Muito bom, mesmo :-)

[]’s

ae sunitão boa !!ta feito aqui,muito bom mesmo!!

Muito bom!
obrigado pela dica. principalmente sobre o Timer frequency (System Timer Resolution)! eu tinha aumentado pra 1000Mhz em meu Notebook (ja usava no Desktop) mas nem me dei conta da bateria..rsrs

valeww mesmo!!

Deixe uma resposta