Linux Essencial/História do Linux
- Objetivo(s): Oferecer informações sobre a história dos sistemas Unix, Software Livre e projeto GNU.
- Direitos autorais e licença: Veja notas de direitos autorais e licença no final da lição.
1.1 História do Unix
[editar | editar código-fonte]Para entender como foi criado o Linux é necessário entender o sistema operacional em que ele foi baseado, o Unix. O Unix tem suas raízes no projeto MULTICS (Multiplexed Information and Computing Service). Foi 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, com eficácia, 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 origina-se 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, sendo ele 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 - Dennis Ritchie e Ken Thompson - 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 continuarem com a utilização do jogo, eles tiveram que reescrever todo o sistema operacional para um computador disponível que era 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 deUNiplexed 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, o que permitiu 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 até hoje, 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, sendo que a principal delas foi desenvolvida na Universidade de Berkeley, denominada BSD (Berkeley Software Distribution), um software 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 tantas 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 continua 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”. Como as normas da IEEE não podem ser publicadas livremente, há uma tendência em seguir o padrão da Open Group, por ser livre, aceitar contribuições e estar disponível na internet. 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
[editar | editar código-fonte]O Linux foi criado pelo estudante finlandês de Ciências da Computação da Universidade de Helsinque, chamado Linus Torvalds. Ele 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, ele sempre teve 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 de outubro de 1991, Linus disponibilizou a versão 0.02 do núcleo do Linux, através de uma mensagem de news convocando programadores interessados a participarem do processo de desenvolvimento do sistema. (veja link [11], mensagens de news históricas de Linus. As news são fóruns de usuários onde esses conversam sobre determinado tema, nesse caso sobre o Sistema Minix). Essa versão era bem mínima conseguindo rodar as ferramentas como: interpretador de comandos (bash), compilador C (gcc), e compactador (compress). Na época, a versão 0.02 ainda dependia do Minix para ser compilada e era dependente da plataforma i386 (Intel 386).
Fig. 1.4 - Tux: mascote do linux
Essa 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, utilizavam plataformas proprietárias relativamente caras. O Linux se tornou uma opção para resolver esse problema, porque com ele foi possível a utilização de computadores pessoais mais baratos.
- 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, com isso, o Linux acabou sendo o kernel (componente central do sistema operacional ligando aplicativos e o processamento real de dados feito pelo hardware) preferido para rodar as centenas de programas livres disponibilizados 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 rodassem no kernel Linux. As instituições com objetivos comerciais mantiveram o licenciamento livre, 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
[editar | editar código-fonte]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 softwares livres no intuito de formar um sistema todo completo. Dessa forma, a fim de reconhecer o mérito desses dois grandes projetos, a partir desse ponto trataremos o S.O. como “GNU/Linux” e não simplesmente “Linux”.
1.4 Projeto GNU
[editar | editar código-fonte]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 distribuíam livremente seus códigos-fonte de programas.
Fig. 1.6. - Stallman, criador do projeto GNU
O ambiente colaborativo que existia desde essa época entre diversos programadores, 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 para os usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Veremos mais sobre isso, logo 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. 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.
Stallman 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, um ambiente de desenvolvimento usado por Stallman para o desenvolvimento dos outros componentes de software; e o gcc, que é atualmente o compilador C mais popular.
Visando 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 beneficiarem e colaborarem 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 ideia 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) mantido pela Associação de Software Livre, que já realizou vários eventos internacionais anuais, divulgando internamente os projetos nacionais e internacionais de Software Livre.
Origem do Nome
[editar | editar código-fonte]GNU é um acrónimo para GNU is not Unix, e como esse acrónimo usa seu próprio nome em sua definição, ou seja, como ele mesmo se define, trata-se de um acrónimo recursivo. O conceito de recursividade é muito comum entre programadores. De acordo com Richard Stallman, 50% da diversão em criar um programa é escolher o nome para ele. Gnu também é o nome de um mamífero nativo do continente africano muito bem-sucedido na savana, também conhecido como boi-cavalo ou guelengue. Assim, o mascote escolhido foi o animal africano de mesmo nome do Projeto Gnu.
1.5 Exercícios de revisão
[editar | editar código-fonte]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 é e quem criou o projeto GNU? Qual era o seu propósito?
4. O Linux deve ser chamado de GNU/Linux? Por quê?
1.6 Links Indicados
[editar | editar código-fonte]- [1] Definição de Sistema Operacional
- http://www.webopedia.com/TERM/o/operating_system.html
- Define o que é um Sistema Operacional. O Webopedia é uma enciclopédia on-line de definições em informática.
- [2] Uma breve história do Unix
- http://www.english.uga.edu/hc/unixhistory.html
- Página da Universidade de Geórgia, que apresenta uma breve história do Unix.
- [3] Space War - o jogo que motivou a criação do Unix
- http://lcs.www.media.mit.edu/groups/el/projects/spacewar
- Neste site do MIT você pode jogar Space War, através de um applet escrito em Java.
- [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
- http://www.computerhope.com/history/unix.htm
- Mostra uma seqüência histórica dos fatos importantes para a história 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
- http://www.wikipedia.org/wiki/POSIX
- http://www.pasc.org
- É um padrão mantido pelo PASC, um comitê do IEEE, que tem o objetivo de definir características essenciais da família de Sistemas Operacionais Unix, no sentido de facilitar a portabilidade de aplicativos.
- [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, com 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
- a. http://www.sistemasabertos.com.br/linux/historia/linus1.html
- b. http://www.sistemasabertos.com.br/linux/historia/linus2.html
- As duas mensagens históricas de Linus foram postadas em news, no grupo comp.os.minix. A primeira é de 25/08/91, intitulada “O que você gostaria de ver a mais no minix?”. A segunda é de 05/10/91, anunciando a sua primeira versão (0.02) disponível publicamente.
- [12] História do Hurd
- http://www.gnu.org/software/hurd/history.html
- O Hurd é um sistema operacional de código-fonte livre, também bastante apoiado pela Free Software Foundation.
- http://ftp.gnu.org/iso
- Local de armazenamento das imagens para cópia do kernel
- [13] História do FreeBSD
- http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/history.html
- História de um dos S.O.s da família Unix, de código-fonte livre e tão bem sucedido quanto o GNU/Linux.
- [14] FSF - Projeto Gnu
- a. http://www.gnu.org/fsf/fsf.pt.html
- b. http://www.gnu.org/philosophy/philosophy.pt.html
- c. http://www.gnu.org/licenses/gpl-faq.pt.html
- O primeiro endereço fala da fundação criada por Richard Stallman para a promoção do software livre. O segundo apresenta endereços úteis para uma melhor compreensão da filosofia por trás do software livre. O terceiro trata de um FAQ (perguntas frequentes) sobre a GPL.