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
editarPara 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
editarO 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
editarConforme 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
editarFig. 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
editarGNU é 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
editar1. 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- [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.