segunda-feira, 23 de agosto de 2010

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

Nenhum comentário:

Postar um comentário