Linux Tech Hacks

Your Linux tech hacks and Tips

recompilação do kernel 2.6.33.3

recompilação do kernel 2.6.33.3



Bom!

Resolvi colocar esse artigo sobre recompilação de kernel, por que um idiota que trabalha comigo ( e considerado bom na empresa) me disse que a recompilação do kernel no linux não funciona. Insistindo com ele para que me explicasse o por que, por fim ele ficou nervoso dizendo que não funciona.
Já a recompilação no BSD funciona.
Outras curiosidades que ele disse é que ele fez a recompilação via "apt-get" e funcionou ¬¬.
Só para matar a curiosidade dele (e caso eu estiver errado, aceito criticas de terceiros, considero a ajuda) é que os pacotes .deb possuem o código fonte embutido dentro dele. Você pode descompactar o pacote ".deb" com o comando "ar" da seguinte maneira:
$ ar -x linux-libc-dev_2.6.26-22lenny1_i386.deb
você obterá os seguintes pacotes:
debian-binary , data.tar.gz e control.tar.gz ; sendo que o data.tar.gz é o codigo fonte original do programa a ser instalado, podendo ser descompactando e entrando no diretório "/usr" que aparecerá e fazer todo processo de compilação.
Bom, para terminar isso coloquei as imagens anexadas mostrando o kernel no diretório /boot sendo que Debian Leny vem com o kernel 2.6.26-2-686 por padrão. Eu estou utilizando o 2.6.33.3 e recompilando o 2.6.34 no exato momento em que escrevo esse artigo.
A intenção aqui é simplesmente desmistificar o que ele disse e tirar esse mito.


Boot


2

Como recompilar o kernel Linux

 As informações aqui são para o kernel 2.4 e 2.6.
 Primeiro, devemos configurar o kernel; para isso, existe quatro aplicativos que podem ser escolhidos. São eles:
$make config (esse é o configurador padrão do Linux, porém bem demorado devido ser totalmente em modo texto).
 Os próximos utilizam bibliotecas que geram uma interface amigável, facilitando a instalação.
$make menuconfig (utiliza a biblioteca NCurses)
$make gconfig (utiliza a biblioteca GTK)
$make xconfig (utiliza a biblioteca QT, a mesma da interface KDE).

 Um bom artigo para configurar o kernel está na em:
 http://br-linux.org/tutoriais/002942.html

 Depois de configurado o kernel, você deve fazer o seguinte:
 Criar a imagem do kernel compactada com os seguintes comandos
 $make clean (para descartar os modulos que não serão compilados)
 $make dep (para gerar a arquitetura do kernel, no meu caso I686, já não é mais necessário fazer isso)
 $make bzImage ou $make zImage (a diferença é o bz é para o bzip2 e o z para gzip).
 compilar os modulos:
  $make modules 
 E instalá-los
 #make modules_install (lembrando que deve ser root para isso).
 Depois disso, digite
 #make install (também devendo ser administrador para essa operação) para que o sistema crie o system.map, o kernel com o nome de vmlinuz-x.y.z (sendo que x.y.z se refere a versão do kernel) e o config do kernel.
 Feito isso, dentro de /boot, digite
 #mkinitramfs -o initrd.img-x.y.z -v x.y.z para criar a imagem de disco ram (initrd) para o kernel. Ou a opção update-initramfs -c -k 2.6.33.3 -v que fará o mesmo.
 Um informação muito interessante que obtive foi que o comando "mkintrd" está defasado, sendo substituído pelo "mkinitramfs", por isso utilizado nessa postagem além de vir por padrão no Debian.
 Um observação que deve ser feita é que, se notarem, eu repeti o x.y.z. Funciona da seguinte maneira: quando vou gerar o initrd, além de indicar para qual kernel, tenho que indicar aonde ele vai buscar os módulos dentro de /lib/modules/. Por exemplo, como recompilei o 2.6.33 com os seus módulos dentro de "/lib/modulos/2.6.33", então tenho que gerar  o initrd.img-2.6.36 que irá buscar os modulos 2.6.33 (está gravado dentro do initrd que ele irá buscar automáticamente dentro de /lib/modules). Caso não passe esse parametro,por não ter sido indicado aonde buscar os módulos, você receberá uma mensagem como:
 "FATAL ERROR"
  "MODULES NOT FOUNT"
  Por isso deve passar o segundo parametro igual. Esse segundo parametro é só uma indicativa de qual módulos utilizar.
 Para terminar, se você estiver utilizando o grub como carregador de boot padrão, utilize o comando 
#update-grub que o sistema irá se encarregar de atualizar a lista de kernel dentro de /boot/grub/menu.lst (já no ubuntu 10.04 a hitória muda um pouco).
 Caso queiram me ajudar a escrever melhor este artigo sobre recompilação de kernel, fico feliz se puder receber essa contribuição, por que a intenção é realmente escrever o artigo que vai ajudar a todos com qualquer problema que apareça, até mesmo os novatos.
 O próximo artigo que pretendo escrever sobre o mesmo assunto é sobre o drive de DVD que estou tendo um pequeno problema.

 Creative Commons License

Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Siga-nos