Compilando kernel no Debian Squeeze

Veremos como compilar o kernel no Debian. Venho utilizando este tipo de compilação faz anos, com pequenas alterações em um comando ou outro. Ainda temos, no artigo, algumas sugestões de configuração no menuconfig do kernel.

[ Hits: 21.967 ]

Por: Buckminster em 20/02/2013


Procedimentos



1. Instalar os pacotes necessários:

# apt-get update
# aptitude safe-upgrade


Tem alguns pacotes a mais do que o necessário, mas neste caso, o que abunda não prejudica.

# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip expectk libncurses5-dev dpatch udev

2. Fazer o download do kernel desejado no site kernel.org.

O download pode ser feito via navegador ou pelo terminal. No terminal, utiliza-se o pacote wget:

# wget http://caminho_completo_do_kernel

Exemplo:

# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.6.tar.bz2

Obs.: O kernel será baixado no diretório/pasta onde você estiver.

# ls  #Para ver o arquivo baixado

3. Descompactar o arquivo do kernel:

# tar -jxvf nome_do_arquivo.tar.bz2  #Para arquivos: .tar.bz2
# tar -vzxf nome_do_arquivo.tar.gz  #Para arquivos: .tar.gz
# ls  #Para ver o arquivo descompactado

4. Copiar o kernel para o diretório /usr/src (diretório/pasta padrão de compilação do kernel no Debian):

# cp -R linux-x.x.x /usr/src
# cd /usr/src  #Entrar no diretório
# ls  #Verificar se o arquivo foi copiado

5. Nas opções de configuração (make menuconfig), as opções marcadas com "M" indicam que a instalação se dará como módulos, ou seja, não farão parte do bloco monolítico do kernel.

As opções marcadas com "*" (asterisco) indicam que serão instaladas dentro do kernel, ou seja, farão parte do bloco monolítico do kernel, e os drivers e módulos iniciarão junto com o sistema. Em alguns casos, isto é interessante para melhorar o desempenho.

Executar os comandos abaixo em sequência (aguardar o final após cada comando e sempre ler as mensagens de retorno para ver se deu algum erro):

# ln -s linux-x.x.x linux  #Cria um link simbólico necessário para a compilação
# ls  #Confirmar se o arquivo foi criado
# cd linux  #Entra no diretório criado
# make-kpkg clean  #Limpa prováveis compilações anteriores
# make mrproper  #Limpa prováveis compilações anteriores
# make menuconfig  #Entra nas configurações do kernel

Para alterar de "M" para "*" e vice-versa, é só pressionar a barra de espaços.

Vá em "Processor type and features", e marque (barra de espaços) a opção que corresponde ao processador da máquina.

Mais abaixo, vá em "Timer frequency". Se a sua instalação for do tipo servidor marque, a opção 100 HZ (isso melhorará o tempo de resposta do servidor para as requisições). Para Desktop, deixe como está.

Retorne ao menu principal.

Vá em: Networking support → Networking options → Network packet filtering framework (netfilter) → IP: netfilter configuration

Verifique se "IPv4 connection tracking support (required for NAT)" está marcada.

Mais abaixo, marque as opções:
IPv4 NAT
MASQUERADE target support
NETMAP target support
REDIRECT target support

Volte ao menu principal.

Vá em "File Systems", marque os sistemas de arquivo utilizados no particionamento da instalação com: "*"

Mais abaixo, vá em "Native language support" e marque com "*" as opções:
Codepage 860 (Portuguese)
ASCII (United...)
NLS 8859-1 (Latin 1, ...)
NLS UTF-8

Retorne ao menu principal dando EXIT. Após o último EXIT, aparecerá a janela "Do you wish...", deixe como: "Yes"

Compilação

6. Compile:

# make config_debug_section_mismatch=y  #Compila e previne possíveis erros durante a compilação, deverá demorar de uma a duas horas
# make modules  #Compila os módulos
# make modules_install  #Instala os módulos
# make install  #Instala o kernel
# cd /lib/modules  #Entrar no diretório
# ls  #Confirmar que foi criado o arquivo x.x.x, no caso, 3.7.6
# mkinitramfs -o /boot/initrd.img-x.x.x /lib/modules/x.x.x  #Cria a imagem do kernel
# cd /boot  #Entrar no diretório /boot e conferir se o arquivo foi criado
# cd  #Entra no diretório raiz
# update-grub  #Atualiza o GRUB
# shutdown -r now  #Reinicia

Ao reiniciar, o novo kernel deverá aparecer nas opções do GRUB.

Depois, atualize o sistema (opcional):

# aptitude update
# aptitude safe-upgrade


Em caso de erro em alguma etapa da compilação:
  • Apague os arquivos criados do novo kernel dentro dos diretórios: /boot e /lib/modules
  • Recomece a partir do comando: make-kpkg clean (estando dentro do link: linux)

E seja feliz com seu novo e atualizado kernel.

   

Páginas do artigo
   1. Procedimentos
Outros artigos deste autor

IPv6, DNSv6 e DHCPv6

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Instalação do Comodo Antivirus para Linux (CAVL) resolvendo o problema de dependências

Compilação de Kernel

Como utilizar de forma correta os repositórios e pacotes Backports

Leitura recomendada

Suporte a SATA NCQ em chipset NForce

Slackware 13 - Compilando o kernel 2.6.32rc6

Mascarando conexões PPTP de clientes

Kernel 2.6 hacks

Kernel v3.x no Debian - Compilação em 7 passos práticos

  
Comentários
[1] Comentário enviado por nicolo em 20/02/2013 - 12:16h

Tá legal, mas usou o kpkg, porque não acrescentou o comando kpkg para compilar os deb e assim guardar no novo kernel instalável?
Bom artigo, bem didático.

[2] Comentário enviado por Buckminster em 21/02/2013 - 04:05h

[1] Comentário enviado por bakunin em 20/02/2013 - 12:16h:

Tá legal, mas usou o kpkg, porque não acrescentou o comando kpkg para compilar os deb e assim guardar no novo kernel instalável?
Bom artigo, bem didático.

Obrigado. Eu poderia ter utilizado o Kpkg, mas prefiro fazer dessa maneira. É questão de gosto.

[3] Comentário enviado por Buckminster em 21/02/2013 - 19:12h

Logo depois de MAKE MENUCONFIG faltou o seguinte, devendo ficar assim:

Para alterar de “M” para “*” e vice-versa é só pressionar a barra de espaços.
Vá em “Processor type and features” > enter
E marque (barra de espaços) a opção que corresponde ao processador da máquina.
Volte ao menu principal.
Depois vá em “Preemption Model...” > enter, e se a máquina for um servidor marque “No Forced Preemption (Server)”, se for Desktop deixe como está.
Mais abaixo vá em “Timer frequency” > enter

Depois é só continuar normalmente.
Desculpem.

[4] Comentário enviado por nilsoncsroz em 22/02/2013 - 00:26h

tentei com o kernel 3.7.9 amd64 x86_64 debian squeeze saiu esse erro
IHEX firmware/mts_gsm.fw

IHEX firmware/mts_edge.fw

H16TOFW firmware/edgeport/boot.fw

H16TOFW firmware/edgeport/boot2.fw

H16TOFW firmware/edgeport/down.fw

H16TOFW firmware/edgeport/down2.fw

IHEX firmware/edgeport/down3.bin

IHEX2FW firmware/whiteheat_loader.fw

IHEX2FW firmware/whiteheat.fw

IHEX2FW firmware/keyspan_pda/keyspan_pda.fw

IHEX2FW firmware/keyspan_pda/xircom_pgs.fw

IHEX firmware/yam/1200.bin

IHEX firmware/yam/9600.bin

make[1]: Saindo do diretório `/usr/src/linux-3.7.9'

/usr/bin/make ARCH=i386 \

-C Documentation/lguest

make: *** Documentation/lguest: Arquivo ou diretório não encontrado. Pare.

make: ** [debian/stamp/build/kernel] Erro 2

[5] Comentário enviado por guilherme90 em 22/02/2013 - 11:20h

Muito bom este tutorial. Meu Kernel está antigo (2.6.32) e pretendo atualizado. Por motivos de erros, irei virtualizar o Debian 6 e realizar os testes, pra depois faze-lo no meu nativo!

Obrigado por compartilhar, abraço.

[6] Comentário enviado por Buckminster em 22/02/2013 - 19:01h

nilsoncsroz:

O kernel amd é para sistemas 64 bits.
O teu Squeeze é 64 bits?
Em que parte da compilação deu esse erro?
A sua máquina é um notebook?

Independentemente das perguntas acima, limpe a instalação, tente de novo, mas logo depois de "make menuconfig" dê os seguintes comandos:
#mkdir Documentation/lguest
#echo all:>>Documentation/lguest/Makefile
e depois prossiga normalmente.
Você está tentando instalar um kernel otimizado?

[7] Comentário enviado por HerrSchafer em 15/06/2013 - 15:25h

Nada compilar o kernel para fritar o processador!

https://lh3.googleusercontent.com/-nqGKcdh5CtY/UbywrsL8eII/AAAAAAAAF3I/aPn5So9VPUk/w1362-h766-no/Cap...

eu queria saber porque ele não criou uma versão amd64...

root@i3note:/usr/src/linux# cd /lib/modules
root@i3note:/lib/modules# ls
3.2.0-4-amd64 3.9.6
root@i3note:/lib/modules#

[8] Comentário enviado por Buckminster em 16/06/2013 - 14:09h


[7] Comentário enviado por HerrSchafer em 15/06/2013 - 15:25h:

Nada compilar o kernel para fritar o processador!

https://lh3.googleusercontent.com/-nqGKcdh5CtY/UbywrsL8eII/AAAAAAAAF3I/aPn5So9VPUk/w1362-h766-no/Cap....

eu queria saber porque ele não criou uma versão amd64...

root@i3note:/usr/src/linux# cd /lib/modules
root@i3note:/lib/modules# ls
3.2.0-4-amd64 3.9.6
root@i3note:/lib/modules#


Hoje em dia é praticamente impossível fritar um processador compilando um kernel. Ele utiliza toda a capacidade do processador (e depende do processador) porque o kernel, logicamente, trabalha diretamente com o hardware.

E não criou uma versão amd64 porque você não colocou amd64 no comando

# mkinitramfs -o /boot/initrd.img-x.x.x /lib/modules/x.x.x-amd64

[9] Comentário enviado por mrxrobot em 03/02/2014 - 17:52h

Ja adicionei aos favoritos :-)

[10] Comentário enviado por rodrigocontrib em 13/08/2014 - 17:56h

Gostei, bom, estou no meu laboratorio tentando compilar um kernel novo para o meu firewall, estou utilizando o Virtualbox 4.3.14 e o kernel que estou tentando compilar é o mais recente : 3.15.9 não funcionou, verei com mais detalhes e posto alguma coisa aqui.

Obrigado pela dica.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts