Últimos bloggers

XSS - Um exemplo de ataque

Este artigo tem como...

Patrijosa | Patrício dos Santos

Leia mais

No So Dark Knight

Sim, eu sei que já...

seckt0r | Benone Marcos

Leia mais

Java: Tratamento de packages

Já apanhei 'surra' com uso...

snnangola | Nataniel Baiao

Leia mais

Carrers in Africa Recrutamento

Prezados Membros do Tian,  ...

Tian | Ana Chaves

Leia mais

Mais em: Patrijosa, Tian, Edy Virus, snnangola, Blog, seckt0r

100%
-
+
4
Show options
Compilar o Kernel no Ubuntu PDF Versão para impressão Enviar por E-mail
Escrito por Wanderley Ribeiro   
Terça, 11 Setembro 2007 17:25

Olá este é um básico tutorial sobre como compilar o kernel do Linux, para muitos essa parece ser uma difícil tarefa, também conhecida como "tarefa para nerds", mas não é bem assim, existe sim o perigo e muita das vezes é exatamente nessa hora que a "Lady Murphy" senta-se do nosso lado para fazer o seu trabalho. Porém, só saberemos a real complexidade desta tarefa se nos propusermos a enfrentá-la. Por isso vamos ao que interessa:





1º DOWNLOAD DO KERNEL

O kernel atual que estou a usar é o 2.6.20-16 e pretendo atualizar para a última versão 2.6.22.6 (liberada em 31/08/07), a primeira coisa que devemos fazer é acessar o site oficial do kernel para então fazermos o download: http://kernel.org

O kernel deverá ser salvo no diretório /usr/src porém, é um diretório que não tem permissão de escrita para qualquer usuário, o que pode impedir que o download direto para essa pasta seja efectuado com sucesso, caso isso ocorra, devemos então fazer o download para qualquer outro diretório onde tenhamos permissão de escrita por exemplo: /home/wanderley/Desktop/kernel_novo. Criei uma pasta espessífica para o novo kernel no meu ambiente de trabalho, após o download ser concluído vamos então copiar o novo kernel para a sua pasta de destino, faremos isso através do console/terminal usando o comando 'cp', isso ficaria mais ou menos assim:

cp /home/wanderley/Desktop/kernel_novo/linux-2.6.22.6.tar.bz2 /usr/src/

Geralmente as pessoas costumam pensar que quando fazemos o download do ficheiro linux-2.6.22.6.tar.bz2 estamos a baixar exatamente o kernel funcional  então só temos que instalá-lo, na verdade não é bem assim, o que existe no ficheiro linux-2.6.22.6.tar.bz2 é o código fonte do kernel por isso ele precisa ser compilado para então depois ser instalado, ou seja, é exatamente o mesmo processo de instalação de um programa no linux, em que seja disponibilizado somente o código fonte.

No Ubuntu 6.06 - (Edgy Eft),  parece que existe um pequeno problema com  o interpretador de comandos /bin/dash quando se pretende compilar determinados programas, então vamos criar um novo link simbólico do /bin/sh para o /bin/bash, isso pode ser feito através do seguinte comando:

Primeiramente removemos o /bin/sh
rm -f /bin/sh

E logo em seguida criamos o novo link:
ln -s /bin/bash /bin/sh

2º INSTALAÇÃO DOS PROGRAMAS NECESSÁRIOS PARA COMPILAR O KERNEL

Alguns programas são necessários para podermos compilar o kernel, um exemplo? Um compilador, se queremos compilar um programa, logo, precisamos de um compilador que no nosso caso será o gcc, aqui vai uma lista do programas que precisaremos instalar antes de compilar o kernel:

- kernel-package:  serve para criar uma imagem do kernel ao executar o make-kpkg num diretório com o source do kernel.

- gcc: é um conjunto de compiladores de linguagens de programação que foi produzido pelo projeto GNU, inicialmente era somente um compilador para c, porém depois de algum tempos algumas melhorias foram feitas e hoje suporta mais linguagens como: Fortran, C++, Java e entre outras.

- Ncurses é uma biblioteca que provê uma API para o desenvolvimento de interfaces em modo texto. Garante também uma otimização quanto às mudanças de telas, reduzindo a latência quando se utiliza acesso remoto via shells. O pacote libncurses5-dev nada mais é do que as bibliotecas de desenvolvimento e documentos para o ncurses. De forma geral o ncourses é que permite o uso de janelas e opções padronizadas de teclado no terminal (quando vamos escolher os modulos do Kernel).

- fakeroot:  executa comandos em um ambiente simulado como se fosse o root.

- wget: é um programa que nos permite fazer o download de páginas web e ficheiros hospedados em páginas!

Podemos fazer o download do kernel através do wget:

cd /usr/src (nos posicionamos no diretório de destino do kernel)

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

- bzip2:  é um software compactador de arquivos.

Agora vamos então instalar esses programas:

apt-get update (para atualizar a lista de pacotes)

apt-get install kernel-package gcc libncurses5-dev fakeroot wget bzip2

Em determiandos casos alguns programas podem já estar instalados, como por exemplo o gcc.


3º DESCOMPACTAR O KERNEL


tar xjfv linux-2.6.22.6.tar.bz2

Agora vamos criar um link simbólico do diretório linux-2.6.22.6/ para um novo diretório 'linux':

ln -s linux-2.6.22.6.tar.bz2 linux

cd /usr/src/linux

O nosso sistema possui um ficheiro com a configuração do kernel antigo, podemos usar esse mesmo ficheiro como ponto de partida para o novo kernel (essa escolha é opcional)

cp /boot/config-`uname -r` ./.config

(o parametro `uname -r` vai apresentar a versão do kernel atual) e esse arquivo será copiado para ./.config que nada mais é do que o diretório em que nós nos encontramos (/usr/src/linux). Para verificar a existência do .config no diretório /usr/src/linux é só escrever 'ls -a' no termial.

Agora execumantos:

make menuconfig

O comando 'make menuconfig' é usado para nos apresentar as opções do kernel que queremos ativar/desativar. Existe um outro comando que faz a mesma coisa mas em modo gráfico que o o 'make xconfig'. (Mas no nosso caso usaremos o make menuconfig).

Feito isso vamos escolher o que nos interessa no novo kernel. Quando a opção tiver um '*' quer dizer que será embutido no sistema, se estiver com 'M' significa que será utilizável por módulo, e para não usar é só deixar em branco, para selecionar ou não uma opção é só pressionar a tecla [SPACE] do teclado (essa tecla é a que usas para dar espaço entre uma palavra e outra) :)

Bom, depois de escolher o que vai ser carregado pelo novo kernel, escolhes a opção Carergar um novo arquivo de configuração e OK


4º EXECUÇÃO DA COMPILAÇÃO

make-kpkg clean

make-kpkg clean: elimina os arquivos que foram criados durante a montagem do novo kernel, ou arquivos de compilações anteriores.

fakeroot make-kpkg --initrd --append-to-version=-linux2.66.2.6 kernel_image kernel_headers

Repare que depois de version=- vem a versão do novo kernel, e precisa ser escrita com letras minúsculas e nada de espaços! A separação entre pontos (.) é o ideal. E depois do nome da nova versão tem que escrever kernel_image kernel_headers.

Agora meu amigo o kernel será compilado, enquanto isso aproveite para tomar um refresco e ler alguma coisa de útil (mesmo que seja na internet) tal como:

http://www.benone.org
http://www.modoroot.com
http://www.under-linux.org/

Algumas horas depois..

Prontinho, agora voltamos para o diretório /usr/src/ e digitamos:

ls -l

Esse comando nos mostra os ficheiros dentro desse diretório. O parametro -l serve para mostrar quem é o dono do arquivo. Vamos notar que foram criados 2 arquivos .deb que no meu caso ficaram assim:

-rw-r--r--  1 root src    8718582 2007-09-10 21:17 linux-headers-2.6.22.6-linux2.66.2.6_2.6.22.6-linux2.66.2.6-10.00.Custom_i386.deb

-rw-r--r--  1 root src  184944730 2007-09-10 21:12 linux-image-2.6.22.6-linux2.66.2.6_2.6.22.6-linux2.66.2.6-10.00.Custom_i386.deb

Um desses arquivos serve para a instalação do novo kernel (linux-image) e o outro (linux-header) caso precises compilar módulos do kernel mais tarde.

Agora vamos instalar os pacotes .deb

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb



Estes dois arquivos poderão ser usados para instalar o novo kernel em outras máquinas sem a necessidade de se recompilar o kernel! Poupa-se trabalho! :)

Agora para finalizar só temos que verificar o menu de inicialização do GRUB (sistema de gerenciamento de boot)

gedit /boot/grub/menu.lst

Feito isso deverá aparecer o novo kernel listado entre as opções do outro kernel:

title        Ubuntu, kernel 2.6.22.6-linux2.66.2.6
root        (hd0,4)
kernel        /boot/vmlinuz-2.6.22.6-linux2.66.2.6 root=UUID=6801e18d-a385-4915-b671-dd1e5aad0fc3 ro quiet splash
initrd        /boot/initrd.img-2.6.22.6-linux2.66.2.6
quiet
savedefault

Agora só temos que reiniciar a máquina e testar o novo kernel:

shutdown -r now

Agora torça para que dê tudo certo! Pois se a amiga "Lady Murphy" ainda estiver do teu lado, ja éra vai dar tudo errado! heheheh (brincadeirinha)

Ao reiniciar o PC vá até o terminal e digite:

uname -r

Para saber qual é a versão atual do kernel. Se aparecer  linux2.66.2.6 voilá!!!! Funcionou, agora ligue para os seus ente queridos e diga a eles que já sabes compilar o kernel do linux e que isso faz de ti um ser humano mais útil! :)

Até a próxima! :)

Por: Wanderley Ribeiro ( Este endereço de e-mail está protegido de spam bots, pelo que necessita do Javascript activado para o visualizar )


Actualizado em ( Quarta, 12 Setembro 2007 05:14 )
 

Recados

Latest Message: 1 month, 1 week ago
  • Benone Marco : eae
  • Patrício do : olá gente
  • Benone Marco : ...é só começar a usar :D
  • Benone Marco : para quem não entendeu, isso significa que todos os registrados no TiA têm direito a um blog próprio
  • Benone Marco : espero que todos gostem e passe a usar o blog
  • Benone Marco : ...ouvindo boa música...
  • Benone Marco : é sempre bom aproveitar o fds para fazer pequenas melhorias nos projetos...
  • Benone Marco : pronto. showtbox pro povo de novo :)
  • Benone Marco : test

Only registered users are allowed to post

Usuários Online

Ninguem Online

Gostou ? Compartilhe !

Adicione ao: JBookmarks Adicione ao: Facebook Adicione ao: Windows Live Adicione ao: Digg Adicione ao: Del.icoi.us Adicione ao: Reddit Adicione ao: StumbleUpon Adicione ao: Slashdot Adicione ao: Yahoo Adicione ao: Technorati Adicione ao: Google Information