Kernel do GNU/Linux

No decorrer deste texto veremos mais detalhes, além 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 década de 80, um aluno da universidade de Helsinque, na Finlândia, 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 memória virtual, multitarefa
preemptiva e multiusuário. Porém 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 início à um projeto particular inspirado no Minix. Ele queria um
Minix melhor que o Minix. Após algum tempo, seu projeto solitário de um Kernel, conseguia executar os
utilitários de programação e os comandos-padrão do Unix clonados pelo projeto GNU. Vendo então que
não conseguiria continuar sozinho nesta tarefa, Linus enviou para a lista de discussão comp.os.minix,
com o seguinte desafio:
“Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios
device drivers? Você está sem um bom projeto e está morrendo por colocar as mãos 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. Então
esta mensagem pode ser exatamente para você.

Como eu mencionei há um mês, estou trabalhando em uma versão independente de um S.O. similar ao
Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser utilizado
(embora possa não ser o que você esteja esperando), e eu estou disposto a colocar as fontes para ampla
distribuição. ele está na versão 0.02.., contudo, eu tive êxito rodando bash, gcc, gnu-make, gnu-sed,
compressão, etc, nele”.
Então, em 5 de Outubro de 1991, Linus B. Torvalds lançou a primeira versão oficial do Linux: o Linux
0.02. Desde então, vários programadores pelo mundo afora têm colaborado no desenvolvimento do Linux
e tornando o sistema o que ele é atualmente.
Fatos históricos marcantes do Linux
Data

Evento

1969

Criação do Unix pela AT&T

1974

O Unix é distribuído para as universidades. É montado o cenário 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 didáticos.

1990

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

1991

Linux B. Torvalds inicia o desenvolvimento do Linux.

A versão 1. Como forma de padronizar as versões do Kernel do Linux.8 e 2. Este desenvolvimento é dirigido por Linus B. É lançada a versão 0. além de sabermos também de detalhes mais elaborados sobre o hardware que estaremos utilizando em nossos computadores.0 do Linux foi liberada no dia 14 de março de 1994 e até hoje. Diversas pessoas têm auxiliado no desenvolvimento do Linux pelo mudo afora. tenha em mente que não é uma versão confiável para se colocar em um ambiente de produção.z.36. O Linux segue um modelo de desenvolvimento aberto e a cada nova versão liberada.12. 1998 A Conectiva lança a primeira distribuição brasileira do Linux.6. Tabela adaptada do livro Unix Guia do Administrador do Sistema. Estas são versões beta e de desenvolvimento. Nada impede porém. se o Kernel for considerado estável. da editora Novatec. de Rubem E. não limitem a sua distribuição. 1993 A Yggdrasil libera a produção da distribuição do Linux 1994 Lançada a versão 0. edição 2003. Neste sentido. baseada no Red Hat. desde que. Informações Básicas Sobre o Linux O Linux não é software de domínio público. inúmeras versões novas foram feitas desde então.99pl15 do Linux.6. se o Kernel for considerado instável. pois está licenciado sob a licença GPL ( GNU Public License).1992 A versão 0. pois . o código-fonte do Linux poderá permanecer livremente disponível. A Yggdrasil lança a primeira distribuição Linux em dezembro. páginas 24.6. Torvalds e cada colaborador mantém os direitos de copyright sobre os códigos que escreveram. A Red Hat. que você teste uma versão instável do Kernel. 1996 A Caldera lança a versão 1. Entretanto.y. onde y é um número ímpar.y. a equipe de desenvolvimento adotou o seguinte esquema sobre as numerações de versões: Versões x. – Versões x.01 é discutida na Internet. O incremento de z significa apenas correções de bugs. Entretanto. onde y é um número par. por exemplo. o que mais nos interessa neste momento é saber como vamos utilizar o núcleo do sistema em nossos computadores. Ferreira. entre a versão 2. Como poderemos customizá-lo e adaptá-lo às nossas necessidades e características de hardware. somos forçados a entrar em áreas mais complexas da Ciência da Computação.95 do Linux. lançada em 20 Outubro 2010.z. – Atualmente o Kernel Linux já está na versão 2. o produto agrega mais qualidade.0 com Netscape incluso e também com WordPerfect for X. A Yggdrasil lança o primeiro CD-ROM contendo uma distribuição Linux. houveram somente correções de erros e nenhuma característica nova. Deste modo. É lançado o Xfree86. pois teremos que entender do processo de compilação e link de programas. Geralmente somente as equipes que trabalham com o Kernel é que se utilizam destas versões. É possível cobrar pela cópia do Linux. a Slackware e outras distribuições surgem em CD-ROM 1995 Surge a primeira versão modularizada do Linux. onde.

bz2. Antes disso.6. Apenas para lembrar. .tar. vamos seguir um roteiro básico.6.36. instalação e uso no sisetma.bz2 /usr/src # tar -xvjf linux-2.Informações sobre o Hardware dos computadores que iremos utilizar. O endereço para baixa será: http://www. configuração. o que iremos fazer a partir do site oficial do projeto.O que desejamos neste novo Kernel? (menor tamanho. A versão que iremos trabalhar neste documento será a mais recente.agora nosso objetivo é a baixa. O que precisamos: . sempre tenha em mente onde o Kernl Linux irá atual em seus sistema computacional.36. Instalação e Uso.kernel.bz2 # ln -s /usr/src/linux-2. Tendo as questões anteriores respondidas.Pacotes de softwares e ferramentas acessórias no Debian. Uma vez baixado o arquivo. seguir o seguinte roteiro: 1. o qual é mantido por várias empresas.tar.36. Veja a figura. Procedimentos para Instalação. compilação. . .6.Caso seja necessário. Configuração. compilação e instalação de um Kernel novo para nossos sistemas.36 /usr/src/linux # cd /usr/src/linux 3.org. vamos utilizá-lo conforme os procedimentos e informações seguintes. antes de iniciar o processo de configuração: . precisamos nos cercar dos conhecimentos e informações necessárias para o processo de customização. a versão 2.6. o qual está no formato . descompactação. Customizando um Kernel Linux O primeiro passo para iniciarmos nossa jornada será a baixa de todo o código fonte do Kernel. pois é a base para o bom funcionamento de tudo. ou seja.Descompactar o arquivo do Kernel já obtido do repositório do projeto: # cp linux-2. Dentro de uma distribuição Debian.O Compilador GCC instalado. reconhecer hardwares novos.Instalar os pacotes necessários para a customização do Kernel: # apt-get update # apt-get install kernel-package libncurses5-dev # apt-get install fakeroot bzip2 build-essential udev 2.tar. fundações e entidades sem fim lucrativos. Compilação. aplicar os Patches no sistema. etc).

verifique antes as características do hardware desta máquina (placas de rede. selecionado para a compilação. temos uma interface. Obtenha antes o driver com o fabricante. desmarque estas opções.bz2 | patch -p1 Importante! Só aplique Patches no Kernel se realmente forem necessários. Em todos os casos você precisa ter o arquivo de Patch para o código fonte do Kernel.Configurando o Kernel # make clean (limpa compilações anteriores) # make mrproper (Remove os arquivos gerados pela compilação anterior e também as configurações realizadas. – Desmarque suporte à hardwares antigos.Muitas vezes podemos precisar de drivers para algum hardware novo. bem como suporte para os antigos cartões PCMCIA. – Se o computador que irá executar o Kernel não for um Notebook/Laptop. Se já conseguiu os arquivos de Patches. ou então você precisa suporte para uma nova técnica/recurso de virtualização ou uma nova tecnologia. 4. a qual irá prover todas as informações que deveremos tratar para que consigamos configurar nosso novo Kernel. onde o Kernel será executado. sata. como barramentos ISA. mesmo em ambiente de terminal com um Shell em Bash. escolha o processar mas adequado ou igual. – Se estiver compilando um Kernel para uma máquina muito recente. Recomendações para configuração do Kernel: – Se não tiver certeza das opções disponíveis. fiber channel.config (copia o config do kernel atual como base) # make menuconfig A partir do último comando acima. uma interface de vídeo de última geração.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch. . EISA. informadas como NEW ou Experimental. por exemplo. coloque-os no diretório /usr/src e execute conforme abaixo: # bzip2 -dc /usr/src/patch. porém você conseguiu o Patches com o fabricante do Hardware. o qual ainda não está sendo suportado pela equipe do Kernel. – Na opção Processor Family. scsi.) # cp /boot/config-`uname -r` . – Se não for apresentado uma opção para o Driver que você deseja utilizar. vídeo. não marque para compilação. etc) para ver se estão disponíveis nos menus de configuração. etc. uma placa de rede nova./. MCA.

Após tudo acertado. Deste modo. # cd /boot/ # mkinitrd -o initrd. Veja mais informações nos sítios abaixo: 1.Após escolher as opções conforme suas características de hardware e/ou suporte para novos hardwares e novas funções.http://www.kernel.XXX → Mapa de símbolos/endereços p/uso do Kernel. ou init 6.com/step-by-step-tutorial-howto-compile-kernel-in-debian-5-0-lenny.debianadmin.Após o processo de instalação anterior.map-2.– Se seu computador não possuir mais de 8 (oito) processadores.XXX Onde XXX é sua versão de Kernel configurada.lst para ver se o novo Kernel já está sendo referenciado para o boot.www. devemos continuar com o processo. * vmlinuz-2. precisamos então gerar uma imagem de FileSystem inicial para que o Kernel possa utilizar em seu momento de carga. # make # make modules # make modules_install # make install (compila o Kernel) (compila os módulos configurados anterioremente) (instala os módulos para uso pelo novo Kernel) (instala o novo Kernel no sistema) 6.org 2.6. 5. É o chamado arquivo initrd.XXX 2. basta reinicializar o sistema com reboot.XXX → O arquivo de configuração usado p/compilar o Kernel. devemos fazer as demais configurações no sistema: Veja se possui os arquivos abaixo no diretório /boot: * System. assim: # grub-install /dev/sda (atualiza e instala o setor de boot no FileSystem /dev/sda) Se tudo der certo.img-2. edite o arquivo manualmente. ou 8 (oito) gigabytes de memória. colocando as definições necessárias. Caso não esteja.http://linuxmafia.html . inclusive com a sua extensão.html 3. caso tenha feito.XXX → O arquivo executável do Kernel compilado. deixe estas opções conforme estiverem marcadas. * config-2. O Gerenciador que usamos no Debian é o Grub. Após os passos anteriores. fazer uma verificação no arquivo /boot/grub/menu.6. temos então que atualizar o Gerenciador de Boot para que nos permita iniciar o sistema com o nosso novo Kernel.com/faq/Kernel/systemmap. Onde XXX é a versão recentemente compilada.6.6.6.