Compilando Kernel no CentOS 6.0

Artigos e Dicas sobre compilação de Kernel são normalmente postados utilizando-se distros como Debian ou seus derivados. Minha motivação principal para este artigo é mostrar como fazer uma compilação de Kernel no sistema GNU/Linux CentOS 6.0, bastante usado em servidores Linux.

[ Hits: 31.586 ]

Por: Perfil removido em 10/01/2012


Instalando dependências e obtendo o source do Kernel



A compilação do Kernel é feita por vários motivos, entre eles:
  • Suporte a um maior número de Hardwares possíveis;
  • Manter somente funcionalidades que são necessárias para funcionamento do sistema;
  • Deixar seu Kernel mais rápido e enxuto;
  • Prover mais funcionalidades para segurança do sistema.

Em qualquer distribuição GNU/Linux, a única coisa que pode diferir na compilação do Kernel são as dependências, como: pacotes necessários, bibliotecas usadas, compiladores, etc.

Instalação das dependências

Nesta parte, para compilação do Kernel, vou tratar de descrever a instalação dos pacotes necessários para compilação do Kernel e sua instalação.

Usando o usuário root, instale os pacotes usando o gerenciador de pacotes yum:

# yum install gcc bison ncurses-devel make gcc-c++

Obtendo o Kernel a ser compilado

O Kernel usado para este artigo foi a versão 3.4, mas pode utilizar o mesmo método em outras versões do Kernel.

Digite no terminal o comando abaixo para baixar o source do Kernel 3.4:

# cd /usr/src
# wget
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.tar.bz2

Após baixar o arquivo, copie o mesmo para o diretório /usr/src e descompacte-o usando o usuário root, depois acesse o diretório criado:

# tar -jxvf linux-3.4.tar.bz2
# cd linux-3.4


    Próxima página

Páginas do artigo
   1. Instalando dependências e obtendo o source do Kernel
   2. Configurando e instalando
Outros artigos deste autor

Configurando suporte Firebird no LAMP (xampp) em Lubuntu

Configurando HD via porta USB no Linux

Instalando o modem Onda MSA110UP em distribuições Linux que utilizam o NetworkManager

Pós-instalação do Arch Linux

Liberdade, usuários e políticas de manutenção de ignorância

Leitura recomendada

Recompilando kernel 2.6 no Debian Lenny

Guerra Infinita, uma análise da Ciência da Computação

Compilando Kernel 2.6.34 usando Debian Lenny

Slackware 10.2 com dois kernels na mesma instalação

Kernel Hacking (RootKits)

  
Comentários
[1] Comentário enviado por levi linux em 12/01/2012 - 09:49h

Parabéns, muito bom o seu artigo, bastante didático. Realmente a maioria dos artigos e dicas sobre compilação de Kernel envolvem distros debian-like. Não conhecia esse comando "dracut".
Favoritado!

[2] Comentário enviado por elionay em 17/01/2012 - 02:22h

muito bom artigo e concordo com o levi_linux
Favoritado!

[3] Comentário enviado por erikogp em 18/06/2012 - 13:07h

Olá, segui o tutorial e me embananei ao editar o arquivo /boot/grub/grub.conf. Agora ao iniciar me deparo com a mensagem: "Booting CentOS (2.6.39.4el6.i686) daí quando passa dessa mensagem, vem a mensagem de erro: "Error 15: File not Found". Press any key to continue.

Como faço para voltar ou consertar?

[4] Comentário enviado por removido em 18/06/2012 - 16:42h

na hora do boot de "ENTER" e escolha o kernel antigo. e corrija.

pela mensagem provavelmente um dos arquivos (kernel ou initrd) não foram indicados corretamente no arquivo de configuração, ai você precisa indicar a localização correta do arquivo assim como o nome do mesmo. isso é se você copiou o arquivo do kernel, initrd.img e os outros arquivo para /boot.

[5] Comentário enviado por erikogp em 18/06/2012 - 22:28h

Acho que foi isso mesmo, na hora de configurar o grub. Nunca tinha feito isso, daí fui seguindo o tutorial, mas no tutorial não tinha explicação sobre a edição do grub.conf, daí me embananei. Eu salvei uma cópia do grub.conf antes de modifica-lo, agora vou ver se consigo chegar até ele usando um outro cd de boot. Eu dou ENTER no boot e tem 2 opções mas nenhuma delas vai adiante, só retorna a mesma mensagem de erro.



[4] Comentário enviado por eabreu em 18/06/2012 - 16:42h:

na hora do boot de "ENTER" e escolha o kernel antigo. e corrija.

pela mensagem provavelmente um dos arquivos (kernel ou initrd) não foram indicados corretamente no arquivo de configuração, ai você precisa indicar a localização correta do arquivo assim como o nome do mesmo. isso é se você copiou o arquivo do kernel, initrd.img e os outros arquivo para /boot.


[6] Comentário enviado por removido em 18/06/2012 - 22:58h

amigo erikogp,

após executar esse passo do artigo:

# make modules_install

execute o comando abaixo:

# make install

e depois reinicie a máquina, na hora do boot de "ENTER" quando estiver fazendo a contagem para carregar o kernel, então veja se o novo kernel está aparecendo, caso não esteja vai ter que editar o arquivo de configuração do grub mesmo.

[7] Comentário enviado por erikogp em 21/06/2012 - 13:03h

Isso mesmo amigo. Fiz igual dito acima, tive que editar o arquivo de configuração do grub. Na verdade só voltei o antigo, e está funcionando, só que com o kernel antigo. Vou ter que estudar mais sobre o grub, pois o problema é na edição dele. Amigo, seria demais pedir para vc enviar as linhas de configuração do grub para funcionar de acordo com o tutorial acima? Segui a risca tudo no tutorial, só ficou faltando a configuração do grub, pois não é mostrado aí como se faz. Se tiver como vc enviar eu agradeço.

[8] Comentário enviado por removido em 21/06/2012 - 13:40h

No artigo não foi abordado a configuração do grub, pois para fazer a mesma seria necessário saber o dispositivo no qual está armazenado a imagem do kernel, qual é o dispositivo onde está armazenado o sistema. você leu e seguiu a dica do ultimo post postado por mim acima ?

[9] Comentário enviado por serph em 13/07/2012 - 22:08h

pra fazer esse initrd, eu inseri a seguinte sintaxe estando no diretório /usr/src/linux-2.6.39.4:

#mkinitrd /boot/initrd-2.6.39.4.img 2.6.39.4

depois editei o vim /boot/grub/grub.conf:

default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.39.4)
root (hd0,1)
kernel /boot/vmlinuz-2.6.39.4 ro root=UUID=5d353de2-8c2f-4491-aca1-1594a0c6dcd7 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=br-abnt2 LANG=pt_BR.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_NO_LVM rd_NO_DM rhgb quiet
initrd /boot/initrd-2.6.39.4.img

[10] Comentário enviado por removido em 15/11/2012 - 15:36h

Artigo atualizado na data 15-11-2012.

[11] Comentário enviado por wagneralves em 06/03/2013 - 14:11h

Olá Pessoal,

Muito interessante o artigo bem diferente de outros bem complicados, aproveitei o artigpo acima e criei um script simples para quem quiser automatizar o processo fiz rapidão aki no trabalho mas dependendo da galera posso melhorar segue para quem quiser



#!/bin/bash

yum install -y gcc bison ncurses-devel make gcc-c++
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.tar.bz2
tar -jxvf linux-3.4.tar.bz2
cd linux-3.4
cp /boot/config-$(uname -r) ./.config

echo "Na tela de configuração do kernel, vá na opção:

? Load an Alternate configuration File


Digite: .config

E dê um OK.

Em seguida, salve a configuração na opção e saia da configuração do kernel:

? Save an Alternative Configuration File


Caso deseje alterar as configurações, digite: make menuconfig novamente, faça as alterações e salve."

sleep 5

make menuconfig

echo "Seu processador é dual core? :"
echo "y/n"
read proc
if [ $proc == n ] ;

then
make

else

make -j4

fi

make modules_install

make install

result=`ls -1 /boot | grep -i initramfs-3.4.0.img`

if [ $result == 'initramfs-3.4.0.img' ] ;

then

echo "Kernel Compilado com Sucesso! "

else

echo "Copiando o initramfs-3.4.img para o diretório /boot"

dracut /boot/initramfs-3.4.img 3.4

fi

echo "Deseja que o novo kernel inicialise por padrão? :"
echo "y/n"

read kernel

if [ $kernel == 'y' ] ;

then

sed -i 's/default=1/default=0/' /boot/grub/grub.conf

echo "O kernel padrão foi alterado para 3.4"

else

echo "O kernel padrão é "`uname -r`" "

fi

echo "Deseja reiniciar o sistema? :"
echo "y/n"

read sistema
if [ $sistema == 'y' ] ;

then

echo "Reinicializando o sistema!"

init 6

else

echo "O ideal seria reiniciar o sistema"

echo "BYE"

fi


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts