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: 75.006 ]

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

Atualizando o kernel no Slackware

Compilando ou atualizando um kernel Linux

Kernel 2.6.9 no Slackware

Slackware com kernel 2.6.10 - passo a passo

Compilando kernel com suporte a POM (path-omatic) e Layer7 no Debian e Slackware

  
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?

[email protected]

[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 [email protected]

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