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.754 ]

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

Compilação de Kernel

ClamAV, o kit de ferramentas antivírus

Compilação e instalação do Vim e habilitando a copiar e colar com o mouse

Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário

Compilando o Squid3

Leitura recomendada

Aventuras e desventuras com o kernel 2.6

Como instalar/atualizar seu kernel

Recompilando kernel 2.6 no Debian Lenny

Compilando kernel 2.6.11 no Slackware 10

Compilação e instalação do kernel 2.6.xx no Slackware

  
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