sistema gnu/linux

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

Upload: andre-simoes

Post on 06-Jun-2015

4.763 views

Category:

Documents


1 download

DESCRIPTION

Apresentação sobre sistemas Linux para composição de nota da disciplina Sistemas Operacionais II.A apresentação pode ser vista aqui: http://www.slideshare.net/alsimoes/introduo-ao-sistema-gnu-linux

TRANSCRIPT

Page 1: Sistema GNU/Linux

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

Page 2: Sistema GNU/Linux

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

Page 3: Sistema GNU/Linux

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

Page 4: Sistema GNU/Linux

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).

Page 5: Sistema GNU/Linux

5

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.

Figura 1: Hardware, Kernel e Shell.

HardwareHardware

KernelKernel

InterfaceInterface

Page 6: Sistema GNU/Linux

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.

Page 7: Sistema GNU/Linux

7

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.

Figura 2: Dennis Ritchie (esquerda), Ken Thompson (direita) e o Mainframe onde nasceu o Unix.

Page 8: Sistema GNU/Linux

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.

Page 9: Sistema GNU/Linux

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

Page 10: Sistema GNU/Linux

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

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.

Figura 4: Richard Stallman, fundador do projeto GNU.

Page 11: Sistema GNU/Linux

11

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.

Figura 5: O PDP-10 da DEC exigia a assinatura de um NDA para utilização.

Page 12: Sistema GNU/Linux

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.

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ú).

Figura 6: Logotipo do projeto GNU.

Page 13: Sistema GNU/Linux

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

Page 14: Sistema GNU/Linux

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.

Page 15: Sistema GNU/Linux

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.

Com um kernel incompleto, entretanto totalmente

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" <[email protected]>

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

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

As I mentioned a month(?) ago, I'm working on a free version of aminix-lookalike for AT-386 computers. It has finally reached the stagewhere 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 isjust version 0.02 (+1 (very small) patch already), but I've successfullyrun 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 alsocontains some README-file and a couple of binaries to work under linux(bash, update and gcc, what more can you ask for :-). Full kernelsource is provided, as no minix code has been used. Library sources areonly partially free, so that cannot be distributed currently. Thesystem 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

Figura 7: Linus Torvalds, criador do kernel linux.

Page 16: Sistema GNU/Linux

16

set it up if you want to run it, so it is not yet a standalone systemfor those of you without minix. I'm working on it. You also need to besomething of a hacker to set it up (?), so for those hoping for analternative to minix-386, please ignore me. It is currently meant forhackers interested in operating systems and 386's with access to minix.

The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. Ifyou are still interested, please ftp the README/RELNOTES, and/or mail mefor additional info.

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

I'm also interested in hearing from anybody who has written any of theutilities/library functions for minix. If your efforts are freelydistributable (under copyright or even public domain), I'd like to hearfrom you, so I can add them to the system. I'm using Earl Chews estdioright now (thanks for a nice and working system Earl), and similar workswill be very wellcome. Your (C)'s will of course be left intact. Drop mea 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

Page 17: Sistema GNU/Linux

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

TUXEDO que é um sinônimo para smoking em

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.

Figura 8: Tux, o mascote e simbolo do sistema.

Page 18: Sistema GNU/Linux

18

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

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.

Figura 9: Hardware, KernelLinux e Aplicativos GNU.

HardwareHardware

Kernel LinuxKernel Linux

Aplicativos GNUAplicativos GNU

Page 19: Sistema GNU/Linux

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).

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.

Figura 10: Tipos de terminais de um sistema Linux.

Page 20: Sistema GNU/Linux

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.

Page 21: Sistema GNU/Linux

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:

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 11: Processamento interno do kernel-linux

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

Page 22: Sistema GNU/Linux

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,

Page 23: Sistema GNU/Linux

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

Page 24: Sistema GNU/Linux

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.

Page 25: Sistema GNU/Linux

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

Page 26: Sistema GNU/Linux

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.

Page 27: Sistema GNU/Linux

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/dateboni@debian:~$ cp /bin/date /tmp/boni@debian:~$ cd /tmpboni@debian:/tmp$ ls -l date-rwxr-xr-x 1 boni boni 25820 Ago 3 16:51 dateboni@debian:/tmp$ ./dateboni@debian:/tmp$ chmod 777 gzipboni@debian:/tmp$ ls -l date-rwxrwxrwx 1 boni boni 25820 Ago 3 16:51 dateboni@debian:/tmp$ ./dateboni@debian:/tmp$ chmod 444 dateboni@debian:/tmp$ ls -l date-r--r--r-- 1 boni boni 25820 Ago 3 16:51 dateboni@dsu61:/tmp$ ./date8 Arquivos e suas permiss˜oesbash: ./date: Permissão negadaboni@dsu61:/tmp$ dateDom 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.

Page 28: Sistema GNU/Linux

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.

Page 29: Sistema GNU/Linux

29

Figura 13: Esquema de relação entre os processos e o servidor X.

Page 30: Sistema GNU/Linux

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.

Page 31: Sistema GNU/Linux

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.

Page 32: Sistema GNU/Linux

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

Page 33: Sistema GNU/Linux

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.

Page 34: Sistema GNU/Linux

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

Page 35: Sistema GNU/Linux

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

Page 36: Sistema GNU/Linux

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.

Page 37: Sistema GNU/Linux

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.

Page 38: Sistema GNU/Linux

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

Page 39: Sistema GNU/Linux

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.

Page 40: Sistema GNU/Linux

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.

Page 41: Sistema GNU/Linux

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:

Page 42: Sistema GNU/Linux

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

Page 43: Sistema GNU/Linux

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.

Page 44: Sistema GNU/Linux

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.

Page 45: Sistema GNU/Linux

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, [email protected] .

• 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

Page 46: Sistema GNU/Linux

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.