Vous êtes sur la page 1sur 5

Kernel do GNU/Linux

No decorrer deste texto veremos mais detalhes, alm dos que j apresentamos em outras aulas, sobre
o que muitos acreditam ser o mais importante componente de um sistema GNU/Linux, ou seja, o seu
Kernel.
No final da dcada de 80, um aluno da universidade de Helsinque, na Finlndia, percebeu que o
microprocessador Intel 80386 seria uma plataforma adequada para o desenvolvimento de um sistema
nos moldes do Unix. Este aluno foi Linus Benedict Torvalds.
Linus B. Torvalds desejava construir um Kernel clone do Unix que tivesse memria virtual, multitarefa
preemptiva e multiusurio. Porm este trabalho seria enorme para uma pessoa somente, mesmo que
conhecesse muito bem as teorias que envolvem os sistemas operacionais.
Na primavera de 1991, Linus B. T. da incio um projeto particular inspirado no Minix. Ele queria um
Minix melhor que o Minix. Aps algum tempo, seu projeto solitrio de um Kernel, conseguia executar os
utilitrios de programao e os comandos-padro do Unix clonados pelo projeto GNU. Vendo ento que
no conseguiria continuar sozinho nesta tarefa, Linus enviou para a lista de discusso comp.os.minix,
com o seguinte desafio:
Voc suspira por melhores dias do Minix-1.1, quando homens sero homens e escrevero seus prprios
device drivers? Voc est sem um bom projeto e est morrendo por colocar as mos em um S.O. no qual
voc possa modificar de acordo com suas necessidades? Voc est achando frustrante quando tudo
trabalha em Minix? Chega de atravessar noites para obter programas que trabalhem correto. Ento
esta mensagem pode ser exatamente para voc.

Como eu mencionei h um ms, estou trabalhando em uma verso independente de um S.O. similar ao
Minix para computadores AT-386. Ele est, finalmente, prximo do estgio em que poder ser utilizado
(embora possa no ser o que voc esteja esperando), e eu estou disposto a colocar as fontes para ampla
distribuio. ele est na verso 0.02.., contudo, eu tive xito rodando bash, gcc, gnu-make, gnu-sed,
compresso, etc, nele.
Ento, em 5 de Outubro de 1991, Linus B. Torvalds lanou a primeira verso oficial do Linux: o Linux
0.02. Desde ento, vrios programadores pelo mundo afora tm colaborado no desenvolvimento do Linux
e tornando o sistema o que ele atualmente.
Fatos histricos marcantes do Linux
Data

Evento

1969

Criao do Unix pela AT&T

1974

O Unix distribudo para as universidades. montado o cenrio para o surgimento em


todo o mundo de programadores de sistemas altamente capacitados.

1983

Richard Stallman cria a Free Software Foundation.

1984

O X Window criado no MIT.

1988

O Dr. Andrew Tanenbaum desenvolve o Minix para efeitos didticos.

1990

Linus B. Torvalds assiste sua primeira aula de linguagem C.

1991

Linux B. Torvalds inicia o desenvolvimento do Linux.

1992

A verso 0.01 discutida na Internet. lanada a verso 0.95 do Linux. A Yggdrasil lana
a primeira distribuio Linux em dezembro.

1993

A Yggdrasil libera a produo da distribuio do Linux

1994

Lanada a verso 0.99pl15 do Linux. lanado o Xfree86. A Yggdrasil lana o primeiro


CD-ROM contendo uma distribuio Linux. A Red Hat, a Slackware e outras distribuies
surgem em CD-ROM

1995

Surge a primeira verso modularizada do Linux.

1996

A Caldera lana a verso 1.0 com Netscape incluso e tambm com WordPerfect for X.

1998

A Conectiva lana a primeira distribuio brasileira do Linux, baseada no Red Hat.

Tabela adaptada do livro Unix Guia do Administrador do Sistema, de Rubem E. Ferreira, da editora
Novatec, edio 2003, pginas 24.

Informaes Bsicas Sobre o Linux


O Linux no software de domnio pblico, pois est licenciado sob a licena GPL ( GNU Public License),
onde, por exemplo, o cdigo-fonte do Linux poder permanecer livremente disponvel. possvel cobrar
pela cpia do Linux, desde que, no limitem a sua distribuio.
Diversas pessoas tm auxiliado no desenvolvimento do Linux pelo mudo afora. Este desenvolvimento
dirigido por Linus B. Torvalds e cada colaborador mantm os direitos de copyright sobre os cdigos que
escreveram.
A verso 1.0 do Linux foi liberada no dia 14 de maro de 1994 e at hoje, inmeras verses novas
foram feitas desde ento.
O Linux segue um modelo de desenvolvimento aberto e a cada nova verso liberada, o produto agrega
mais qualidade. Como forma de padronizar as verses do Kernel do Linux, a equipe de desenvolvimento
adotou o seguinte esquema sobre as numeraes de verses:
Verses x.y.z, onde y um nmero par, se o Kernel for considerado estvel;
O incremento de z significa apenas correes de bugs. Deste modo, entre a verso 2.6.8 e 2.6.12,
houveram somente correes de erros e nenhuma caracterstica nova;

Verses x.y.z, onde y um nmero mpar, se o Kernel for considerado instvel;


Estas so verses beta e de desenvolvimento. Geralmente somente as equipes que trabalham com o
Kernel que se utilizam destas verses. Nada impede porm, que voc teste uma verso instvel do
Kernel. Entretanto, tenha em mente que no uma verso confivel para se colocar em um ambiente de
produo.

Atualmente o Kernel Linux j est na verso 2.6.36, lanada em 20 Outubro 2010. Entretanto, o que
mais nos interessa neste momento saber como vamos utilizar o ncleo do sistema em nossos
computadores. Como poderemos customiz-lo e adapt-lo s nossas necessidades e caractersticas de
hardware.
Neste sentido, somos forados a entrar em reas mais complexas da Cincia da Computao, pois
teremos que entender do processo de compilao e link de programas, alm de sabermos tambm de
detalhes mais elaborados sobre o hardware que estaremos utilizando em nossos computadores, pois

agora nosso objetivo a baixa, descompactao, configurao, compilao e instalao de um Kernel


novo para nossos sistemas.
Apenas para lembrar, sempre tenha em mente onde o Kernl Linux ir atual em
seus sistema computacional, pois a base para o bom funcionamento de tudo.
Veja a figura.

Customizando um Kernel Linux


O primeiro passo para iniciarmos nossa jornada ser a baixa de todo o cdigo fonte do Kernel, o que
iremos fazer a partir do site oficial do projeto, o qual mantido por vrias empresas, fundaes e
entidades sem fim lucrativos. O endereo para baixa ser: http://www.kernel.org.
A verso que iremos trabalhar neste documento ser a mais recente, ou seja, a verso 2.6.36.
Uma vez baixado o arquivo, o qual est no formato .tar.bz2, vamos utiliz-lo conforme os procedimentos
e informaes seguintes.
Antes disso, precisamos nos cercar dos conhecimentos e informaes necessrias para o processo de
customizao, compilao, instalao e uso no sisetma.
O que precisamos:
- O Compilador GCC instalado;
- Pacotes de softwares e ferramentas acessrias no Debian;
- Informaes sobre o Hardware dos computadores que iremos utilizar;
- O que desejamos neste novo Kernel? (menor tamanho, reconhecer hardwares novos, etc).
Tendo as questes anteriores respondidas, vamos seguir um roteiro bsico.
Procedimentos para Instalao, Configurao, Compilao, Instalao e Uso.
Dentro de uma distribuio Debian, seguir o seguinte roteiro:

1- Instalar os pacotes necessrios para a customizao do Kernel:


# apt-get update
# apt-get install kernel-package libncurses5-dev
# apt-get install fakeroot bzip2 build-essential udev

2- Descompactar o arquivo do Kernel j obtido do repositrio do projeto:


# cp linux-2.6.36.tar.bz2 /usr/src
# tar -xvjf linux-2.6.36.tar.bz2
# ln -s /usr/src/linux-2.6.36 /usr/src/linux
# cd /usr/src/linux

3- Caso seja necessrio, aplicar os Patches no sistema, antes de iniciar o processo de


configurao:

Muitas vezes podemos precisar de drivers para algum hardware novo, o qual ainda no est sendo
suportado pela equipe do Kernel, porm voc conseguiu o Patches com o fabricante do Hardware, ou
ento voc precisa suporte para uma nova tcnica/recurso de virtualizao ou uma nova tecnologia. Em
todos os casos voc precisa ter o arquivo de Patch para o cdigo fonte do Kernel.
Se j conseguiu os arquivos de Patches, coloque-os no diretrio /usr/src e execute conforme abaixo:
# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
# bzip2 -dc /usr/src/patch.bz2 | patch -p1
Importante!
S aplique Patches no Kernel se realmente forem necessrios.

4- Configurando o Kernel
# make clean
(limpa compilaes anteriores)
# make mrproper (Remove os arquivos gerados pela compilao anterior e tambm as configuraes realizadas.)
# cp /boot/config-`uname -r` ./.config
(copia o config do kernel atual como base)
# make menuconfig
A partir do ltimo comando acima, temos uma interface, mesmo em ambiente de terminal com um Shell
em Bash, a qual ir prover todas as informaes que deveremos tratar para que consigamos configurar
nosso novo Kernel.

Recomendaes para configurao do Kernel:

Se no tiver certeza das opes disponveis, informadas como NEW ou Experimental, no


marque para compilao;
Se o computador que ir executar o Kernel no for um Notebook/Laptop, desmarque estas opes;
Desmarque suporte hardwares antigos, como barramentos ISA, MCA, EISA, bem como suporte
para os antigos cartes PCMCIA;
Na opo Processor Family, escolha o processar mas adequado ou igual, onde o Kernel ser
executado;
Se estiver compilando um Kernel para uma mquina muito recente, verifique antes as caractersticas
do hardware desta mquina (placas de rede, scsi, sata, vdeo, fiber channel, etc) para ver se esto
disponveis nos menus de configurao, selecionado para a compilao.
Se no for apresentado uma opo para o Driver que voc deseja utilizar, por exemplo, uma placa de
rede nova, uma interface de vdeo de ltima gerao, etc. Obtenha antes o driver com o fabricante.

Se seu computador no possuir mais de 8 (oito) processadores, ou 8 (oito) gigabytes de memria,


deixe estas opes conforme estiverem marcadas.

5- Aps escolher as opes conforme suas caractersticas de hardware e/ou suporte


para novos hardwares e novas funes, devemos continuar com o processo.
# make
# make modules
# make modules_install
# make install

(compila o Kernel)
(compila os mdulos configurados anterioremente)
(instala os mdulos para uso pelo novo Kernel)
(instala o novo Kernel no sistema)

6- Aps o processo de instalao anterior, devemos fazer as demais configuraes no


sistema:
Veja se possui os arquivos abaixo no diretrio /boot:
* System.map-2.6.XXX
Mapa de smbolos/endereos p/uso do Kernel.
* config-2.6.XXX
O arquivo de configurao usado p/compilar o Kernel.
* vmlinuz-2.6.XXX
O arquivo executvel do Kernel compilado.
Onde XXX a verso recentemente compilada, inclusive com a sua extenso, caso tenha feito.
Deste modo, precisamos ento gerar uma imagem de FileSystem inicial para que o Kernel
possa utilizar em seu momento de carga. o chamado arquivo initrd.
# cd /boot/
# mkinitrd -o initrd.img-2.6.XXX 2.6.XXX
Onde XXX sua verso de Kernel configurada.
Aps os passos anteriores, temos ento que atualizar o Gerenciador de Boot para que nos permita
iniciar o sistema com o nosso novo Kernel.
O Gerenciador que usamos no Debian o Grub, assim:
# grub-install /dev/sda

(atualiza e instala o setor de boot no FileSystem /dev/sda)

Se tudo der certo, fazer uma verificao no arquivo /boot/grub/menu.lst para ver se o novo Kernel j
est sendo referenciado para o boot. Caso no esteja, edite o arquivo manualmente, colocando as
definies necessrias.
Aps tudo acertado, basta reinicializar o sistema com reboot, ou init 6.
Veja mais informaes nos stios abaixo:
1- www.kernel.org
2- http://linuxmafia.com/faq/Kernel/systemmap.html
3- http://www.debianadmin.com/step-by-step-tutorial-howto-compile-kernel-in-debian-5-0-lenny.html

Vous aimerez peut-être aussi