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ódigosfontes 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 fornecer o código para qualquer pessoa.
Figura 4: Richard Stallman, fundador do projeto GNU.
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. Com
um
kernel
incompleto,
entretanto
totalmente
Figura 7: Linus Torvalds, 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"
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 allnighters 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 TUXEDO que é um sinônimo para smoking em
Figura 8: Tux, o mascote e simbolo do 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 , 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. internos.
A completação de nomes funciona sem problemas para comandos
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 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 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 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 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
/bin/date
date
date
date
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>--.<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ódigofonte. ? 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, [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
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.