Como compilar o kernel do Linux (testado e revisado)

Esse artigo vai afastar o medo que usuários tem do Kernel Panic. Tentei explicar de modo didático como como ter um resultado desejado por todos. No decorrer da semana testei vários artigos do Viva o Linux e este texto retrata minha conclusão.

[ Hits: 77.368 ]

Por: Marcelo Gonçalves em 15/11/2008


Compilando o kernel



Antes de começar o compilação do kernel vou pedir para todos estarem cientes dos hardwares da máquina que será compilada. Para ter certeza basta realizar os seguintes comandos:

lspci
$ cat /proc/pci
(com esse comando você estará ciente com o hardware em geral)
cat /proc/cpuinfo (comando para ver a arquitetura do processador)

cat /proc/meminfo
ou
free -m (para ver sua RAM)

Depois dessa pequena consulta vamos para a parte que realmente interessa:

Passo 1:

Primeiramente vocês terão que baixar o código-fonte do kernel desejado, pelo meu breve conhecimento o mais estável do momento é o 2.6.24, pois alguns amigos me disseram que o 2.6.27 estava dando pau nas placas de rede.

Para baixar entre no seguinte site:

http://www.kernel.org/pub/linux/kernel/v2.6/

ou você pode usar o comando "wget" no terminal, mas isso é pra pessoas com um pouco mais de experiência.

Passo 2:

Depois da conclusão do download vocês terão que descompactar o arquivo tar do código-fonte. Mas lembre-se que isso terá que ser feito em root.

sudo su
# tar xjvf linux-2,6,24.tar.bz2 /usr/src


Obs.: O arquivo tem que ser compacto na pasta da arquitetura do kernel antigo: /usr/src

Passo 3:

É necessário criar um link para o novo kernel:

# ls -sf /usr/src/linux-2,6,24 /usr/src/linux

Com esse comando você criará uma nova pasta chamada "linux".

Obs.: Caso você já tenha essa pasta, terá que deletar ela:

# rmdir /usr/src/linux

E repita o passo anterior.

No término entre na pasta:

# cd /usr/src/linux

Passo 4:

Para personalizar seu kernel, entre no arquivo Makefile e altere o Extra Version:

Version=2
PATCHLEVEL=6
SUBLEVEL=24
EXTRAVERSION= -i386-1

Salve o arquivo.

Passo 5:

Nesse passo vamos baixar alguns arquivos para que a compilação seja realizada com sucesso.

No terminal digite:

* comandos para Debian, para outras distro pesquise como baixar esses arquivos.

# aptitude install initrd-tools
# aptitude install linux-initrd-tool


Esses pacotes serão de suma importância para configurar a imagem no GRUB.

Baixe os pacotes abaixo para trabalhar o config em modo gráfico, pois em texto será um tédio.

Caso você queira se aventurar no texto basta executar o:

# make config
Linux: kernel make config
ou baixe as bibliotecas para modo gráfico:

Para menuconfig:

# apt-get install libncurses5-dev

# make menuconfig
Linux: kernel make menuconfig
Para xconfig:

# apt-get install libqt3-mt-dev

# make xconfig
Linux: kernel make xconfig
Obs.: No Debian as dependências serão instaladas automaticamente.

Passo 6:

Agora iremos configurar o kernel:

# make menuconfig

Obs.: Para esse comando lembre que "*" são itens que serão incorporados no kernel e "m" serão modulares.

ou:

# make xconfig

Depois de configurar salve.

Passo 7:

Agora vem a compilação de verdade:

# make bzImage

Obs.: Tem que ser igual o "i", realmente é em maiúsculo, respeite as escritas do comando.

Pode ir tomar um café, pois dependendo da arquitetura do seu CPU isso vai demorar um pouco.

Passo 8:

Vamos ativar os módulos:

# make modules
Linux: kernel make modules
Passo 9:

Agora vamos instalar os módulos:

# make modules_install
Linux: kernel make modules_install
Demora um pouco também.

Passo 10:

Vamos copiar a imagem do novo kernel no /boot.

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.24-i386-1

# cp /usr/src/linux/System.map /boot/System.map-2.6.24-i386-1

Vamos criar um link para o System.map:

# ln -sf /boot/System.map-2.6.24-386-1 /boot/System.map

Para finalizar o vamos copiar o config para o boot:

# cp /usr/src/linux/.config boot/config-2.6.24-i386-1

Passo 11:

Vamos criar um initrd para execução do boot:

# mkinitrd -o /boot/initrd-2.6.24-i386-1.img 2.6.24-i386-1

Página anterior     Próxima página

Páginas do artigo
   1. Porque compilar o kernel
   2. Compilando o kernel
   3. Configurando o GRUB
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Slackware 10.2 com dois kernels na mesma instalação

Recompilando kernel 2.6 no Debian Lenny

Atualizando kernel de 2.4.31 para 2.6.13 no Slackware 10.2

Compile e empacote o kernel com processadores ociosos em sua rede utilizando distcc, ccache e kernel-package no Debian

Afinal, o que é o Ubuntu?

  
Comentários
[1] Comentário enviado por oliviofarias em 16/11/2008 - 01:08h

Bem amigo, nunca meti a cara pra aprender na unha a compilar um kernel.
Sempre li artigos e tutorias, só que nenhum me agradou e achei de forma (para usuários iniciantes) fácil de entende.
Já o seu está bem resumido e de fácil entendimento.
Este artigo está salvo para Domingo ter meu primeiro "Figth" com a compilação de um kernel.
Parabéns pelo artigo :c)

[2] Comentário enviado por marcelovegano em 16/11/2008 - 12:43h

[b]ERRATA [/b]

# tar xjvf linux-2,6,24.tar.bz2 /usr/src
# ls -sf /usr/src/linux-2,6,24 /usr/src/linux

O certo é trocar as vírgulas pelos pontos:


# tar xjvf linux-2.6.24.tar.bz2 /usr/src
# ls -sf /usr/src/linux-2.6.24 /usr/src/linux

[3] Comentário enviado por nicolo em 16/11/2008 - 16:43h

Muito bom, é o mesmo dos debians, já usei com sucesso em slackware 12, funciona. A grande dica é baixar o initrd-tools, sem o que a coisa não se completa. Precisa avisar os iniciantes que:
(i) os pacotes de compilação tem que estar instalados;
(ii) Depois de compilado, os módulos do kernel velho que foram compilados na instalaçao de programas, inclusive módulo de placa de vídeo, precisam ser recompilados, ou seja: precisa reinstalar esses pacotes.

Poderia indicar para começar com o config velho no make menuconfig e alterar só o que for necessário. Configurar do zero é para "majorgeeks". Claro que pode-se obter um resultado otimizado, mas o risco aumenta consideravelmente.
Parabéns.

[4] Comentário enviado por removido em 16/11/2008 - 18:20h

pessoalmente gostei !!!!!!!

[5] Comentário enviado por thiagofanfoni em 17/11/2008 - 09:15h

Realmente ficou muito legal, eu queria ter isso uns 2 anos atrás.
Só para deixar um pouco mais completo, são coisas que eu apanhei para descobrir:
Se você for recompilar um kernel para uma máquina que não usa LVM ou RAID, você não precisará do initrd , des de que a controladora de disco e o sistema de arquivos utilizado estejam marcados como built-in ( * ).
Se você tiver mais de uma placa de som, é legal marcar as 2 como módulo ( M ) , assim você conseguirá utilizar o alsaconf (do pacote alsa-utils).
Na parte de video é sempre legal marcar os módulos VESA e VGA.
Tem uma opção que eu não lembro onde fica (acho que em general) que é para acessar o arquivo de configuração do kernel que está rodando através do /proc , assim se você der um make mrproper você poderá recuperar o arquivo de configuração atraves do comanto zcat /proc/config.gz > /usr/src/linux/.config

[6] Comentário enviado por JotaCapa em 17/11/2008 - 12:17h

Gostava de colocar uma questão.

Após fazer o upgrade do Ubuntu do 8.04 para o 8.10 fiquei sem a possibilidade de gravar CD/DVD's. A questão que coloco, é será que esse procedimento dá para fazer a recompilação do Kernel de acordo com a minha máquina, e dessa forma o sistema passar a gravar CD/DVD's?

jose_azevedo2@hotmail.com

[7] Comentário enviado por brunaocomanda em 17/11/2008 - 15:29h

Bom artigo. A partir da série 2.6 do kernel, o "make bzImage" e "make modules" pode ser substituído apenas pelo "make". Este já faz os dois passos.

[8] Comentário enviado por marcelovegano em 28/02/2009 - 10:03h

o pacote initrd agora é o initramfs-tools

[9] Comentário enviado por alexandreromeu em 25/04/2009 - 03:41h

Bom dia!

Parabéns pelo artigo!

Depois de vários KernelS PanicS, dessa vez consegui compilar um kernel :)
Compilei a versão 2.6.28.
Ela tem suporte à wireless Realtek 8187B (notebook intelbras e alguns positivo).

Editado: Compilei no Debian Stable (5.01).

Algumas observações:

-Na correção da errata faltou trocar o "ls" por "ln" para fazer o link.
-Como vc disse, os pacotes "initrd" mudaram de nome, no meu caso, foi:
"linux-initramfs-tool" e "initramfs-tools"

Também precisei instalar o "make" e o "g++"
aptitude install make
aptitude install g++

Foi só seguir os passos, e quando reiniciei, pela primeira vez depois de tentar compilar não vi o "kernel panic" hahaha
Agora é só alegria.

Mais uma vez, parabéns pelo artigo e muito obrigado. Ajudou muito!

Alexandre Romeu

[10] Comentário enviado por len0n_16 em 05/02/2011 - 01:30h

os pacotes linux-initramfs-tool e initramfs-tools já vem instalados no debian stable 5.08 ? eu precisarei instalar primeiro o dash e o cramfsprogs? sou iniciante :) obrigado

[11] Comentário enviado por marcelovegano em 12/02/2011 - 14:51h

Caro amigo,

Eu sempre tive que instalar esses pacotes pelo apt-get , qualquer dúvida de compilação pode enviar um e-mail para eusouironico@gmail.com

Att.,

Marcelo Gonçalves

[12] Comentário enviado por marcelovegano em 12/02/2011 - 14:53h

ERRATA

ln -sf /usr/src/linux-2.6.24 /usr/src/linux


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts