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.
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
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
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.
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.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Nenhum comentário:
Postar um comentário