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

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

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

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

 

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

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

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ê?

editar