Anda di halaman 1dari 46

1

FACULDADE DE TECNOLOGIA OSWALDO CRUZ


SISTEMAS DE INFORMAÇÃO

SISTEMA GNU/LINUX

André Luiz Ribeiro Simões


Renato Pinheiro Destro
Danilo Amaral Mota
Alexandre Ideo Suzuki
Ivanildo Souza

São Paulo
17/11/2005 - 16h33
2

SUMÁRIO
1 INTRODUÇÃO.......................................................................................................................3
1.2 UM KERNEL.......................................................................................................................3
2 A HISTÓRIA DO SISTEMA LINUX........................................................................................5
2.2 UM BREVE HISTÓRICO DO UNIX....................................................................................5
2.3 O PADRÃO POSIX.............................................................................................................6
2.4 O MINIX..............................................................................................................................7
2.5 A HISTÓRIA DO SOFTWARE LIVRE................................................................................8
2.6 O PROJETO GNU............................................................................................................10
2.7 O KERNEL LINUX............................................................................................................13
2.8 TUX, O MASCOTE...........................................................................................................15
2.9 SISTEMA LINUX OU SISTEMA GNU/LINUX?.................................................................16
3 CARACTERÍSTICAS DE UM SISTEMA LINUX..................................................................17
3.2 SISTEMA MODULARIZADO............................................................................................18
3.3 GERENCIAMENTO DE PROCESSOS............................................................................19
4 O SISTEMA DE ARQUIVOS...............................................................................................20
4.2 ESTRUTURA DE DIRETÓRIOS.......................................................................................21
5 INTERFACE COM O USUÁRIO..........................................................................................22
5.2 INTERATIVA.....................................................................................................................23
5.3 NÃO-INTERATIVA............................................................................................................23
6. USUÁRIOS E GRUPOS.....................................................................................................24
7. ARQUIVOS E SUAS PERMISSÕES..................................................................................25
8. X WINDOW (AMBIENTE GRÁFICO).................................................................................26
8.1 O QUE É X WINDOW?.....................................................................................................26
8.2 INICIANDO O X................................................................................................................26
8.3 TERMINAL VIRTUAL (CONSOLE)...................................................................................27
9. COMO OBTER AJUDA NO SISTEMA...............................................................................28
9.1 PÁGINAS DE MANUAL....................................................................................................28
9.2 INTERNET........................................................................................................................30
9.2.1 PÁGINAS DE REFERÊNCIA NA INTERNET................................................................30
10. SURGIMENTO DAS DISTRIBUIÇÕES............................................................................31
10.2. PADRONIZAÇÃO..........................................................................................................31
10.3. DIFERENÇAS ENTRE AS DISTRIBUIÇÕES................................................................32
10.31. PRINCIPAIS DISTRIBUIÇÕES DE GNU/LINUX.........................................................33
10.3.1. DEBIAN......................................................................................................................33
10.3.2. RED HAT....................................................................................................................34
3

10.3.3. FEDORA.....................................................................................................................34
10.3.4. MANDRIVA.................................................................................................................35
10.3.4.1 MANDRAKE.............................................................................................................35
10.3.4.2 CONECTIVA.............................................................................................................36
10.3.5.SUSE...........................................................................................................................36
10.3.6. SLACKWARE.............................................................................................................37
10.3.7. LINUX FROM SCRATCH...........................................................................................38
10.3.8. GENTOO....................................................................................................................39
11. O GERENCIADOR DE PACOTES...................................................................................39
11.1. OS PACOTES RPM.......................................................................................................39
11.2. OS PACOTES DEBIAN..................................................................................................41
11.3. FERRAMENTAS DE GERENCIAMENTO DE PACOTES..............................................42
11.3.1. O DPKG......................................................................................................................42
11.3.2. O APT.........................................................................................................................42
12. BIBLIOGRAFIA.................................................................................................................43
13. CONCLUSÃO...................................................................................................................44

ÍNDICE DE ILUSTRAÇÕES
FIGURA 1: HARDWARE, KERNEL E SHELL.........................................................................................4
FIGURA 2: DENNIS RITCHIE (ESQUERDA), KEN THOMPSON (DIREITA) E O MAINFRAME ONDE
NASCEU O UNIX .................................................................................................................................. 5
FIGURA 3: DR. ANDREW STUART TANENBAUM, AUTOR DO LIVRO SISTEMAS
OPERACIONAIS.....................................................................................................................................7
FIGURA 4: RICHARD STALLMAN, FUNDADOR DO PROJETO GNU..................................................8
FIGURA 5: O PDP-10 DA DEC EXIGIA A ASSINATURA DE UM NDA PARA
UTILIZAÇÃO...........................................................................................................................................9
FIGURA 6: LOGOTIPO DO PROJETO GNU........................................................................................11
FIGURA 7: LINUS TORVALDS, CRIADOR DO KERNEL LINUX.........................................................13
FIGURA 8: TUX, O MASCOTE E SIMBOLO DO SISTEMA.................................................................15
FIGURA 9: HARDWARE, KERNELLINUX E APLICATIVOS GNU........................................................16
FIGURA 10: TIPOS DE TERMINAIS DE UM SISTEMA LINUX............................................................18
FIGURA 11: PROCESSAMENTO INTERNO DO KERNEL-LINUX.......................................................20
FIGURA 12: OS ESTADOS DE UM PROCESSO E OS COMANDOS DO ESCALONADOR DE
PROCESSOS.......................................................................................................................................20
FIGURA 13: ESQUEMA DE RELAÇÃO ENTRE OS PROCESSOS E O SERVIDOR X......................27
4

1 INTRODUÇÃO

Este trabalho tem como objetivo dar uma visão geral da arquitetura de um sistema
operacional GNU/Linux. Vamos abordar desde a sua criação, sua arquitetura, suas
motivações, objetivos e arriscar algumas previsões.

Não pretendemos que este sistema é melhor que seus concorrentes mas quermos
mostar que nos dias atuais o GNU/Linux é tão funcional quanto seus concorrentes.

1.2 UM KERNEL

Todo sistema operacional é formado por um kernel1, que é o núcleo do sistema


operacional responsável pela comunicação com o hardware, ele é composto por
chamadas de acesso aos recursos da máquina.

O kernel pode ser entendido com uma série de arquivos escritos em linguagem C e
em linguagem Assembly que constituem o núcleo do sistema operacional. É o kernel
que controla todo o acesso ao hardware do computador. Ele pode ser visto como
uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de
permitir que todos os processos sejam executados pela CPU e permitir que estes
consigam compartilhar a memória do computador.

A camada seguinte é a interface, é o nome genérico dado ao interpretador de


comandos, esta camada é formada por uma classe de programas específicos.
Existem grandes diferenças entre as interfaces da sistemas operacionais da
Microsoft, como o DOS e Windows e os sistemas que seguem o padrão POSIX
(Unix) que usam uma interface do tipo shell.

1 Kernel em inglês quer dizer núcleo (pronuncía-se Quérneu).


5

Interface

Kernel

Hardware

Figura 1: Hardware, Kernel e Shell.

Pode parecer estranho começar falando do kernel mas o objetivo é mostar que esta
é uma das partes mais importantes de um sistema operacional. A alguns anos o
kernel era um completo desconhecido até mesmo para muitos técnicos de
informática, mas nos últimos 14 anos um sistema fez deste ilustre desconhecido o
pivô de um dos maiores debates ideológicos, comerciais e filosóficos dos últimos
tempos.

Sem exageros podemos dizer que por causa de um kernel de sistema operacional
está provodando mudanças drásticas em metedologias de trabalho, visão de
negócios, paradigmas de desenvolvimento e comercialização de propriedade
intelectual, desde pequenas comunidades a grandes corporações multinacionais.

É um pouco desta história que estamos vivendo, muitas vezes sem se dar conta,
que pretendemos mostrar com este trabalho.
6

2 A HISTÓRIA DO SISTEMA LINUX

Para compreender melhor a arquitetura, a forma de desenvolvimento, a comunidade


e a filosofia do sistema GNU/Linux é necessário conhecer a sua historia desde o
início.

2.2 UM BREVE HISTÓRICO DO UNIX

Porque citar o Unix se o objetivo da pesquisa é o sistema GNU/Linux? Porque contar


a origem do sistema do pinguim sem citar seus modelos seria como contar a história
do Brasil ignorando toda história anterior a independência.

As raízes do sistema UNIX encontram-se no final da década de 1960 e início da de


1970, o ambiente dominante na época eram os mainframes2 com uma série de
terminais ligados a ele. Esta arquitetura era caríssima e de difícil acesso, por isso
era necessário um sistema operacional multitarefa e principalmente multiusuário.

2 Mainframe é um supercomputador, ou computador de grande porte, dedicado normalmente ao


processamento de um volume grande de informações.
7

Figura 2: Dennis Ritchie (esquerda), Ken Thompson (direita) e o


Mainframe onde nasceu o Unix.

Para compreenção da evolução deste sistema observe sua cronologia do UNIX:

• 1965: Os Laboratórios Bell com o MIT e a General Eletric começam um


programa grandioso de criar um novo sistema operacional, o Multics.
• 1970: A AT&T insatisfeita com o progresso do Multics cortou o projeto e
alguns programadores da Bell que trabalhavam no projeto, então eles
implementaram a primeira versão do sistema de arquivos do UNIX em um
computador PDP-7 com alguns usuários, Brian Kernighan deu o nome do
novo sistema de UNIX como deboche em relação ao Multics.
• 1970: Tempo zero do UNIX.
• 1973: O UNIX é reescrito em C, uma nova linguaguem de programação,
sendo de alto nível ficava fácil portar novas máquinas.
• 1974: At&T licencia o UNIX para universidades e empresas.
• 1977: cerca de 500 computadores com UNIX no mundo todo.
• 1984: Cerca de 100.000 computadores co UNIX rodando em diferentes
plataformas.
• 1988: A AT&T Sun se unem para desenvolver Solaris e UnixWare.
8

2.3 O PADRÃO POSIX

A norma POSIX especifica as interfaces de usuário e do software ao sistema


operacional. POSIX é o nome de uma família de normas relacionadas definidas pelo
IEEE3 e designada formalmente por IEEE 1003, sendo a designação internacional
da norma é ISO/IEC 9945. Estes padrões são a base dos sistemas inspirados e/ou
derivados do Unix.

A normalização das especificações POSIX surgiram de um projeto, iniciado por volta


de 1985, que tinha como objetivo normalizar a interface de programação de
aplicações para software desenhado para correr em variantes do sistema operativo
UNIX. O termo POSIX foi sugerido por Richard Stallman em resposta a um pedido
da IEEE de um nome memorável. É uma sigla aproximada de Portable Operating
System Interface, com o X a representar a herança que o interface de programação
de aplicações tem do sistema UNIX.

2.4 O MINIX

O MINIX é uma versão do Unix, livre e com o código fonte disponível. Isso significa
que qualquer programador experiente pode fazer alterações nele. Ele foi criado
originalmente para uso educacional, para quem quisesse estudar o Unix "em casa".

Seu autor, Dr. Andrew Stuart Tanenbaum o escreveu como material de apoio ao livro
Sistemas Operacionais, no decorrer da leitura é passado os códigos fonte dos
programas e serviços do sistema e ao final tem-se um
sistema operacional "completo".

O problema é que até o final da década de 1980, o


MINIX era suportado apenas por computadores
equipados com o processadores Intel 8086, este
3 Instituto de Engenharia Elétrica e Eletrônica ou IEEE (pronuncia-se I-3-E ) é uma organização
profissional e não-lucrativa. Um de seus papéis mais importantes é o estabelecimento de padrões
para formatos de computadores e dispositivos.

Figura 3: Dr. Andrew Stuart


Tanenbaum, autor do livro
Sistemas Operacionais.
9

equipamento estava disponível nas universidades mas já não um equipamento muito


comum neste época onde os computadores pessoais eram equipados com os
processadores Intel 80386, desta forma forma o MINIX ficava limitado ao ambiente
acadêmico porque na época não havia interesse do Dr. Tanenbaum em atualizá-lo
porque ele estava trabalhando em um outro livro e apesar do Minix ter seus códigos-
fontes disponíveis com o livro, na época sua licença de distribuição o vinculava ao
livro, que por ventura pertencia a editora, sendo assim o MINIX não podeia ser
alterado por mais ninguém.

Hoje o MINIX é distribuído sob uma licença própria (que é um clona da licança BSD
original).

Mas o que tem haver o Minix com o GNU/Linux?

A história do sistema GNU/Linux vem se misturando a história de muitos projetos,


como UNIX, MINIX e como veremos agora com o projeto GNU.

2.5 A HISTÓRIA DO SOFTWARE LIVRE

Na década de 1970 era comum entre os programadores e pesquisadores das


universidades trocarem informações sobre suas pesquisas e isto incluía os
programa para computadores desenvolvidos para auxiliar este desenvolvimento. A
lógica aplicada era que se cada programador tivesse que desenvolver a sua visão
de uma mesmo solução cada um estaria reinventado a roda centenas de vezes, é
muito mais fácil compartilhar o conhecimento e adaptar o que outra pessoas fez que
chegue próximo a nossa necessidade, do que sempre começar tudo do zero.

E foi neste ambiente que a maioria das tecnologias que usamos hoje foram criadas,
em um determinado momento o laboratório de Inteligência Artificial do Instituto de
Tecnologia de Massachusets (o famoso MIT) ganhou uma impressora da XEROX,
um modelo de uma tecnologia nova utilizando laser no lugar de uma matriz de
pontos, porém esta impressora apresentava problemas constantes de atolamento do
10

papel, como os programadores não tinham conhecimento técnico da mecânica da


impressora eles pensaram que poderiam concerta-la modificando no código-fonte do
driver como a impressora controla os motores de passo que movimentam o papel.

Um destes programadores era Richard M.


Stallman, ele tinha um amigo no Instituto Carneige
Mellon que recebeu da XEROX o código-fonte do
driver, ele não pensou duas vezes e ligou para o
seu amigo pedindo que lhe enviasse o código,
para sua surpresa e decepção seu amigo não
atendeu seu pedido alegando ter assinado um
contrato NDA4 com a XEROX que o impedia de Figura 4: Richard Stallman,
fundador do projeto GNU.
fornecer o código para qualquer pessoa.

Isto o deixou profundamente irritado, porque sempre houve colaboração entre os


programadores das universalidades, porque isso tinha que mudar? Mas o pior ainda
estava por vir, em 1982 o laboratório comprou um computador PDP-10 da DEC, este
computador utilizada um sistema operacional proprietário e não o sistema
desenvolvido pelos programadores do MIT, que era o sistema utilizado nos
computadores que antecederam o PDP-10. Na mesma época outros computadores
como o VAX também utilizavam sistemas operacionais proprietários, o problema era
que para utilizar estes computadores era a obrigatoriedade de assinar um NDA.

4 NDA, Non Disclusure Agreement ou Contrato de Não Revelação.


11

Figura 5: O PDP-10 da DEC exigia a assinatura de um NDA para


utilização.

Richard Stallman se recusava assinar este contrato porque acreditava que não
compartilhar seus códigos era um retrocesso, apesar das vantagens econômicas
que o mercado de informática que estava emergindo, ele acreditava que
conhecimento não deve ser tratado como produto mas como um bem comum e os
NDAs estavam acabando com a comunidade colaborativa que ele vivia até então.

Ele lutou até as últimas conseqüências, porém chegou um momento onde ele teve
que fazer uma escolha, ou assinava um NDA para continuar nos projetos que MIT
estava envolvido e com isso poderia ganhar muito dinheiro ou pedia demissão e
deixaria de programar que sempre foi sua paixão, para ele ainda era uma opção
melhor do que abandonar seus princípios e se vender para a indústria que estava se
formando em torno dos computadores.

2.6 O PROJETO GNU

Para Richard Stallman ser tornou óbvio que ele deveria criar um sistema operacional
livre 100%, mas ele não podia fazer isso como funcionário do MIT, ou o instituto
poderia exigir para si os direitos sobre todo o código criado por ele, então ele pediu
demissão.
12

Para a arquitetura do sistema ele escolheu o padrão POSIX, ele escolheu este
padrão porque já haviam muitos programadores para a plataforma UNIX e isso
facilitaria para conquistar novos contribuidores, não financeiros mas contribuidores
de código.

O nome escolhido para o projeto foi GNU5 que significa GNU is Not Unix, afinal ele
estava criando um sistema Unix que não era o Unix e este tipo de “brincadeira” é
muito comum no universo hacker.

O desenvolvimento do sistema GNU começou em 1984, um sistema operacional é


composto por diversos programas, editores de texto, cliente de e-mail, interfaces
com usuário, camadas de protocolos, compiladores, etc. Para que este sistema
fosse livre de qualquer processo judicial era necessário que cada um desses
programas fosse escrito a partir do ZERO e foi exatamente isso que ele fez, ele
convidou dezenas de voluntário e conseguiu a permissão do MIT para continuar a
utilizar seus laboratórios.

Figura 6: Logotipo do projeto GNU.

O primeiro programa do projeto GNU a ficar pronto foi o GNU Emacs, um software
que é um editor de textos, um cliente de e-mail, entre outras funcionalidades, o
Emacs já era conhecido e existiam muitas pessoas interessadas em usa-lo, então
Stallman resolveu distribuí-lo da seguinte forma, quem quisesse o Emacs deveria
pagar US$ 150,00, porém a grande diferença era que ao pagar esta quantia quem
comprasse o Emacs receberia uma fita com o programa no formato binário

5 GNU é um acrônimo recursivo, o G da sigla GNU significa GNU (pronúncia-se Guinú).


13

(executável), os códigos-fonte e toda a documentação disponível para ele, tutoriais,


manuais e uma licença que dava aos usuários do Emacs quatro liberdades básicas:

• Liberdade 1: A liberdade de executar o programa, para qualquer propósito;

• Liberdade 2: A liberdade de estudar como o programa funciona, e adaptá-lo


para as suas necessidades. Acesso ao código-fonte é um pré-requisito para
esta liberdade.

• Liberdade 3: A liberdade de redistribuir cópias de modo que você possa


ajudar ao seu próximo.

• Liberdade 4: A liberdade de aperfeiçoar o programa, e liberar os seus


aperfeiçoamentos, de modo que toda a comunidade se beneficie. Acesso ao
código-fonte é um pré-requisito para esta liberdade.

Mas como uma empresa ou alguém poderia usar este software e modifica-lo e
vende-lo sem garantir estas quatro liberdades, Richard Stallman criou também o
conceito de Copyleft (uma brincadeira com o termo Copyright), na licença idealizada
por Stallman ao utilizar um software ou parte de um software que lhe tenha sido
fornecido com as quatro liberdades básicas, você deve redistribuí-lo concedendo as
mesmas liberdades que recebeu.

Esta “longa” história marca o surgimento do movimento do Software Livre como


conhecido hoje em dia, mas como pôde ser observado o conceito não era novo,
compartilhar programas ou trecho de códigos de programas era algo considerado
natural, com o nascimento da indústria de software, a motivação por dinheiro
transformou o ato dos programadores de se ajudar compartilhando conhecimento,
algo que antes era natural e espontâneo em um crime comparado ao crime de
saquear embarcações.

A popularidade do projeto GNU, cresceu e o volume dos seus contribuidores cresceu


junto, com isso em aproximadamente 6 anos o projeto já tinha uma gama
14

considerável de aplicativos básicos para colocar um sistema em plena atividade,


mas o principal elemento de um sistema não estava pronto, o kernel.

Na realidade o projeto GNU tem um kernel, seu nome é Hurd, e esta sendo
desenvolvido com uma arquitetura de micro-kernel, nesta arquitetura cada elemento
do kernel é independente do seu núcleo (acesso a dispositivos, driver, etc...). Estes
elemendos são executados como Daemons6 e são chamados automaticamente pelo
kernel principal somente quando necessário.

Esta arquitetura é muito moderna e já vou pivô de um famoso debate entre o Dr.
Andrew Tanenbaum e Linux Torvalds, apesar de ser considerada por muitos como o
futuro dos sistemas operacionais, na arquitetura de micro-kernel é extremamente
dificil depurar os programas compilados sob ela, tamanho a dificuldade de se
mapear a troca de mensagens entre os Daemons o que acontece no núcleo do
sistema.

Por causa desta dificuldade o Hurd ainda está um pouco longe de ser tornar tão
funcional quando o Linux, mas seu desenvolvimento nunca foi interrompido.

2.7 O KERNEL LINUX

No final da década de 1980, Linus Benedict Torvalds, aluno da Universadade de


Helsinque, na Finlândia, recebeu uma recomendação de leitura de seu professor de
sistemas operacionais, a recomendação era o livro Sistemas Operacionais do Dr.
Andrew Stuart Tanenbaum.

Apesar de estudar o MINIX na univesidade não era possível fazer o mesmo em casa
porque os únicos computadores disponíveis na época eram equipados com
processadores Intel 80386, como visto anteriormente, nesta época o MINIX
suportava apenas processadores 8086.

6 Programa executado com a finalidade de administrar as solicitações de um serviço ou outro


programa.
15

Diante desse impasse, Linus Torvalds resolveu


desenvolver um kernel a partir do zero, este kernel seria
um clone do MINIX que poderia ser executado em
computadores com processadores 80386. E após perder
algumas semanas dentro de casa, ele conseguiu
desenvolver um kernel que conseguia executar o
compilador desenvolvido pelo projeto GNU e alguns de
seus aplicativos básicos.

Figura 7: Linus Torvalds,


Com um kernel incompleto, entretanto totalmente criador do kernel linux.
funcional, Linus percebeu que desenvolver um sistema
operacional completo era um trabalho praticamente impossível para uma única
pessoa e seguindo os princípios defendidos pela FSF e pelo projeto GNU, Linus
resolveu distribuir o código fonte e toda a documentação disponível do seu projeto
sob a licença GPL e em 5 de outubro de 1991, as 5 horas e 41 minutos, Linus
enviou uma mensagem para a lista de distribuição COMP.OS.MINIX da Usenet,
divulgando a versão 0.02 do Linux (de Linus + Unix), veja a reprodução da
mensagem:

"From: "Linus Benedict Torvalds" <torvalds@klaava.Helsinki.FI>


Data: 5 Oct 91 05:41:06 GMT
Local: Sab 5 out 1991 03:41
Subject: Free minix-like kernel sources for 386-AT

Do you pine for the nice days of minix-1.1, when men were men and wrote
their own device drivers? Are you without a nice project and just dying
to cut your teeth on a OS you can try to modify for your needs? Are you
finding it frustrating when everything works on minix? No more all-
nighters to get a nifty program working? Then this post might be just
for you :-)

As I mentioned a month(?) ago, I'm working on a free version of a


minix-lookalike for AT-386 computers. It has finally reached the stage
where it's even usable (though may not be depending on what you want),
and I am willing to put out the sources for wider distribution. It is
just version 0.02 (+1 (very small) patch already), but I've successfully
run bash/gcc/gnu-make/gnu-sed/compress etc under it.

Sources for this pet project of mine can be found at nic.funet.fi


(128.214.6.100) in the directory /pub/OS/Linux. The directory also
contains some README-file and a couple of binaries to work under linux
(bash, update and gcc, what more can you ask for :-). Full kernel
source is provided, as no minix code has been used. Library sources are
only partially free, so that cannot be distributed currently. The
system is able to compile "as-is" and has been known to work. Heh.
Sources to the binaries (bash and gcc) can be found at the same place in
/pub/gnu.

ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled


(and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to
16

set it up if you want to run it, so it is not yet a standalone system


for those of you without minix. I'm working on it. You also need to be
something of a hacker to set it up (?), so for those hoping for an
alternative to minix-386, please ignore me. It is currently meant for
hackers interested in operating systems and 386's with access to minix.

The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If


you are still interested, please ftp the README/RELNOTES, and/or mail me
for additional info.

I can (well, almost) hear you asking yourselves "why?". Hurd will be
out in a year (or two, or next month, who knows), and I've already got
minix. This is a program for hackers by a hacker. I've enjouyed doing
it, and somebody might enjoy looking at it and even modifying it for
their own needs. It is still small enough to understand, use and
modify, and I'm looking forward to any comments you might have.

I'm also interested in hearing from anybody who has written any of the
utilities/library functions for minix. If your efforts are freely
distributable (under copyright or even public domain), I'd like to hear
from you, so I can add them to the system. I'm using Earl Chews estdio
right now (thanks for a nice and working system Earl), and similar works
will be very wellcome. Your (C)'s will of course be left intact. Drop me
a line if you are willing to let me use your code.

Linus

PS. to PHIL NELSON! I'm unable to get through to you, and keep getting
"forward error - strawberry unknown domain" or something."

Foi assim que nasceu este sistema e esta mensagem é a sua certidão de
nascimento. Depois desta mensagem dezenas de programadores que liam as
mensgens da lista COMP.OS.MINIX começaram da palpites e mais importante,
começaram a contribuir com código para o sistema desenvolvido por Linus, com o
tempo este dezena de programadores se tranformou em uma centena e hoje em dia
são milhares de programadores engajados em continuar melhorando o sistema.

2.8 TUX, O MASCOTE

Basta um pingüim aparecer em um site, revista, cartaz ou propaganda que todo


mundo já se pergunta: “O que será que estão falando do Linux?”. O pingüim
gordinho batizado de Tux, se tornou a identidade visual de qualquer sistema que
utilize o kernel Linux, mas muitos se perguntam porque um pingüim?

Em 1996 na lista de distribuição Kernel-Linux, surgiu uma discussão sobre criar uma
indentidade visual para o sistema, algo que só de olhar pudesse fazer as pessoas
pensarem no sistema. Surgiram então várias sugestões, águias, tubarões, entre
outros monstros e gozações com os logotipos dos sistemas concorrentes, então
17

Linus Torvalds mandou apenas uma mensagens, com a seguinte informação: “...eu
gosto muito de pingüins.”

Isso foi o suficiente, a partir desde e-mail todas as sugestões eram pingüins, hora
carregando o mundo, ora dominando computadores ou satirizando os logotipos dos
sistemas concorrentes, mais uma vez Linus interveio e mandou outra mensagem:
“...eu acho que deveria ser um pingüim, simpático, “gordinho” com cara de satisfeito
como se tivesse acabado de comer.”.

Logo chegou a lista uma sugestão enviada por


Larry Ewing, que usou o programa GIMP rodando
em um sistema Linux para criá-lo. Larry licenciou
a imagem de forma a permitor que qualquer
pudesse fazer as modificações que quisesse da
mesma forma como o sistema é desenvolvido.
Seu nome ainda é um mistério, alguns defendem
a tese que o nome TUX é um acrônimo de
Torvalds LinUX, outros que vem da palavra
Figura 8: Tux, o mascote e simbolo do
TUXEDO que é um sinônimo para smoking em sistema.
inglês, isso porque o corpo do pingüim é preto e
branco lambrando um smoking.

2.9 SISTEMA LINUX OU SISTEMA GNU/LINUX?

Há uma polêmica sem fim na comunidade software livre, como deve ser chamado o
sistema, Sistema Linux ou Sistema GNU/Linux?

Como pôde ser observado, o que foi desenvolvido por Linus Torvalds foi o kernel e
que para colocar este kernel em funcionamento Linus utilizou os aplicativos
desevolvidos para o sistema GNU.
18

Usando a figura 1 como base, podemos exemplificar da seguinte forma:

Aplicativos GNU

Kernel Linux

Hardware

Figura 9: Hardware, KernelLinux e Aplicativos GNU.

Richard Stallman pede que as pessoas chamem o sistema de GNU/Linux e do seu


ponto de vista ele realmente tem razão.

Do outro lado Linus Torvalds, defende que isso é uma grande bobagem, porque sem
um kernel, um punhado de aplicativos não tem função, se instalarmos o Emacs no
Windows o sistema passa a se chamar GNU/Windows? Segundo Linus Torvalds
para seguir a lógica de Richard Stallman o nome do sistema então deveria ser:
GNU/Gnome/OpenOffice/Mozilla/.../Linux.

Enfim, até hoje nem Linus nem Stallman chagaram a um acordo quanto a este
impace, mas cada um de nós deve analisar os dois pontos de vista e aplicar o nome
que julgar mais correto de acordo com o entendimento de cada um.

Para facilitar a leitura neste trabalho, a partir de agora quando for citada a palavra
Linux, esteremos no referindo ao conjunto do sistema, aplicativos GNU, kernel,
servidores e demais programas inseridos nas distribuições.
19

3 CARACTERÍSTICAS DE UM SISTEMA LINUX

É um sistema multi-tarefa podendo executar vários programas simultâneamente, na


verdade o kernel tem a capacisade de escalonar os processos em execução de
modo a transparecer aos usuários que os programas são executados ao mesmo
tempo. Este escalonamento é realizado em um intervalo definido pelo kernel
(geralmente 20 milissegundos). Além do escalonamento delimitado pelo tempo o
kernel prioriza alguns processos de acordo com a importancia e necessidade.

O Linux é um sistema multi-usuário, ou seja, mais de um usuário pode acessá-lo ao


mesmo tempo por meio de terminais virtuais (padrão de todo sistema), físicos ou
outros computadores que simulem terminais (remoto).

Figura 10: Tipos de terminais de um sistema Linux.

O Linux possue uma memória virtual paginada, isso possibilita ao sistema executar
programas e processos que ocupem mais espaço do que o tamanho da memória
real, esta memória paginada é mantida em uma patição isolada do resto do sistema
de arquivos.
20

3.2 SISTEMA MODULARIZADO

O Linux é um sistema modularizado, isso quer dizer que os drivers7 (módulos)


necessários para execução des programas ou utilização de outrss dispositivos de
hardware, não são carregados em sua totalidade quando o sistema é inicializado.

Os módulos são carregados somente quando o kernel decidir ser necessário, o que
ocorre somente quando um processo ou programa solicita. Isso garante ouso
otimizado d memória RAM, pois são carregados na memória somente os módulos
necessáios, entretanto o tempo entre o kernel identificar a necessiade de carregar
um módulo e deixá-lo disponível é maior do em sistemas onde os drivers são
carregados já na inicialização do sistema.

Um driver pode ser carregado diretamente na memória pelo kernel, desde o boot
quando este módulo é compilado incluído no kernel. A performace do módulo é
muito maior mas os recursos por ele alocados ficam permanentemente ocupados.

3.3 GERENCIAMENTO DE PROCESSOS

Por definição um processo é um programa em execução, mas para ser mais


específico, do ponto de vista do sistema um processo é uma estrutura responsável
pela manutenção das informações necessárias à execução de um programa.

Os processos são entidades independentes e individualmente possuem permissões


de acesso e atributos distintos. Para manterem este individualidade os processos
são identificados por um número o PID, ou Process IDentification8, o kernel-linux
como qualquer outro é o responsável por gerenciar os processos em execução no
sistema de forma a otimizar a utilização da CPU, memória e periféricos.

No diretório /proc é criado um subdiretório para cada processo em execução, estes


7 Drivers são programas e estruturas de dados que possibilitam a comunicação de programas e de
sistemas operacionais com os dispositivos conectados a um computador.
8 Process Identification quer dizer Identificação de Processo.
21

subdiretórios recebem os nomes dos PID dos processos, nos arquivos cmdline,
environ e status, que encontram-se dentro desses diretórios são armazenadas
informações detalhadas sobre a execução dos processos.

Para se obter informações sobre os processos pode-se usar os comandos ps, pstree
e top. É possivel também alterar a prioridade de execução dos processos por meio
dos comandos nice e renice, isso dá ao administrador do sistema o controle
individual dos processos em execução.

Este é um esquema simplificado do processamento interno do kernel-linux:

Figura 11: Processamento interno do kernel-linux

Quando um processo está sendo executado ele passa por vários estados e recebe
diversos comandos internos controledos pelo escalonador de processos, para
entendermos melhor este procedimento vamos observar a figura 12:

Figura 12: Os estados de um processo e os comandos do


escalonador de processos.
22

O Linux organiza suas informações em arquivos e esses arquivos podem conter


textos, informações de programação, scripts de shell ou qualquer outro tipo de
informação.

Algumas características sobre o sistema de arquivos do Linux:

• No Windows, os dispositivos de armazenamento (Hds, CD-ROMs e drives


disquetes) são identificados por letras, por exemplo: C:, D: e A:. No Linux
esles são representados de acordo com a sua montagem na própria estrutura
de diretórios, por exemplo: /media/floppy ou /media/cd-rom (antigamente).
• No Windows os nomes dos arquivos seguem o esquema 255 x 3, sendo 255
caracteres para o nome e 3 para a extenção, no Linux os nomes podem ter
até 255 caracteres também mas podem ter mais de um ponto, por exemplo:
arquivo.faculdade.trabalho.tar.gz.
• Como em todo sistema no padrão Unix, o Linux diferencia letras maiúsculas
de minúsculas, por exemplo: relatorio, Relatorio, relatoriO e relAtorio, são
arquivos diferentes para o sistema.
• Não há extenções compulsórias como .COM, .EXE e .BAT para arquivos de
lote (scripts), o que determina se um arquivo é executável ou não são suas
permissões ou a primeira linha do aqruivo no caso dos scripts.

Existem vários sistemas de arquivos para o Linux (EXT2, EXT3, ReiserFS, XFS,
JFS), cada um que possue características particulares que os deferenciam, como
performace, segurança, journaling, entre outras, entretanto todos seguem os
padrões de sistemas de arquivos especificados pelo padrão POSIX.

4.2 ESTRUTURA DE DIRETÓRIOS

A distribuição dos arquivos no disco fica a critério de quem monta uma distribuição,
entretanto para facilitar o aprendizado do Linux e padronizá-lo para compatibilizar
cada distribuição com os mais diversos programas, foi criado o LSB Linux Standad
Base, com o propósito de padronizar certas estruturas como a árvore de diretórios,
23

veja a tabela abaixo:

• / - Diretório raíz do sistema de arquivo.


• /bin/ - Utilitários do usuário, fundamentais para os ambientes de multi-usuário
e mono-usuário.
• /boot/ - Arquivos e programas de configuração que são usados durante o
processo de inicialização do sistema operacional.
• /dev/ - Dispositivos de controle.
• /etc/ - Arquivos e scripts de configuração do sistema.
• /home - Onde ficam os diretórios home das contas dos usuários do sistema.
• /mnt/ - Diretório vazio normalmente utilizado pelos administradores de
sistemas como ponto de montagem temporário.
• /proc/ - Sistema de arquivos de processos.
• /root/ - Diretório home da conta de usuário root.
• /sbin/ - Utilitários de programas e administração, fundamentais para os
ambientes de multi-usuário e mono-usuário.
• /tmp/ - Arquivos temporários.
• /usr/ - A maioria dos utilitários e aplicações de usuários.
• /var/ - Arquivos de log de múltiplos propósitos, arquivos temporários, de
transição, e arquivos de bobina (spool).

5 INTERFACE COM O USUÁRIO

O interpretafor de comandos ou como é mais conhecido Shell, é a camada


responsável em interpretar as instruções enviadas pelo usuário e seus programas ao
sistema operacional. Ele que executa comandos lidos do dispositivo de entrada
padrão (teclado) ou de um arquivo executável.

É a principal ligação entre o usuário, os programas e o kernel. O Linux possui


diversos tipos de interpretadores de comandos, entre eles posso destacar o bash,
ash, csh, tcsh, sh, etc. Entre eles o mais usado é o bash. O interpretador de
24

comandos do DOS, por exemplo, é o `command.com'. Os comandos podem ser


enviados de duas maneiras para o interpretador: interativa e não-interativa.

5.2 INTERATIVA

Os comandos são digitados no aviso de comando e passados ao interpretador de


comandos um a um. Neste modo, o computador depende do usuário para executar
uma tarefa, ou próximo comando.

5.3 NÃO-INTERATIVA

São usados arquivos de comandos criados pelo usuário (scripts) para o computador
executar os comandos na ordem encontrada no arquivo. Neste modo, o computador
executa os comandos do arquivo um por um e dependendo do término do comando,
o script pode checar qual será o próximo comando que será executado e dar
continuidade ao processamento.

Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo
comando ou para compilar algum programa complexo. O shell Bash possui ainda
outra característica interessante: A completação dos nomes. Isto é feito
pressionando-se a tecla "TAB".

Por exemplo, se digitar "ls tes" e pressionar <tab>, o Bash localizará todos os
arquivos que iniciam com "tes" e completará o restante do nome. Caso a
completação de nomes encontre mais do que uma expressão que satisfaça a
pesquisa, ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB
imediatamente depois do beep, o interpretador de comandos irá listar as diversas
possibilidades que satisfazem a pesquisa, para que você possa escolher a que lhe
interessa. A completação de nomes funciona sem problemas para comandos
internos.
25

6. USUÁRIOS E GRUPOS

Para usarmos um sistema GNU/Linux devemos entrar no sistema como um usuário.


Mas precisamos saber que existem categorias de usuários. Eles são distinguidos
pelo nível de suas permissões dentro do sistema.

O usuário root é o super-usuário porque tem todos os privilégios. Tem acesso total a
todos os arquivos do sistema. Em contraste, temos uma conta de usuário sem
privilégios especiais para trabalharmos.

É com essa conta que faremos quase tudo o que precisamos no sistema, utilizando
o root apenas em tarefas administrativas, isto é, instalação, remoção ou
configuração de programas. Além disso, cada usuário no sistema tem um grupo. O
grupo existe para que diferentes pessoas consigam compartilhar seus arquivos entre
si, evitando que, pessoas de outros grupos, tenham acesso a eles.

Quando um usuário é acrescentado ao sistema também é criado um grupo com seu


nome. Isto pode ser alterado, tornando-o membro do grupo "users", por exemplo,
desde a sua criação no sistema. Quando formos criar um usuário de modo que ele j
´a pertença a um grupo específico, este deve existir antes da criação do usuário.

Arquivos: /etc/passwd, /etc/shadow , /etc/group , /etc/skel/.bashrc /etc/profile


Comandos: vipw, vigr, useradd, groupadd, adduser, deluser e userdel
26

7. ARQUIVOS E SUAS PERMISSÕES

Ao trabalharmos com os arquivos, sejam eles criados por nós, ou criados pelo
sistema ao instalar um pacote, precisamos saber a quem pertence e quais suas
permissões.

As permissões de que falamos são: leitura (read), escrita (write) e execução


(execution). Além disso, tem acesso ao arquivo o seu dono, um grupo de usuários
ou todos os usuários do sistema.

Vamos analisar as permissões do arquivo que contém a mensagem que aparece


assim que um usuário entra no sistema (no modo texto).

boni@debian:~$ ls -l /etc/motd
-rw-r--r-- 1 root root 370 Ago 1 14:53 /etc/motd

A primeira trinca (rwx) refere-se às permissões do dono do arquivo, o usuário root,


que pode ler, escrever e executar. A segunda trinca (r-x) permite ao grupo root ler e
executar. A terceira trinca (r-x) permite a todos os outros usuários do sistema ler e
executar.

Podemos mudar as permissões de um arquivo, desde que tenhamos permissão para


isso. Podemos usar o sistema numérico ou o alfabético para fazê-lo. Nesta apostila
vamos aprender o numérico.

A permissão é construida somando-se os valores numéricos correspondentes à


permissão que queremos dar ao arquivo.
27

Vamos copiar o arquivo para o diret´orio temporário e mudar suas permissões com o
comando chmod.

boni@dsu61:/tmp$ ls -l /bin/date
-rwxr-xr-x 1 root root 25820 Jul 26 2001 /bin/date
boni@debian:~$ cp /bin/date /tmp/
boni@debian:~$ cd /tmp
boni@debian:/tmp$ ls -l date
-rwxr-xr-x 1 boni boni 25820 Ago 3 16:51 date
boni@debian:/tmp$ ./date
boni@debian:/tmp$ chmod 777 gzip
boni@debian:/tmp$ ls -l date
-rwxrwxrwx 1 boni boni 25820 Ago 3 16:51 date
boni@debian:/tmp$ ./date
boni@debian:/tmp$ chmod 444 date
boni@debian:/tmp$ ls -l date
-r--r--r-- 1 boni boni 25820 Ago 3 16:51 date
boni@dsu61:/tmp$ ./date
8 Arquivos e suas permiss˜oes
bash: ./date: Permissão negada
boni@dsu61:/tmp$ date
Dom Ago 3 16:54:46 BRT 2003

8. X WINDOW (AMBIENTE GRÁFICO)

8.1 O QUE É X WINDOW?

É um sistema gráfico de janelas que roda em uma grande faixa de computadores,


máquinas gráficas e diferentes tipos e plataformas Unix. Pode tanto ser executado
em máquinas locais como remotas através de conexão em rede.

8.2 INICIANDO O X

O sistema gráfico X pode ser iniciado de duas maneiras:

• Automática – usando o programa xdm que é um programa que roda no ambiente


gráfico X e apresenta uma tela pedindo nome e senha para entrar no sistema (login).
Após entrar no sistema, o X executará um dos gerenciadores de janelas
configurados.
28

• Manual – Através do comando startx, ou xstart. Neste caso o usuário deve entrar
com seu nome e senha para entrar no modo texto e então executar um dos
comandos acima. Após executar um dos comandos, o servidor X será iniciado e
executará um dos gerenciadores de janelas configurados no sistema.

8.3 TERMINAL VIRTUAL (CONSOLE)

Terminal (ou console) é o teclado e tela conectados em seu computador. O


GNU/Linux faz uso de sua característica multi-usuário usando os terminais virtuais.
Um terminal virtual é uma segunda seção de trabalho completamente independente
de outras, que pode ser acessada no computador local ou remotamente via telnet,
rsh, rlogin, etc.

No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais


segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a
um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente
gráfico S). o GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão
disponíveis inicialmente por motivos de economia de memória RAM. Se estiver
usando o modo gráfico, você deve segurar CTRL+ALT enquanto pressiona uma das
teclas de F1 a F6.
29

Figura 13: Esquema de relação entre os processos


e o servidor X.
30

9. COMO OBTER AJUDA NO SISTEMA

9.1 PÁGINAS DE MANUAL

As páginas de manual acompanham quase todos os programas GNU/Linux. Elas


trazem uma descrição básica do comando/programa e detalhes sobre o
funcionamento das opções. Uma página de manual é visualizada na forma de texto
único em rolagem vertical. Também documenta parâmetros usados em alguns
arquivos de configuração.

man [seção] [comando/arquivo]

[seção] - É a seção de manual que será aberta, se omitido, mostra a primeira seção
sobre o comando encontrado (em ordem crescente).

[comando/arquivo] - Comando ou arquivo que deseja pesquisar.

Exemplo:
• man 5 ls: Descrição detalhada da 5ª seção do comando ls.
• man ls: Descrição detalhada de todas as seções do comando ls.

Teclas de navegação
Q: Sai da pagina do manual
R: Redesenha a tela (refresh).
H: Ajuda sobre as opções da página de manual.
S: Salva a página no formato texto no arquivo especificado.
G ou P: Inicio da página.
F ou PageDown: Rola 25 linhas abaixo.
W ou PageUp: Rola 25 linhas acima.
E ou CetaAbaixo: Rola 1 linha abaixo.
K ou CetaAcima: Rola 1 linha acima.
31

As páginas de manual acompanham quase todos os programas GNU/Linux. Elas


trazem uma descrição básica do comando/programa e detalhes sobre o
funcionamento das opções. Uma página de manual é visualizada na forma de texto
único em rolagem vertical. Também documenta parâmetros usados em alguns
arquivos de configuração.

man [seção] [comando/arquivo]

[seção] - É a seção de manual que será aberta, se omitido, mostra a primeira seção
sobre o comando encontrado (em ordem crescente).

[comando/arquivo] - Comando ou arquivo que deseja pesquisar.

Exemplo:

• man 5 ls: Descrição detalhada da 5ª seção do comando ls.

• man ls: Descrição detalhada de todas as seções do comando ls.

Teclas de navegação:

Q: Sai da pagina do manual


R: Redesenha a tela (refresh).
H: Ajuda sobre as opções da página de manual.
S: Salva a página no formato texto no arquivo especificado.
G ou P: Inicio da página.
F ou PageDown: Rola 25 linhas abaixo.
W ou PageUp: Rola 25 linhas acima.
E ou CetaAbaixo: Rola 1 linha abaixo.
K ou CetaAcima: Rola 1 linha acima.
32

9.2 INTERNET

Certamente o melhor suporte ao GNU/Linux é via Internet. Existem boas páginas


Nacionais e Internacionais sobre o GNU/Linux e assuntos relacionados com o
sistema. Na próxima seção procuramos informar somente o endereço, visto que na
própria pagina vão ser encontradas muitas informações (e vários linkes) a suprir a
curiosidade do leitor. Veja abaixo alguns locais úteis.

9.2.1 Páginas de Referência na Internet

• http://www.linux.org - pagina oficial do GNU/Linux

• http://www.linux.trix.net - boletim diário

• http://ldp-br.conectiva.com.br - documentação

• http://expansion.onweb.cx - documentação

• http://www.gnu.org - uma boa pagina

• http://www.conectiva.com.br - uma distribuição Linux

• http://www.redhat.com.br - uma distribuição Linux

• http://www.slackware.com.br - uma distribuição Linux

• http://debian-br.sourceforge.net - uma distribuição linux

• http://www.guiafoca.org - um livro online, totalmente grátis e disponível para


download e consulta em diversos formatos
33

10. SURGIMENTO DAS DISTRIBUIÇÕES

Foi então que alguém teve a idéia de facilitar essa tarefa, fornecendo um método
mais fácil de instalar o GNU/Linux na máquina, oferecendo um conjunto de pacotes
pré-compilados, contendo os programas básicos para o funcionamento do sistema e
outros de uso comum à maioria dos usuários, tudo com um sistema que
automatizava bastante o processo de instalação.

A primeira das distribuições criadas oficialmente e ainda em atividade é a Slackware,


criada e mantida pelo irlandês Patrick Volkerding, em abril de 1993.

A partir de então, o GNU/Linux começou a se difundir mais rapidamente, afinal de


contas, as distribuições tornavam a instalação bem menos difícil, reduzindo um
pouco o nível de conhecimento exigido daqueles que quisessem se aventurar pelo
universo GNU/Linux.

Com o tempo foram sendo desenvolvidas diversas outras distribuições, e diversas


pessoas, empresas e entidades desenvolviam ferramentas novas para o GNU/Linux
como instaladores, sistemas de gerenciamento de pacotes, ferramentas de
administração do sistema, etc.

10.2. Padronização

Durante algum tempo, as distribuições se comportaram como se fossem sistemas


operacionais diferentes, fazendo com que elas fossem muitas vezes incompatíveis
entre elas, o que não era bom para o GNU/Linux como um todo.

Foi então que foi feito um grande trabalho de padronização, com iniciativas como a
Linux Standard Base, que define os padrões que qualquer distribuição deve seguir.
Dessa forma, hoje temos muitas distribuições, mas a compatibilidade entre elas é
bastante satisfatória.
34

10.3. DIFERENÇAS ENTRE AS DISTRIBUIÇÕES

Como qualquer pessoa que tenha conhecimentos suficientes pode construir a sua
distribuição de GNU/Linux, foram criadas centenas de distribuições ao longo desses
11 anos, mais de 300. O que muda basicamente entre uma distribuição e outra é:

Instalação: Muitas distribuições possuem instaladores simples, em modo texto, que


muitas vezes exigem certo conhecimento por parte do usuário para a instalação, ao
passo que outras possuem instaladores gráficos, com muitas ferramentas para
ajudar o usuário leigo a instalar o sistema de maneira fácil e rápida;

Estrutura: Apesar da Linux Standard Base definir um padrão para todo sistema
GNU/Linux, isso nem sempre acontece. Existem alguns padrões diferentes para
localização de arquivos do sistema, arquivos de configuração, diretórios, etc. Um
bom exemplo das diferenças entre as distros é a localização dos scripts de
inicialização. No Debian, que obedece o padrão System V, esses scripts ficam em
/etc/init.d/, enquanto no Slackware, que segue o padrão BSD, eles ficam em
/etc/rc.d/;

Ferramentas: Muitas distribuições desenvolvem ferramentas próprias para facilitar a


configuração e instalação do sistema. O Conectiva Linux, por exemplo, possui o
linuxconf, que reúne ferramentas para fazer diversas configurações no sistema,
como rede, inicialização e outros. O Debian possui a ferramenta APT, que torna a
instalação e remoção de pacotes uma tarefa muito simples e rápida. O Slackware,
por sua vez, possui o pkgtool, com vários pequenos aplicativos que ajudam nas
configurações mais simples, como alternar o gerenciador de janelas padrão e
configurar a rede, por exemplo, mas nenhuma grande ferramenta para facilitar a
administração do sistema;

Sistemas de pacotes: Sistema de pacotes permitem ao usuário instalar e remover


novos pacotes com um único comando de terminal, o que é muito mais prático e
rápido que compilar o código-fonte. O primeiro formato de pacote a fazer sucesso foi
o RPM (RPM Package Manager), da Red Hat. Entretanto, devido a diferenças
35

principalmente na estrutura das distribuições, o formato RPM não funcionava na


maioria das outras distribuições de GNU/Linux, o que levou à
criação/aperfeiçoamento de diversos sistemas de pacotes para outras distribuições.
Assim foram criados os formatos DEB, para o Debian, e TGZ, para o Slackware,
além do sistema Portage para o Gentoo. Esses formatos não são compatíveis uns
com os outros, ou seja, não é possível instalar um pacote DEB num sistema
Slackware, nem um pacote Slackware num sistema Red Hat. Existem ferramentas
que prometem isso, mas nem sempre funcionam.

10.3. PRINCIPAIS DISTRIBUIÇÕES DE GNU/LINUX

10.3.1. DEBIAN

O Debian GNU/Linux a única distribuição que não é mantida, patrocinada ou


vinculada a uma pessoa, entidade ou empresa, sendo todo o seu desenvolvimento e
manutenção realizados por voluntários ao redor do mundo inteiro. Por ser a
distribuição que melhor representa o conceito de Software Livre, ela foi adotada
como distribuição oficial pelo Projeto GNU.

O Debian possui um repositório com mais de 10.000 pacotes que podem baixados e
instalados facilmente através da ferramenta APT (Advanced Packaging Tool). Cada
um desses pacotes possui um mantenedor, responsável por manter atualizações
constantes do pacote.

Muito bem organizada, a equipe de desenvolvimento e manutenção Debian é


formada por profissionais altamente qualificados, que só chegam ao posto após
rígidos testes, um longo período de experiência e a assinatura de um termo de
compromisso onde assumem legalmente a responsabilidade de zelar pela
continuidade do projeto Debian. Igualmente rígidos são os testes realizados antes de
um pacote ser adicionado ao repositório oficial, ou ser classificado com estável.
Essa rigidez deu ao Debian a fama de distribuição mais testada do mundo.

O Debian é um sistema muito flexível e poderoso, extremamente fácil de gerenciar e


36

atualizar, muito seguro e confiável, sendo uma das distribuições mais recomendadas
para uso em servidores. É a única das distribuições GNU/Linux a suportar 11
arquiteturas de hardware diferentes e possui suporte a diversos idiomas, incluindo o
português brasileiro.

O site do projeto Debian é http://www.debian.org.

10.3.2. RED HAT

Lançada oficialmente em novembro de 2004, a Red Hat foi a empresa pioneira no


ramo de GNU/Linux, tornando-se rapidamente a maior empresa do mundo a
trabalhar exclusivamente com o sistema operacional livre. Ainda hoje, a Red Hat é a
distribuição mais utilizada do mundo, e muitas outras distribuições famosas como
SuSE e Mandriva são derivadas dela.

Pioneira no uso de ferramentas para configuração e manutenção do sistema, o Red


Hat foi e ainda é usado principalmente em servidores, a contragosto de muitos que
dizem que seu desempenho não é lá dos melhores, apesar da extrema facilidade do
gerenciamento do sistema, fornecida pelas ferramentas incluídas na distribuição.

No atual modelo de negócios, a Red Hat está desenvolvendo somente soluções


para empresas, através de distribuições fechadas, não disponíveis para download.

O site da Red Hat é o http://www.redhat.com.

10.3.3. FEDORA

Quando a Red Hat decidiu mudar seu modelo de negócios e trabalhar apenas com
soluções para o mercado corporativo, ela deixou de disponibilizar a sua distribuição
para download sob uma licensa de Software Livre. Isso causou uma certa revolta
pela comunidade, que alegava que a Red Hat a estava traindo. Temendo retaliação
e boicote, a Red Hat decidiu criar uma versão livre de seu sistema operacional,
voltado para o desktop, e disponibilizá-lo livremente para download.
37

Chamado Fedora, o projeto alcançou um grande sucesso, e atualmente é utilizado


por um grande número de usuários ao redor do mundo. Por possuir as mesmas
ferramentas do Red Hat, a migração dos usuários aconteceu de forma tranqüila e
nem um pouco traumática.

O Fedora é mantido pela comunidade, e gerenciado pela Red Hat. Atualmente ele
está na versão Core 4.

O site do projeto Fedora é o http://www.redhat.com/fedora/.

10.3.4. MANDRIVA

A distribuição Mandrake e a Conectiva se fundiram em uma nova distrobuição


chamada Mandriva que vai utilizar as tecnologias das ambas as distribuições.

10.3.4.1 MANDRAKE

O Mandrake é uma distribuição francesa baseada no Red Hat, que com o tempo
tomou características próprias e assumiu um sucesso que tornou a Mandrakelinux a
maior empresa do ramo de Linux na Europa.

O principal trunfo do Mandrake é a facilidade de uso. Tudo é simples de fazer, desde


a instalação do sistema até a sua configuração, instalação de novos itens de
hardware e gerenciamento dos programas instalados. Suporta vários idiomas,
incluindo o português brasileiro, e possui muitos serviços para usuários, como o
Mandrake Club, onde o usuário cadastrado recebe as últimas atualizações sobre
segurança, softwares e outros, de forma rápida e automatizada.

Recentemente, a Mandrakelinux comprou a brasileira Conectiva, tornando-se


também a maior empresa do ramo de Linux da América Latina.
38

O site em português da Mandrakelinux é o http://www.mandrakelinux.com/pt-br/.

10.3.4.2 CONECTIVA

A primeira distribuição de GNU/Linux nacional, criada em 1995. Baseada no Red


Hat, o Conectiva Linux destacou-se graças ao ótimo suporte ao hardware
comumente usado no Brasil e aos seus programadores que desenvolveram diversas
ferramentas utilizadas posteriormente por muitas distribuições, como o gerenciador
de pacotes Synaptic e o apt4rpm, uma adaptação do APT do Debian para sistemas
baseados no Red Hat.

A Conectiva tornou-se rapidamente a maior empresa de Linux da América Latina,


tendo sido recentemente adquirida pela francesa Mandrakelinux.

A Conectiva sempre disponibilizou os seus produtos sob a licença GPL, exceto as


versões para empresas do seu sistema operacional. A última versão oficial de sua
distribuição é o Conectiva Linux 10.

O site da Conectiva é o http://www.conectiva.com.br/.

10.3.5.SuSE

O SuSE Linux vem se destacando pelo seu grande crescimento no mercado


corporativo, sendo a empresa que mais cresce atualmente nesse setor. O SuSE
Linux sempre se destacou por ter o melhor suporte a hardware dentre as
distribuições existentes, isso graças à inclusão de drivers não-livres (gratuitos ou
pagos) rm seu sistema operacional.

O SuSE possui uma ferramenta muito versátil, através da qual é possível configurar
todo o sistema, além de gerenciar os programas instalados, tudo ao alcance do
mouse: o YaST (Yet Another Setup Tool, ou Ainda Outra Ferramenta de
Configuração). A união dessa facilidade com o ótimo suporte comercial vem fazendo
do SuSE uma das melhores alternativas para grandes empresas, que não podem
39

abrir mão de suporte técnico especializado e sempre à mão.

Hoje o SuSE é administrado pela americana Novell, que têm colaborado muito com
a comunidade Software Livre, desenvolvendo softwares livres diversos, incluindo
uma alternativo ao Microsoft Exchange.

O site em português do SuSE Linux é o http://www.novell.com/pt-


br/linux/suse/index.html/.

10.3.6. SLACKWARE

Mais antiga das distribuições, criada em abril de 1993 pelo irlandês Patrick
Volkerding, o Slackware é uma distribuição tradicionalista, voltada para usuários que
conhecem o sistema e sabem o que estão fazendo.

O objetivo de Patrick é fornecer um ambiente o mais parecido possível com um


sistema Unix padrão, mantendo a simplicidade e oferecendo total controle do
sistema para o administrador. Além disso, o Slackware é a única distribuição que
não aplica patches (pacotes de correção e modificações) nos seus pacotes, ficando
essa tarefa a cargo do usuário, se assim achar necessário.

Não é a toa que o Slackware tem esse nome: slack significa "preguiçoso", e com
isso Patrick quis deixar bem claro que o Slackware não vai fazer muita coisa por
você e, se o sistema é preguiçoso, o usuário não pode ser, e terá que ler muitas
documentações e mensagens do sistema, para entender o funcionamento de tudo.
Se por um lado isso torna a configuração do sistema um pouco mais lenta e
demorada, uma vez configurado os resultados são surpreendentemente
satisfatórios, além do que, o Slackware acaba fazendo o usuário conhecer o sistema
"na marra".

O melhor uso do Slackware é em servidores dedicados, geralmente estáticos no


sentido de não requererem atualizações constantes de software, e onde o sistema
seja administrado por uma pessoa apenas, que sabe muito bem o que está fazendo.
40

O site oficial do Slackware é o http://www.slackware.org/.

10.3.7. LINUX FROM SCRATCH

O Linux From Scratch não pode ser considerado uma distribuição. O projeto visa dar
assistência àqueles que quiserem instalar o GNU/Linux da forma antiga, ou seja, do
zero, compilando pacote por pacote, configurando arquivo por arquivo. Se de início
isso pode parecer loucura ou até mesmo perda de tempo, há fortes motivos que
justificam uma instalação desse tipo. A primeira delas é o conhecimento que se
adquire sobre a estrutura e funcionamento do GNU/Linux, e o segundo é o
desempenho extremamente superior que se obtém.

No site do projeto é possível encontrar todas as ferramentas e pacotes necessários,


além de documentação e links para aqueles que quiserem sentir na pele as
emoções vividas pelos primeiros usuários do GNU/Linux.

O site do Linux From Scratch é o http://www.linuxfromscratch.org/.

10.3.8. GENTOO

Criado por Daniel Robins [1], o Gentoo [2] é uma distribuição que pode ser definida
como um "Linux From Scratch automatizado". A instalação é feita segundo os
mesmo princípios de uma instalação de GNU/Linux a partir do zero, com todos os
pacotes sendo compilados um a um, incluindo o kernel. A diferença é que o Gentoo
automatiza essas tarefas, através de um sistema de gerenciamento de pacotes, o
Portage [3], que busca e baixa o pacote da Internet, compila-o e instala-o
automaticamente, de acordo com as configurações feitas pelo usuário.

O Gentoo possui arquivos de configuração próprios que definem as opções que


devem ser utilizadas pelo compilador, de forma a otimizar os pacotes para uso na
máquina local. Quando bem configurado, o Portage acaba produzindo um sistema
onde o desempenho é o ponto mais marcante.
41

Outro ponto de destaque do Gentoo é a rica documentação disponível em seu site


oficial. Mesmo usuário de outras distribuições podem se beneficiar de documentos
que tratam de assuntos fundamentais como particionamento, formatação e sistema
de arquivos, muitos desses documentos já traduzidos pela comunidade brasileira do
Gentoo.

O site do Gentoo é o http://www.gentoo.org/.

11. O GERENCIADOR DE PACOTES

11.1. OS PACOTES RPM

O RPM é um poderoso gerenciador de pacotes que permite ao administrador


instalar, remover e obter informações sobre pacotes. Com o RPM é possível também
reparar um banco de dados danificado, construir pacotes a partir de arquivos fonte,
verificar a assinatura digital de pacotes RPM, simular uma instalação, entre outras
coisas. O RPM oferece uma grande gama de funcionalidades, no entanto, serão
mostrados aqui apenas as mais utilizadas, devendo o administrador consultar a
documentação do aplicativo para obter mais detalhes.

Atrás do gerenciador de pacotes está o banco de dados rpm. Ele consiste de uma
lista duplamante ligada que contêm todas as informações de todos os rpm
instalados. O banco da dados lista todos os arquivos que são criados ou modificados
quando um usuários instela um programa e facilita a remoção destes mesmo
arquivos. Se o banco de dados fica corrompido (o que acontece facilmente de o
cliente de rpm é fechado subitamente), as ligações duplas garantem que eles possa
ser reconstruído sem nenhum problema. No computadores com o sistema
operacional RedHat instalado, este banco da dados se encontra em /var/lib/rpm.

Todo pacote RPM tem um rótulo de pacote(package label), que contem as seguintes
informações:
42

o nome do software

a versão do software (a versão tirada da fonte original do pacote)

e edição do pacote (o número de vezes que o pacote foi refeito utilizando a mesma
versão do software)

a arquitetura sob a qual o pacote foi feito (i386, i686, athlon, ppc, etc.)

Os arquivos RPM têm normalmente o seguinte formato:

<nome>-<versão>-<release>.<arquitetura>.rpm

Um exemplo:

nano-0.98-2.i386.rpm

Entretanto, note que o ródulo do pacote está contido com o arquivo e não precisa
necessariamente ser o mesmo que o nome do arquivo. O código-fonte também pode
ser distribuido em pacotes RPM. O rótulo de tais pacotes não contem a parte
destinada para a arquitetura e em seu local inserem "src". Exemplo:

libgnomeuimm2.0-2.0.0-3mdk.src.rpm

Alêm disso, as bibliotecas são distribuidas em dois pacotes separados para cada
versão. Um contendo o código pre-compilado e o outro contendo os arquivos de
desenvolvimento tais como os cabeçalhos, da biblioteca em questão. Estes pacotes
possuem o complemento "-devel" em seus nomes. Os usuários deve verificar se a
versão do pacote de desenvolvimento é a mesma do pacote binário, caso contrário o
funcionamento da biblioteca pode encontrar problemas.

11.2. OS PACOTES DEBIAN


43

O Debian utiliza o formato DEB para os seus pacotes pré-compilados. Muitos


pacotes (mais de 12 000) são mantidos pela equipe de desenvolvedores Debian, e
encontram-se disponíveis em diversos repositórios oficiais espalhados ao redor do
mundo.

Programas que não possuem pacotes DEB devem ser instalados a partir do código-
fonte. ? possível gerar pacotes DEB manualmente através da ferramenta dpkg-deb
ou através de utilitários que automatizam essa tarefa, como o checkinstall.

Os nomes dos pacotes são geralmente formados da seguinte forma:

[foo]_[versão]-[revisão]_[arquitetura].deb

Onde:

foo: Nome dado ao pacote;


versão: A versão do pacote;
revisão: Muitas vezes o mantenedor pode fazer alterações na mesma versão de um
pacote. Nesses casos, são lançadas as revisões, como em 2.2-1, 2.2-2, 2.2-3, onde
todos são pacotes da versão 2.2, mas de revisões diferentes;
arquitetura: A arquitetura de hardware para a qual o pacote foi compilado.
Alguns exemplos de nomes de pacotes:

ladccad_0.4.0-4_i386.deb;
inkscape_0.41-2_i386.deb;
kernel-image-2.6.10-1-k7_2.6.10-6_i386.deb.
44

11.3. FERRAMENTAS DE GERENCIAMENTO DE PACOTES

11.3.1. O DPKG

O dpkg é o principal programa de gerenciamento de pacotes do Debian. Todas as


outras ferramentas utilizam o dpkg para instalar, remover e configurar os pacotes no
sistema.

Sintaxe
# dpkg [opções] [arquivo/pacote]

11.3.2. O APT

O APT (Advanced Packaging Tool, ou ferramenta avançada de empacotamento) é


uma avançada interface para o sistema de gerenciamento de pacotes Debian,
consistindo de vários programas cujos nomes tipicamente começam com "apt-". O
apt-get, apt-cache e o apt-cdrom são ferramentas de linha de comando para
gerenciar pacotes. Eles também funcionam como programas back-end para outras
ferramentas, como o dselect e o aptitude.

O APT trabalha procurando os pacotes nos repositórios Debian, baixando-os e


instalando automaticamente ao comando do usuário, resolvendo automaticamente
dependências e conflitos.

Além de instalar, o APT também permite remover e pesquisar pacotes.


45

12. BIBLIOGRAFIA

Até a página 23.

• Título: Certificação Linux, Autor: Ribeiro, Uirá, Editora: Axcel Books. ISBN:
8573232323

• Título: Guia de Certificação Linux, Autor: Eiras, Marcelo / Mendonça, Nelson,


Editora: Brasport. ISBN: 8574521396

• Título: Linux: Guia do Administrador do Sistema, Autor: Ferreira, Rubem E.,


Editora: Novatec. ISBN: 8575220381

• Internet: Guia Foca GNU/Linux, http://www.guiafoca.org/ , Gleydson Mazioli da


Silva, gleydson@cipsga.org.br .

• Internet: Free Software Foundation, http://www.fsf.org/

• Internet: Open Source Initiative (OSI), http://www.opensource.org/

• Internet: O Sistema Operacional GNU, http://www.gnu.org/home.pt.html

• Internet: Wikipédia em português,


http://pt.wikipedia.org/wiki/P%C3%A1gina_principal

• Documentário: Revolution-OS, http://www.revolution-os.com/

• Internet: Breve Ensaio sobre Software Livre e Código Aberto,


http://gustgr.freeshell.org/foss.txt , Gustavo Rondina
46

13. CONCLUSÃO

Este sistema tem fascinado usuários por todo o planeta eu, André, sou um deles. E
por isso tenho plena certeza que este trabalho não está a altura do tema.

Acredito que o sistema Linux é 100% funcional e está pronto para ser utilizado por
empresas e em alguns casos até pelos usuários domésticos. Seus recursos estão
evoluindo com uma velocidade que nenhuma empresa de software proprietário
consegue acompanhar, sendo uma questão de tempo que o sistema atingir a
maturidade em algumas ferramentas para não dever em nenhum aspecto a seus
concorrentes.

O segredo está na escolha da distribuição, porque algumas, por exemplo: SuSE,


Novell Linux Desktop, Ubuntu, Mandriva, Linspire, são tão ou mais user-friendly
quanto o Windows. Outras como Slackware e Debian são para usuários
apaixonados por computador que gostam de "escovar bits".

Para mim o Linux já está pronto para o Desktop, porque mesmo o Windows ao ser
instalado em uma máquina não oferece um conjunto tão grande de ferramentas de
qualidade (que não puderam ser mostradas neste trabalho) desde o primeiro
BOOT.