Anterior •
Trilha A 
•
Próximo
comentar
Lição 1 - Conceitos Básicos e História do Linux
- Objetivo(s):
- Direitos autorais e licença: Veja notas de direitos autorais e licença no final da lição.
1.1 História do Unix
Para entender como foi criado o Linux é necessário entender o sistema operacional em que ele foi espelhado, o Unix. O Unix tem suas raízes no projeto MULTICS (Multiplexed Information and Computing Service), iniciado em 1965 e desenvolvido por grandes instituições da época: AT&T, GE (General Eletric) e o MIT (Massachusetts Institute of Technology).
Nota: Um sistema operacional (S.O.) é o software que faz a interface entre os aplicativos de usuário com os recursos de hardware do computador (processador, memória, discos rígidos, CD-ROMs, etc). Desta forma, o S.O. visa gerenciar eficazmente os recursos do computador, fornecendo facilidades para os aplicativos, como: segurança, multi-tarefa, multi-usuário, etc. (veja link [1], Definição de sistema operacional)
O projeto MULTICS era muito grandioso e complicado desde o início, seu nome se origina das várias funcionalidades complexas para a época, tais como: multi-usuário, multi-processador, multi-níveis de diretórios, além de outros “multi”. Depois de vários anos, como seus objetivos não foram alcançados em 1969, a AT&T resolveu abandonar o projeto, adotando o sistema GECOS como seu S.O. padrão, porém era muito mais modesto em termos de tecnologia. Segundo declarações da época, cada instituição do consórcio tinha objetivos divergentes, o que levou ao atraso do projeto (veja link [2], Uma breve história do Unix).
Fig. 1.2 - Ken Thompson e Dennis Ritchie - criadores do Unix e da linguagem C
No entanto, Ken Thompson e Dennis Ritchie, que trabalhavam na Bell Labs - na época subsidiária de pesquisa da AT&T- haviam criado um jogo chamado “Space War” (veja link[3], Space War - o jogo que motivou a criação do Unix). Com o fim do projeto e motivados a continuar a utilização do jogo, eles tiveram que reescrever todo o sistema operacional para um computador disponível bem menos potente, um DEC PDP-7, de 4 kbytes de memória. Criando um trocadilho bem humorado, eles resolveram dar o nome UNIX, acrônimo de UNiplexed Information and Computing Service, e que poderia ter sido escrito UNICS, mas resolveram utilizar UNIX, por ter a mesma pronúncia. Thompson concluiu o trabalho de criar todo o Unix no verão de 1969, utilizando a linguagem BCPL (também chamada de B), e que contava com as funções básicas: editor de texto, montador (ou assembler, que transforma linguagem assembly em linguagem de máquina) e interpretador de comandos (ou shell, este será visto mais a frente com maiores detalhes).
O sistema foi continuado dentro da Bell Labs, chegando a poucas dezenas de instalações, porém só obteve grande crescimento após ter sido totalmente reescrito na linguagem C, permitindo uma portabilidade melhor para outras plataformas. A linguagem C foi derivada da linguagem B e criada por Dennis Ritchie e Brian Kernighan. Nesta época, o sistema já contava com mais de 60 comandos, muitos deles ainda utilizados, tais como: cd - trocar de diretórios, chmod - trocar permissões, wc - contar palavras em arquivos, roff - processar texto, etc. O seu crescimento e reconhecimento culminou com a publicação na renomada revista “Communications of the ACM” (veja link [4] ACM - Association for Computer Machinery), em julho de 1974.
Com sua filosofia de simplicidade, padrões abertos e seu licenciamento facilitado pela AT&T, o Unix se espalhou e se desenvolveu rapidamente pelas universidades. Várias versões de Unix foram surgindo - a principal delas foi desenvolvida na Universidade de Berkeley - denominado BSD (Berkeley Software Distribution), liberado publicamente em 1977, predecessor dos atuais e bem-sucedidos BSD's (FreeBSD, OpenBSD e NetBSD). Outras versões comerciais também foram surgindo, tais como: Irix pela SGI em 1982, XENIX pela SCO em 1983, HP-UX pela HP em 1986, SunOS pela Sun em 1987 e AIX pela IBM em 1990 (veja link [5], Cronograma histórico do Unix).
Com tantos variedades de Unix surgindo, todos com a mesma arquitetura e filosofia de sistema, porém com tendências a se divergirem, surgiu o POSIX (Portable Operating System Interface for UniX) em 1985, um conjunto de padrões definidos pelo IEEE e pela ISO que define características essenciais de sistemas Unix (veja os links [6], Padrões IEEE, e [7] Padrões ISO). O POSIX não permitiu compatibilidade de rodar programas binários entre os vários Unix, mas sim facilidade de portar um programa de um Unix para outros, através de compilação de código-fontes em C.
O POSIX contiua mantido até hoje, através de um comitê do IEEE, denominado PASC (Portable Application Standards Committee, veja link [8], Padrão POSIX) e além dele, também surgiu um consórcio de empresas denominado Open Group (veja link [9], Open Group), que realiza um trabalho semelhante, através do padrão “Single Unix Specification”. Devido à esta variedade de sistemas operacionais seguindo os mesmos padrões é que o Unix atualmente é considerado não mais um sistema operacional, mas sim uma família de sistemas operacionais.
1.2 História do Linux
O Linux foi criado pelo estudante finlandês de Ciências da Computação da Universidade de Helsinque, chamado Linus Torvalds, que inspirou-se em um sistema operacional compatível com o Unix desenvolvido por Andrew Tanembaum, chamado Minix (veja link [10], Minix).

Fig. 1.3. - Linus Torvarlds - criador do Linux
Linus começou a interessar-se por computadores quando digitava programas à pedido de seu avô, que possuía um VIC-20, o qual foi, mais tarde, herdado por Linus. Depois desses primeiros contatos, surgiu no finlandês uma interminável vontade de sempre conhecer mais sobre os computadores. Desde então, a maior parte de seu tempo é dedicada a estudos na área de computação. Ele mesmo se considera um “geek”, que é um termo que designa especialistas na área de informática (algo como “nerd” aqui no Brasil). Na fria Finlândia, como dizia a própria mãe, bastavam um quarto e um computador para que Linus se sentisse satisfeito.
A priori, o desenvolvimento do Linux não tinha um projeto definido. A idéia de Linus era fazer um Minix melhor do que o Minix, uma vez que o professor Andrew Tanembaum havia desenvolvido o Minix como uma ferramenta acadêmica, sem intenções de uso cotidiano, e não fazia mudanças sugeridas pelos seus usuários.
Em 5 outubro de 1991, Linus disponibilizou a versão 0.02 (veja link [11], mensagens de news históricas de Linus) do núcleo do Linux, através de uma mensagem de news convocando programadores interessados a participar do processo de desenvolvimento do sistema. Esta versão era bem mínima conseguindo rodar as ferramentas como: interpretador de comandos (bash), compilador C (gcc), compressor (compress). Na época, era ainda dependente do minix para ser compilado e era dependente da plataforma i386 (Intel 386).

Fig. 1.4 - Tux: mascote do linux
Esta versão não tinha nenhuma restrição de uso, assim como outros sistemas da época, tais como: Hurd, que ainda não estava utilizável (veja link [12], História do Hurd); e 386BSD, que deu origem ao atual FreeBSD, liberado em 1993 com diversos problemas no desenvolvimento de projetos na época (veja link [13], história do FreeBSD).
Vários fatores ajudaram a rápida expansão do Linux depois de seu lançamento:
Popularização dos computadores pessoais: o Unix era o S.O. padrão para estudos em universidades, porém, utilizam plataformas proprietárias relativamente caras. O Linux se tornou uma opção para resolver este problema, permitindo o uso dos baratos computadores pessoais.
Projeto GNU: o projeto GNU, criado por Richard Stallman em 1984, surgiu com o intuito de apoiar a liberdade de software (veja seção mais adiante sobre Software Livre). Na época do surgimento do Linux, Stallman apoiava e pretendia adotar o kernel Hurd, porém este não estava utilizável; então o Linux acabou sendo o kernel preferido para rodar as centenas de programas livres disponiblizados pelo projeto, porém o Hurd continua sendo o kernel oficial do sistema operacional GNU.
Distribuições Linux: no sentido de tornar o Linux o mais utilizável possível, surgiram instituições comerciais e não-comerciais que se dedicaram a criar uma combinação ideal de aplicativos (livres ou não) que rodam no kernel Linux. As instituições com objetivos comerciais mantiveram o licenciamento livre, porém mantendo-se através de serviços agregados, tais como: suporte, treinamento e desenvolvimento customizado. Veja seção mais adiante sobre distribuições Linux.
1.3 Software Livre
Conforme citado, uma das principais razões do sucesso do Linux foi a sua adoção como kernel preferido para rodar os aplicativos do projeto GNU pré-existentes na época. Conforme é apresentado nesta seção, o projeto GNU teve como objetivo inicial juntar software livre para formar um sistema todo completo. Desta forma, no intuito de reconhecer o mérito destes dois grandes projetos, a partir deste ponto trataremos o S.O. como “GNU/Linux” e não simplesmente “Linux”.
1.4 Projeto GNU

Fig. 1.5 - Animal-símbolo do projeto GNU
Desde 1971, quando trabalhava nos laboratórios de inteligência artificial do MIT, Richard Stallman fez parte de uma comunidade de programadores que distibuíam livremente seus códigos-fonte de programas.
Mesmo em 1984, quando terminou seus trabalhos na instituição, Stallman continuou seu trabalho no próprio MIT por vários anos, graças ao consenso com as autoridades da instituição.

Fig. 1.6. - Stallman, criador do projeto GNU
O ambiente colaborativo que existia desde esta época entre diversos programadores em compartilhar seus códigos foi ideal para que Stallman idealizasse um movimento que apoiasse a liberdade de uso de software. Assim, Stallman resolveu lançar as bases filosóficas do software livre, que fornecia liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Veremos mais sobre isto adiante, onde serão apresentadas as 4 liberdades fundamentais do software livre.
Além da manutenção da base ideológica do software livre, Stallman também se empenhou em colocar a idéia em prática. Neste sentido, ele tinha como projeto, criar um sistema operacional todo composto por código-fonte livre, visando abandonar todo software proprietário. Surgiu assim, o projeto GNU, ou o início do movimento de software livre.
Ele decidiu também que o S.O. seria compatível com Unix, de forma que fosse fácil de portar aplicativos e obter adeptos. Ele próprio desenvolveu dois grandes componentes que auxiliaram no projeto GNU: O emacs, 1979, escrito (quase que exclusivamente em LISP) foi a ambiente usado por Stallman para o desenvolvimento dos outros componentes; e o gcc, que é atualmente o mais popular compilador C.
No sentido de preservar legalmente o status de liberdade de software, Stallman, assistido por vários advogados, criou uma licença de uso de software denominada GNU GPL - (Licença Pública Geral GNU), ou simplesmente GPL. Assim, desenvolvedores que resolveram liberar seus códigos-fonte, puderam utilizar a licença GPL. O kernel Linux, por exemplo, foi um dos que se licenciou sob a GPL. Veremos sobre esse assunto mais adiante.
No sentido de promover o software livre de forma mais eficiente, Stallman criou a Fundação do Software Livre (veja link [14], FSF) em 1985. A partir de então, várias pessoas (usuários e desenvolvedores) e instituições (empresas e governo) puderam se beneficiar e colaborar com o projeto: doando recursos financeiros, utilizando software GNU, hospedando e divulgando o seu projeto de software GNU, mantendo-se informado da filosofia e aspectos legais, etc.
Há também outras iniciativas que promovem o uso do código aberto, com a idéia de um melhor ambiente de desenvolvimento. Elas surgiram depois da FSF, algumas com atuação mais local e outras de nível internacional. A OSI, Open Source Initiative -
http://www.opensource.org - liderada por Eric Raymond, é um exemplo de instituição sem fins lucrativos que promove a abertura do código. Aqui no Brasil temos o Projeto Software Livre Brasil -
http://www.softwarelivre.org - liderada pelo Governo Estadual do Rio Grande do Sul, já realizou vários eventos internacionais anuais, divulgando internamente os projetos nacionais e internacionais de Software Livre.
1.5 Definindo software livre
Iremos agora definir em poucos parágrafos o que é software livre, de forma simples e didática. No entanto o seu conceito é bastante novo para a maioria, portanto este texto pode ser insuficiente para uma compreensão total, sendo necessário a leitura de textos complementares, tais como
http://www.gnu.org/philosophy/free-sw.pt.html, disponível em português no próprio site da FSF.
Segundo Stallman, software livre é aquele que permite ser livremente executado, estudado, redistribuído e aperfeiçoado. Ou seja, ele deve prover as 4 liberdades principais:
- Liberdade 0 - A liberdade de executar o programa, para qualquer propósito.
- Liberdade 1 - A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades.
- Liberdade 2 - A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo.
- Liberdade 3 - 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 as liberdades 1 e 3, uma vez que não é possível estudar ou adaptar o programa sem acessar o código-fonte.
Em inglês, o termo utilizado para software livre é free software, que na língua inglesa tem um significado ambíguo para “software grátis”. Apesar desta ambiguidade na tradução, é importante frisar que o software livre tem como objetivo principal preservar a liberdade, não o preço. Ou seja, nada impede qualquer um cobrar uma taxa pela distribuição, vendendo mídias com software livre; inclusive esta é uma das principais atividades que financiam a sua difusão. No entanto, o valor cobrado não pode ser muito alto, pois assim como o software é livre, há também livre concorrência; ou seja, uma vez que qualquer um pode copiar e redistribuir o mesmo software, forçando sempre que o próprio mercado estabeleça o preço justo. Outras atividades também rentáveis além da distribuição são os serviços agregados como: treinamento, manuais, suporte e consultoria. Para saber mais sobre este assunto, acesse o endereço:
http://www.gnu.org/philosophy/selling.html.
1.6 Licença GPL
A Licença Pública Gnu ou seu acrônimo GPL é a licença para software livre criada pela FSF, disponível publicamente em
http://www.gnu.org/licenses/gpl.txt. Esta licença possui uma introdução, 12 parágrafos, um termo final e uma instrução final de como aplicá-la. Para ser aplicada, você deve fornecer o software juntamente com o texto integral, sem modificações (inclusive com a introdução e as instruções finais) geralmente em um arquivo em formato texto puro com nome LICENSE, TXT, LICENSING, COPYING, etc.
A GPL além de preservar condições legais de liberdade ao software, também estabelece que modificações ou melhorias futuras ao software sejam livres também, em outras palavras, impedindo que o software nunca seja proprietário. Esta condição extra imposta legalmente ao software livre é denominada copyleft e é implementada de uma forma bastante sutil: é necessário que o desenvolvedor original do software registre os direitos autorais (copyright) sobre o software no último termo, mas que aplique em seus termos de licenciamento que as cópias modificadas do programa sejam distribuidas sob a condição que a sua licença original sempre venha acompanhada e não modificada. Isto evita que outra pessoa ou empresa reclame pelo direito autoral (copyright) do software depois de tê-lo modificado e então inserir termos legais à sua licença original, revogando suas liberdades originais e tornando-o proprietário.
Ela também possui uma versão traduzida, não-oficial em
http://www.magnux.org/doc/GPL-pt_BR.txt, que a FSF declara que não é reconhecida como legalmente oficial, uma vez, que esta tradução não foi realizada por advogado bilíngue - um custo que a FSF não pode arcar por enquanto. No entanto, esta versão em português pode ser utilizada para fins didáticos, com o intuito de melhorar a compreensão da GPL.
No sentido de proteger os desenvolvedores originais, a GPL estabelece que o software é fornecido sem nenhuma garantia, ou seja, os seus desenvolvedores não podem sofrer punições por uma falha do programa. No entanto, terceiros podem oferecer serviços agregados de garantia de suporte e correções no código-fonte caso sejam encontradas falhas.
Além da GPL, existem outras dezenas de licenças de software livre, tais como: LGPL para bibliotecas de software GPL; BSD License para Distribuições BSD como FreeBSD, OpenBSD e NetBSD; X11 License para o ambiente gráfico X utilizado em sistemas Unix; etc. No entanto, estas duas últimas não são copyleft, ou seja, a licença permite que seu código-fonte possa ser modificado e é permitido que o software resultante seja proprietário. Para saber mais sobre outras licenças, acesse o endereço
http://www.gnu.org/licenses/license-list.html.
1.7 Onde encontrar software livre
Existem hoje milhares de projetos de software livre, tanto para servidor quanto para desktop. Atualmente não só a FSF, mas também várias outras instituições já dedicam à tarefa de localizar e até hospedar projetos de software livre. Vejamos alguns dos destaques:
1) Free Software Directory -
http://www.gnu.org/directory - é um diretório (classificador) de software GNU/Linux e suas variantes mantido pela FSF e a UNESCO (Órgão da ONU) . Em junho de 2003, haviam 2.213 projetos indexados.
2) Savannah -
http://savannah.gnu.org - é um site de hospedagem de projetos GNU. Há também um site idêntico, mantido também pela FSF, porém para software livre não-gnu
http://savannah.nongnu.org. Em janeiro de 2004, haviam 260 projetos gnu e 1.728 não-gnu. É bom saber que projetos não-gnu hospedados neste site são na maioria software GPL, só não foram eleitos como oficiais para o projeto GNU; veja link [14] para maiores detalhes.
3) Sourceforge -
http://sourceforge.net - é um site que hospeda projetos de código aberto gratuitamente, funcionando sob seu próprio sistema comercial de desenvolvimento de software colaborativo de mesmo nome, com várias funcionalidades como: controle de versões, integração Web, facilidades de comunicação em equipe (fóruns, mensagens, dentre outros), etc.. É um dos projetos da OSDN (Open Source Development Network), uma subsidiária da VA Software Corporation. Em janeiro de 2004, haviam 73.757 projetos hospedados e 762.997 usuários cadastrados.
4) Freshmeat -
http://freshmeat.net - é um dos melhores localizadores de software GNU (70%) e não-GNU (30%); possui uma classificação de software muito interessante, baseada em valores de vitalidade, popularidade e pontuação que permitem que os usuários possam “separar o joio do trigo”, veja
http://freshmeat.net/stats para saber mais sobre isto. É também um dos projetos da OSDN. Em janeiro de 2004, haviam 31.338 projetos cadastrados.
5) Código Livre -
http://codigolivre.org.br - é uma iniciativa brasileira de hospedagem de software livre, através da Univates (
http://www.univates.br). A base de seu código é do Sourceforge, por isso suas funcionalidades são praticamente as mesmas, porém sua apresentação é toda em português.
Há também outros mecanismos de busca também interessantes, mas que não tiveram destaque nesta seção:
http://www.rpmfind.net/linux/RPM - rpmfind - busca e classifica arquivos rpm (pacotes binários de software);
http://www.ibiblio.org/pub/Linux/ - ibiblio - repositório de arquivos e projetos, inclusive distribuições completas que podem ser baixadas diretamente do site;
http://www.linux.org/apps/index.html - Linux.org - é a área do site linux.org, mantido pela empresa Linux Online.
1.8 Perguntas frequentes
A GPL é um assunto ainda novo para a maioria e de certa maneira, difícil de se compreender rapidamente. No sentido de resolver algumas dúvidas que causam maiores polêmicas, juntamos aqui algumas perguntas mais frequentes, tendo umas com um certo “ar maldoso” e que valem a pena saber responder. Sugerimos também que acesse o FAQ da FSF sobre a GPL, disponível em [15].
1) O GNU/Linux pode se tornar software proprietário? Ou de maneira mais abrangente, um software GPL pode se tornar proprietário?
- Não. O GNU/Linux, ou mais especificamente o kernel, bem como os outros softwares GPL são copyleft, ou seja, possuem termos jurídicos bem claros em seu licenciamento que asseguram que nunca se tornarão software proprietários.
2) O GNU/Linux acabaria se Linus desistisse do projeto?
- Não. Juridicamente a GPL libera que o projeto seja mantido por outros, inclusive por outras instituições além da atual, denominada Kernel.Org - organização sem fins lucrativos que mantém o kernel atualmente, http://www.kernel.org - e que reúne vários voluntários e empresas patrocinadoras. Vários colaboradores são profissionais de empresas que cuidam das distribuições (Red Hat, Conectiva, etc) e de grande porte (IBM, HP, Sun, etc) e que têm negócios importantes que dependem do sucesso deste projeto. Assim, quando uma pessoa ou empresa deixa de atuar no kernel, outra pode livremente assumir o seu lugar.
3) É permitido utilizar parte de software GPL em software proprietário?
4) É permitido utilizar parte de código-fonte de software proprietário em software GPL?
- Não. O software proprietário impediria a liberdade das pessoas para distribuir cópias e modificar o código-fonte proprietário. No entanto, é permitido fazer chamadas à software proprietário e também ligar seu código-fonte à bibliotecas proprietárias, desde que o dono da biblioteca permita e que se faça uma observação na licença GPL. Para saber detalhes, acesse: http://www.gnu.org/licenses/gpl-faq.pt.html#WritingFSWithNFLibs
5) É permitido não distribuir modificações (melhorias ou customizações) de software GPL?
- Sim. A GPL não obriga a distribuição de softwares, mas libera para que outro redistribua caso deseje. Ou seja, se você desenvolver melhorias e customização de software GPL em um cliente, este poderá ou não distribuir suas modificações. Veja o link http://www.gnu.org/licenses/gpl-faq.pt.html#CompanyGPLCostsMoney para saber de maiores detalhes.
6) O GNU/Linux é um projeto “sem dono” e portanto não há “responsáveis” por ele?
- Sim e não. Sob o ponto de vista de propriedade legal, sim; o Linux (kernel) e outros softwares livres não possuem “proprietários legais”. No entanto, sob o ponto de vista filosófico, não; pois “todos” podem possuir sua própria cópia de software GPL (inclusive Linux) e fazer o que bem entende dela, desde que não infrinja as suas liberdades principais. A “responsabilidade” do GNU/kernel é semelhante à da Internet. A Internet apesar de não ter “dono” não quer dizer que não tenha “responsáveis” e nem por isso ela deixa de ser um dos grandes sucessos realizados pela humanidade. Todos seus usuários são co-responsáveis por ela e seu grau de responsabilidade aumenta na medida de sua contribuição. Padrões proprietários, não vingam, pois restringem a “força da rede”, ou seja, a contribuição de inúmeros usuários.
7) É verdade que a GPL é uma licença viral?
- Sim. Esta propriedade “viral” da GPL é denominada copyleft, ou seja, um software derivado de um software GPL sempre será GPL. No entanto, não devemos ser influenciados por pessoas que utilizam este termo com más intenções, associando aos aspectos maléficos dos vírus de computadores; a verdadeira intenção da GPL ser copyleft é garantir que um software GPL nunca será proprietário. Veja mais sobre esta discussão em http://www.wikipedia.org/wiki/Copyleft.

Para saber quem são os responsáveis pelo kernel, procure em sua documentação, geralmente em /usr/src/linux/MAINTAINERS e /usr/src/linux/CREDITS.
Para aqueles que não gostam de contar com somente uma opção, existem também outros kernels. Como o kernel da própria GNU ou o kernel dos BSDs. Por exemplo, além do GNU/Linux, existe também o GNU/Hurd (veja link [12]) e outro é o GNU/Darwin (veja link [16], histórico do GNU/Darwin).Também existem o FreeBSD, NetBSD e OpenBSD que também é uma ótima opção para rodar vários software livres.
1.9 Distribuições GNU/Linux
1.10 O que é uma distribuição GNU/Linux
Uma distribuição GNU/Linux - também chamada de distro - é um Sistema Operacional GNU/Linux funcional, ou seja, não somente utiliza o kernel Linux, mas também uma coleção de softwares livres ou não, testados para funcionar em conjunto.
O kernel linux por si só não torna um sistema funcional, pois ele é responsável pelas funções mais básicas de interação com o hardware, necessitando de dezenas de outros aplicativos complementares que interagem com o usuário, elegidos e fornecidos pela distro, como: interpretador de comando, interface gráfica, editores de texto, etc.
Toda distribuição é definida, criada e mantida por indivíduos, comunidades ou empresas que visam atender os interesses de nicho de mercado diferentes:
- Perfil técnico de usuário: há usuários de todo nível técnico, desde usuários leigos de informática até hackers com altíssimo nível técnico. Assim, algumas distribuições visam alcançar excelência na facilidade de uso, adequando-se aos interesses dos mais leigos; outras visam maior configurabilidade, adequando-se aos interesses dos mais especializados.
- Hardware: as distribuições visam atender diferentes plataformas de hardware, obtendo o melhor desempenho e combinação de software para cada uma. Há distros voltadas tanto para palmtops até mainframes, de arquiteturas CISC (Intel) até RISC (Sparc, PowerPC, etc), etc.
- Regionalidade: cada país pode possuir hardware próprio desenvolvido exclusivamente, além de possuir gostos por softwares diferentes dos demais; além de línguas e dialetos diferentes. Assim, cada distribuição pode ter uma atuação voltada para atender os interesses de uma região específica.
- Tipo de mídia: além das tradicionais distros instaladas em disco rígido, há também distros em disquetes, CD e DVDs.
- Uso específico: existem distros voltadas para finalidades bem específicas, como: firewall, acesso internet, multimídia, etc.
Caso você queira encontrar uma lista com distribuições, com critérios de classificações e informações detalhadas, acesse um dos endereços:
- Linux Weely News - http://old.lwn.net/Distributions/index.php3 [17]: é uma lista mantida por uma das mais populares revistas on-line sobre GNU/Linux. Na contagem em janeiro de 2004, existiam 364 distros em seu banco de dados.
- DistroWatch - http://www.distrowatch.com [18] : é uma lista de distros mantida pessoalmente por Ladislav Bovnar, com várias partes traduzidas em português. Na contagem de junho de 2003, existiam 148 distros em seu banco de dados.

O GNU/Linux é tão flexível, que é até possível criar sua própria distribuição “na unha”. Este é o objetivo do projeto linuxfromscratch, disponível no endereço
http://linuxfromscratch.org. O mesmo documento está disponível em português no endereço
http://lfs-br.codigolivre.org.br/ .
1.11 Diferenciação e padronização
Se por um lado, a flexibilidade de criar distribuições contribui com a facilidade de customização, por outro, leva à uma diferenciação que pode causar dois principais problemas:
- compatibilidade de software: um binário que é compilado em uma distro pode não funcionar em outra quando uma biblioteca necessária não existe ou seu caminho é diferente.
- aculturação de técnicos: quando um especialista em uma distro utiliza outra que ele não conhece, pode perder produtividade, se perdendo em características particulares, que geralmente são: inicialização, caminho de arquivos, arquivos de configuração, gerenciamento de pacotes de software, aplicativos básicos, etc.
No sentido de definir padrões que evitem prejuízos sem perder a flexibilidade, foi criado o projeto Linux Standard Base, ou simplesmente LSB, disponível
http://www.linuxbase.org, mantido pelo Free Standards Group (
http://www.freestandards.org), uma instituição sem fins lucrativos, e patrocinado principalmente por empresas. Assim quando uma distribuição é considerada compatível com a LSB, significa que a distribuição segue os padrões especificados pelo projeto. Um projeto que tem alcançado avanços significantes é o FreeDesktop.org (
http://www.freedesktop.org), que tem servido como ponto de discussão, sugestão e desenvolvimento de padrões e programas para desktop.
1.12 Como escolher “sua distribuição”
Alguns usuários se gabam por estarem utilizando a “melhor distribuição”, como se existisse uma única distribuição que atendesse a necessidade de tudo e todos. No entanto, existem distribuições adequadas para gostos e necessidades diferentes. Portanto, a “melhor distribuição” é aquela que melhor “pontuar” em seus critérios de valor.
Vejamos algumas sugestões de critérios que podem ajudar na escolha de uma distribuição:
- liderança: As seguintes distros são consideradas líderes de mercado pela LWN [17], com forte atuação regionais, todas elas empresas comerciais: Red Hat (América do Norte); Conectiva (América Latina); Suse e Mandrake (Europa); e TurboLinux (Ásia). Algumas distribuições são também consideradas líderes pela LWN, principalmente por serem mantidas por uma numerosa comunidade global: Debian (voluntários leais à causa do software livre) e Slackware (voluntários leais e altamente especializados).
- facilidade de uso: várias distros estão se dedicando para tornar o GNU/Linux cada vez mais fácil de utilizar, ou seja, sendo cada vez mais adequado aos usuários finais. Em janeiro de 2004, a LWN listou 13 distros como voltadas para usuário final (desktop).
- origem: quando uma distribuição nova surge, geralmente ela se baseia em outra pré-existente, evitando “reinventar a roda”. Uma distribuição com muitas distros filhas reflete aspectos positivos como: tradição, popularidade e solidez. Segundo a Distro Watch [18] em janeiro de 2004, 3 principais distribuições são as que mais originaram outras distros: Red Hat (52), Debian (16) e Slackware (11).
- cultura: geralmente a melhor distribuição é aquela que mais conhecemos. A cultura atual da equipe de profissionais deve ser levado em conta, pois uma distro estranha pode provocar perda de produtividade e aumento de custos com treinamento e suporte para adaptação.
- estabilidade: é possível encontrar falhas (bugs) tanto na instalação quanto nos binários oferecidos nas distribuições. Infelizmente não existe uma estatística que determine objetivamente o quanto uma distro é mais estável que outra. Este critério será baseado na sua experiência ou no relato da experiência de terceiros.
- suporte técnico e outros serviços: várias distros oferecem vários serviços agregados que são muito importantes, tal como: suporte; treinamento; consultoria; documentação; avisos de falhas e problemas de segurança; correções e atualizações de software; etc.
- liberdade: a valorização da liberdade do software, é refletida pela forma em que a distribuição relaciona com seus usuários. Algumas atitudes refletem positivamente esta característica, taiscomo: disponibilização de suas versões para download sem custos; disponibilização dos fontes dos programas, juntamente com os seus binários; fornecimento de meios para acompanhar o desenvolvimento da distribuição, visualizando os seus fontes atuais; etc. No site Distro Watch [18] é apresentado uma escala de 1 a 5, classificando seu “nível de liberdade”.
- conjunto de software: você deve analisar se a coleção de software elegida pela distro é a mais adequada para a sua necessidade e gosto. Uma distro inadequada pode exigir muito trabalho para instalar seus softwares preferidos.
1.13 Versões do kernel e da distribuição
As distribuições, além de não seguirem a mesma sequência de numeração do kernel, também não seguem o mesmo formato. Portanto não confunda a versão do kernel com a versão da distribuição.
O kernel utiliza o seguinte formato: X.Y.Z-V, onde X.Y é o nome da versão ou série do kernel; Z é o nome da release (ou correção); V é uma variante e que pode indicar uma modificação realizada por uma distro (cl = Conectiva Linux, mdk = Mandrake, etc) ou até informando que é um kernel para multiprocessamento (smp = single multiprocessing). Por padrão, quando Y é um número ímpar, este é uma versão em desenvolvimento para testes, também chamada de “instável”. Quando Y é par, trata-se de uma versão em produção para uso normal, também chamada de “estável”. Quanto maior for o valor de Z, mais estável e melhorada é a versão utilizada, pois refletem correções de bugs da versão e acréscimo de novas funcionalidades. A série 2.2, por exemplo, ganhou suporte a USB a partir da versão 2.2.18. Para saber a versão do kernel utilizada, execute:
#uname -r
Por exemplo, para 2.4.18-3U8cl é um kernel da série 2.4 (ou versão 2.4), para uso em produção (não é para testes), com conjunto de correções de número 18 e variante 3U8cl (neste caso, modificado pela Conectiva - cl = Conectiva Linux). Você pode se informar das últimas versões do kernel no endereço:
http://www.kernel.org.
A distribuição segue em geral um número A.B. Na maioria, para saber o número da versão você pode executar:
# cat /etc/issue
Este comando mostra o cabeçalho utilizado quando é solicitado o login em modo texto.
Curiosamente, as distros líderes (Conectiva, Red Hat, Slackware, SuSE, Mandrake e TurboLinux) alinham suas numerações bem próximas. Em Junho de 2003, tínhamos as versão em 8 (TurboLinux), 8.2 (SuSE), 9 (Conectiva e Red Hat) ou 9.1 (Mandrake). No entanto, estas numerações não significam que uma de versão 9.1 de uma distro é mais atualizada que uma de versão 8 de outra. Dentre as distribuições mais populares, a única que não segue este alinhamento é a distro Debian, que no mesmo período estava com a versão de número 3.0r1.
1.14 Características do GNU/Linux
Além das características apresentadas durante o decorrer dos capítulos anteriores, neste capítulo serão apresentado algumas características importantes do GNU/Linux, classificando-as como características gerais, servidores e desktops (usuário final).
1.15 Características gerais
Características gerais, usufruidas tanto pelos usuários técnicos e não-técnicos:
- Comunidade solidária: além do suporte comercial que pode ser adquirido, você também pode contar com uma comunidade GNU/Linux bastante solidária e numerosa. Em geral, você pode contar com a ajuda de milhares de pessoas que colaboram em listas de discussão. Duas das listas mais movimentadas nacionalmente são: http://www.dicas-l.unicamp.br (site de dicas fornecidas pela lista de usuários GNU/Linux mantida pela Unicamp) e http://linux-br.conectiva.com.br (site da lista de usuários GNU/Linux mantida pela Conectiva).
- Vasta documentação: além da documentação padrão fornecida em cada software, existe um projeto dedicado para desenvolver e traduzir documentação gratuita classificadas como How-Tos (como fazer), livros e FAQs (perguntas frequentes) em http://www.tldp.org (The Linux Documentation Project) que é o principal repositório de documentação em GNU/Linux.
- Segurança: Mesmo com muitos outros recursos de segurança, o GNU/Linux separa os usuários como comuns e super-usuário (veremos mais detalhes nos capítulos seguintes). Em geral, utiliza-se usuários comuns para executar as tarefas do dia-a-dia, evitando que o sistema seja comprometido por terceiros ou algo semelhante.
- Multiprocessador, multitarefa e multiusuário: O kernel do Linux conta com os mais sofisticados recursos de S.O.s modernos, permitindo suporte à vários processadores (multiprocessador), várias tarefas por processador (multitarefa) e vários usuários utilizando o sistema ao mesmo tempo (multiusuário).
- Melhoria contínua: em geral, um sistema tem a tendência de aumentar a lentidão a cada nova versão. Pelo contrário as distribuíções do GNU/Linux tem melhorado a cada versão, além de melhorar o seu desempenho, também aumentando o suporte à hardware e novas funcionalidades.
Por questões didáticas, outras características mais avançadas somente serão apresentadas futuramente.
1.16 Características para servidores
Aqui apresentaremos algumas características para servidores, percebidas e implementadas por pessoal técnico:
- Servidor Web (páginas Internet): o GNU/Linux é considerado uma das melhores plataformas para rodar o líder de mercado dos Servidores Web (que serve páginas Internet), o servidor Web Apache. Este é um software livre com desempenho imbatível, bastante versátil, modular e bem mais seguro que seus concorrentes. Quanto a questão funcionalidade, existem dezenas de módulos disponíveis, que quando habilitados, multiplicam o nível de funcionalidade do Apache, tudo dentro da sua necessidade.
- Servidor de e-mail: existem diversas opções de servidores de correio eletrônico, na maioria software livre de excelente qualidade, desempenho e funcionalidades. Os servidores mais populares são: sendmail, qmail, postfix e exim.
- Servidor FTP: São servidores de arquivos para Internet, através do protocolo FTP - File Transfer Protocol. O servidores mais populares são: proftp e wu-ftpd.
- Servidor de arquivos: possui suporte à servidor de arquivos utilizando um protocolo denominado NFS, de excelente desempenho, estabilidade e que pode ser utilizado tanto em redes locais quanto na Internet. Também pode servir arquivos através de protocolos nativos de outros sistemas.
- Compartilhamento de conexões internet: compartilha um acesso internet com outros da rede, através de um serviço denominado Proxy, permitindo autenticação e controle de acesso ao conteúdo. O proxy mais conhecido é o Squid.
- Conectividade com várias redes: pode comunicar com vários outros protocolos de rede, inclusive com os protocolos utilizados pela Microsoft (SMB), Apple (Appletalk) e Novell (IPX/SPX). A conectividade com o Windows - é realizada através do software livre Samba - permite compartilhamento de impressoras e arquivos, além de fornecer autenticação para estações Windows 9X, ME, XP, 2000 e 2003.
- Linguagens de programação: existem várias excelentes opções para programação no GNU/Linux. Dentre as opções livres estão ambientes de programação completos para as linguagens PHP (primariamente para Web), Perl e Python (programação geral, inclusive para Web), C e C++, Java, Pascal, além de linguagens novas como Lua e C#. Dentre as opções comercias destaca-se o Borland Kylix, ambiente integrado para desenvolvimento rápido em Object Pascal e C++.
Por questões didáticas, outras características mais avançadas somente serão apresentadas futuramente.
1.17 Características para desktop
- Suporte à vários hardwares: com o aumento de usuários de GNU/Linux, os fabricantes de hardware aumentam seu interesse em desenvolver drivers. Isto é perceptível a cada nova versão do GNU/Linux, onde existe um aumento significativo de drivers, melhorando o suporte à impressoras, scanners, placas de vídeo, fax-modems, dispositivos USB, web-cams, placas multimídia, placas de rede, etc.
- Reconhecimento automático de hardware: um dos recursos mais importantes para os usuários leigos é o reconhecimento automático de hardware. Um dos recursos mais utilizados nas distros é o kudzu – http://sourceforge.net/projects/kudzu/. Ele pode ser rodado na inicialização do sistema, ou até durante o funcionamento total.
- Várias interfaces gráficas: no GNU/Linux, não existe somente uma interface gráfica (gerenciadores de janela), mas dezenas delas; algumas são tão pequenas e leves que cabem em disquetes e outras bastante complexas e com muitas funcionalidades. As mais populares são: Blackbox, Enlightment, Fvwm95, Gnome, Icewm, Qvwm, KDE, WindowMaker, etc. No endereço: http://www.plig.org/xwinman/ há uma boa lista e análise de cada um destas interfaces gráficas e outras.
- Vários pacotes de escritório: existem vários pacotes de escritório disponíveis como software livre. Em geral, são bastante completos, com editores de texto, planilha de cálculo, apresentação, desenho vetorial, etc. Os mais conhecidos são: Koffice, Openoffice, Gnome-Office, etc.
- Execução de binários Windows e DOS: é possível rodar aplicativos Windows e DOS no GNU/Linux através de emuladores. Os mais populares são: Wine (aplicativos Windows) e dosemu (aplicativos DOS).
Por questões didáticas, outras características mais avançadas somente serão apresentadas futuramente.
1.18 Termos utilizados
Especialmente neste capítulo, por ser um capítulo bastante conceitual, vários termos foram utilizados, iremos fazer aqui somente menção àqueles que consideramos essenciais para o entendimento do capítulo e para os capítulos seguintes.
- Compilador
- software que traduz (compila) um código-fonte em código intermediário, geralmente para um formato binário executável.
- Copyleft
- é uma condição aplicada em licenças que impede que um software se torne proprietário, permitindo a modificação do software se e somente se as condições de software livre forem preservadas.
- Distro
- é sinônimo de Distribuição. Distribuição GNU/Linux: é uma coleção de software livres, em grande parte do projeto GNU, que juntamente com o kernel Linux formam um sistema operacional completo.
- FSF
- é acrônimo para Free Software Fundation, a fundação criada por Richard Stallman para promoção do software livre.
- GPL
- é o acrônimo para Licença Pública Geral, que garante liberdade para os seus usuários copiarem, distribuirem, entender e modificar o código-fonte e que os softwares resultantes de modificações sejam também GPL.
- Hurd
- é o kernel padrão do sistema operacional GNU e patrocinado pela FSF. Interpretador de comandos: é o aplicativo que proporciona interação do usuário com o sistema através de comandos.
- Kernel
- principal parte de um sistema operacional, denominado também de núcleo, responsável pela controle de todo o hardware, em seu uso pelos demais softwares.
- LGPL
- é o acrônimo de a Licença Pública Geral para Bibliotecas. Esta é uma variação da GPL, com termos um pouco mais relaxados, usada em algumas bibliotecas GNU.
- Linux
- é o kernel criado por Linus Torvalds, utilizados nos S.O.s funcionais GNU/Linux.
- LSB
- é o acrônimo para Linux Standard Base, ou Base de Padrões Linux mantida por uma instituição sem fins lucrativos - freestandards.org - que cria padrões comum para o Linux. Uma distribuição GNU/Linux que segue a especificação LSB possui várias características em comum com outros que seguem a LSB.
- Minix
- é o sistema operacional baseado nos padrões Unix, para fins didáticos e criado por Andrew Tanenbaum. Este sistema foi o que inspirou Linus quando se criou o GNU/Linux.
- POSIX
- são os padrões criados pelo IEEE, para definir as características básicas do Unix. Projeto GNU: é o projeto criado pelo Richard Stallman que tem como objetivo criar um sistema operacional completo e funcional. Quatro liberdades do software livre: definidas por Richard Stallman, são quatro condições fundamentais para que um software seja considerado livre. Single Unix Especification: é uma especificação semelhante e mais atual que à POSIX, criada e mantida por um consórcio de empresas com negócios com sistemas operacionais Unix. Sistema aberto: são sistemas computacionais que permitem interoperabilidade e portabilidade através da adoção de padrões abertos (disponíveis publicamente). Um caso de sistema aberto é um S.O. baseado nos padrões abertos do Unix. Não se deve confundir com sistemas de código-aberto, que tem significado diferente. Sistema de código-aberto: são aqueles que disponibilizam o código-fonte. Software livre: aquele que provê as quatro liberdades principais do software livre para seus usuários.
- Unix
- atualmente é uma família de sistemas operacionais, que seguem os padrões POSIX e o mais atual, “Single Unix Especification”.
1.19 Links Indicados
- [1] Definição de Sistema Operacional
- [2] Uma breve história do Unix
- [3] Space War - o jogo que motivou a criação do Unix
- [4] ACM - Association for Computer Machinery
- http://www.acm.org
- ACM é uma das maiores associações mundiais em computação. As mais recentes tecnologias são publicadas em suas revistas, fornecendo conteúdo bastante científico.
- [5] Cronograma histórico do Unix
- [6] IEEE – Institute of Eletrical and Eletronics Engineers
- http://www.ieee.org
- É a maior associação sem fins lucrativos de profissionais da área de engenharia elétrica, computação e áreas afins, que além de divulgar informações técnicas, também estabelece padrões de nível internacional.
- [7] ISO – International Organization for Standardization
- http://www.iso.org
- É um órgão internacional sem fins lucrativos que tem como objetivo estabelecer padrões internacionais em quase todas as áreas do conhecimento.
- [8] Padrão POSIX
- [9] Open Group
- http://www.opengroup.org/overview/index.htm
- Este é o site do consórcio de empresas que realizam trabalhos de padronização do Unix, através da “Single Unix Specification” semelhante ao trabalho realizado pelo IEEE com o padrão POSIX.
- [10] Minix
- a. http://www.cs.vu.nl/~ast/minix.html
- b. http://www.minix.org
- Respectivamente, o site oficial do minix e outro site importante deste Sistema Operacional de fins didáticos, criado por Andrew Tanembaum, autor do excelente e popular livro “Operating Systems - Design and Implementation”.
- [11] Mensagens de news históricas de Linus
- [12] História do Hurd
- [13] História do FreeBSD
- [14] FSF - Projeto Gnu
- [15] FAQ - FSF
- [16] GNU-Darwin
- [17] Linux Weely News
- [18] Distro Watch:
1.20 Exercícios de revisão
1. Com suas próprias palavras, responda: o que é um sistema operacional? O que é um kernel ou núcleo de um sistema operacional?
2. O que é o Unix? Qual é a sua relação com o GNU/Linux?
3. O que é POSIX? O que é o “Single Unix Specification”?
4. O que é e quem criou o projeto GNU? Qual era o seu propósito?
5. O Linux deve ser chamado de GNU/Linux? Por que?
6. Quais são as 4 liberdades fundamentais do software livre?
7. Defina:
- Freeware
- Shareware
- Software livre
- Copyleft
- Software de código-aberto
- GPL
- Software GPL
8. Software livre é necessariamente grátis? É permitido cobrar pela distribuição de software livre?
9. O que é necessário para licenciar um software sob a GPL?
10. Entre no seguinte endereço da FSF -
http://www.gnu.org/cgi-bin/license-quiz.cgi - e faça um exame de conhecimento sobre a GPL.
11. Utilizando mecanismos de busca, localize os sites oficiais dos seguintes projetos de software: Apache (servidor web), Squid (proxy), Samba (integração com redes Windows) e gcc (compilador C e C++).
12. O que são distribuições GNU/Linux? O que existe em comum entre todas as distribuições?
13. Faça uma avaliação criteriosa de várias distribuições, escolha a sua favorita e justifique os critérios mais relevantes para você.
14. O que é a LSB? O que significa quando dizemos que uma distribuição é compatível com a LSB?
15. Identifique a versão do kernel e da distribuição instalada em sua escola e/ou casa e/ou trabalho.
1.21 - Direitos autorais e licença
- Autor(es):
- Direito Autoral: Copyright © Sistemas Abertos
- Licença: Esta obra está licenciada sob uma Licença Creative Commons.
Anterior •
Trilha A 
•
Próximo
1.22 - Comentários