Capítulo de Amostra

Propaganda
Linux
®
A Bíblia
Tradução da 8a Edição
Christopher Negus
com a colaboração de
Christine Bresnahan
Rio de Janeiro, 2014
PFCG_Book 1.indb 3
13/05/2014 16:48:11
PFCG_Book 1.indb 30
13/05/2014 16:48:13
Introdução
V
ocê não pode aprender Linux sem usá-lo.
Cheguei a essa conclusão depois de mais de uma década ensinando as pessoas
a aprenderem Linux. Você não pode simplesmente ler um livro, você não pode
simplesmente ouvir uma palestra. Você precisa de alguém para guiá-lo e você precisa
mergulhar no assunto e praticar.
Em 1999, a Wiley publicou a primeira edição do livro Linux – A Bíblia. O enorme
sucesso me deu a oportunidade de me tornar um autor de tempo integral e
independente sobre o Linux. Por cerca de uma década, escrevi dezenas de livros sobre
Linux e explorei as melhores maneiras de explicar Linux a partir da quietude no meu
pequeno escritório doméstico.
Em 2008, peguei a estrada. Fui contratado pela Red Hat, Inc. como um instrutor em
tempo integral, ensinando Linux para administradores de sistema profissionais que
procuram a certificação Red Hat Certified Engineer (RHCE). Em meus três anos como
instrutor de Linux, aperfeiçoei minhas habilidades de ensino na frente de pessoas vivas
cuja experiência em Linux variava de zero a um profissional experiente.
Neste livro, espero aplicar minha experiência em texto transformando você de alguém
que nunca usou o Linux em alguém com as habilidades para se tornar um profissional
em Linux.
Agora em sua oitava edição, este livro adquiriu um escopo muito amplo em edições
anteriores. O livro cobria várias distribuições do Linux, descrevia como executar
aplicativos, tocava na questão da administração de sistema e fornecia uma entrada
para o desenvolvimento de software em Linux. Apesar de ter sido eleito um dos cinco
melhores livros de todos os tempos do Linux há três anos, Linux – A Bíblia tinha
perdido seu caminho.
Esta oitava edição de Linux – A Bíblia representa uma grande revisão. Quase todo o
conteúdo anterior foi reescrito ou, na maioria dos casos, completamente substituído. O
novo foco do livro pode ser resumido das seguintes maneiras:
■■
Iniciante a profissional certificado: Desde que você tenha usado um computador, mouse e teclado, você pode começar com este livro. Nós lhe dizemos como
obter o Linux e como começar a usá-lo, passamos por temas críticos e, por fim,
chegamos a como dominar a administração e segurança do sistema.
■■
Focado no administrador de sistema: Quando tiver concluído a leitura deste
livro, você não só vai saber como usar o Linux mas como modificá-lo e mantê-lo.
Todos os tópicos necessários para se tornar um Red Hat Certified Engineer são
abordados neste livro.
■■
Ênfase nas ferramentas de linha de comando: Embora a interface gráfica de
janelas para gerenciar o Linux tenha melhorado significativamente nos últimos
anos, muitos recursos avançados só podem ser utilizados digitando comandos e
editando arquivos de configuração manualmente. Nós ensinamos como se tornar
proficiente com o shell de linha de comando do Linux.
xxxi
PFCG_Book 1.indb 31
13/05/2014 16:48:13
Introdução
■■
Destinado a menos distribuições do Linux: Em edições anteriores, descrevi
cerca de 18 diferentes distribuições do Linux. Com apenas algumas exceções
notáveis, distribuições do Linux mais populares são ou são baseadas no Red Hat
(Red Hat Enterprise Linux, Fedora, CentOS etc) ou no Debian (Ubuntu, Linux
Mint, Knoppix etc). Concentrei-me no Red Hat, porque é onde estão os trabalhos
com Linux mais bem remunerados; abordo um pouco o Ubuntu porque é com ele
que muitos dos maiores fãs do Linux começam.
■■
Muitas, muitas demos e exercícios: Em vez de apenas dizer o que o Linux faz,
eu realmente mostro o que ele faz. Então, para garantir que aprendeu o assunto,
você tem a oportunidade de experimentar os exercícios sozinhos. Todos os procedimentos e exercícios foram testados para funcionar no Fedora ou no Red Hat
Enterprise Linux. Muitos vão funcionar no Ubuntu também.
Como este livro está organizado
O livro está organizado para que você possa começar logo no início com o Linux e
crescer para se tornar um administrador de sistema Linux profissional e um “power
user”, um usuário avançado.
A Parte I, “Começando”, inclui dois capítulos destinados a ajudar você a entender o que
é o Linux e apresenta um desktop Linux:
■■
O Capítulo 1, “Começando com o Linux”, aborda temas como o que é o sistema
operacional Linux, de onde ele vem e como começar a usá-lo.
■■
O Capítulo 2, “Criando o desktop perfeito em Linux”, fornece informações sobre
como você pode criar um sistema desktop e usar alguns dos recursos de desktop
mais populares.
A Parte II, “Tornando-se um usuário avançando do Linux”, fornece detalhes em
profundidade sobre como usar o shell do Linux, trabalhar com sistemas de arquivos,
manipular arquivos de texto, gerenciar processos e usar scripts de shell:
■■
O Capítulo 3, “Utilizando o Shell”, inclui informações sobre como acessar um
shell, executar comandos, recuperar comandos (usando o histórico) e usar o completamento de comando com a tecla Tab. O capítulo também descreve como usar
variáveis, aliases e páginas do manual.
■■
O Capítulo 4, “Movendo-se pelo sistema de arquivos”, inclui comandos para
listar, criar, copiar e mover arquivos e diretórios. Tópicos mais avançados neste
capítulo incluem a segurança do sistema de arquivos, tais como a posse de arquivo, permissões e listas de controle de acesso.
■■
O Capítulo 5, “Trabalhando com arquivos de texto”, inclui tudo, desde editores de
textos básicos até ferramentas para encontrar arquivos e pesquisar texto dentro de
arquivos.
■■
O Capítulo 6, “Gerenciando processos em execução”, descreve a forma de ver os
processos que estão em execução no sistema e alterar esses processos. Maneiras
de alterar processos incluem eliminar, pausar e enviar outros tipos de sinais.
■■
O Capítulo 7, “Escrevendo scripts de shell simples”, inclui comandos e funções
de shell que você pode reunir em um arquivo para ser executado como um único
comando.
xxxii
PFCG_Book 1.indb 32
13/05/2014 16:48:13
Introdução
Na Parte III, “Tornando-se um administrador de sistema Linux”, você aprende a
administrar sistemas Linux:
■■
O Capítulo 8, “Aprendendo administração de sistema”, fornece informações
básicas sobre ferramentas gráficas, comandos e arquivos de configuração para a
administração de sistemas Linux.
■■
O Capítulo 9, “Instalando o Linux”, aborda as tarefas de instalações comuns,
como o particionamento de disco e a seleção inicial do pacote de software, assim
como ferramentas de instalação avançadas, como a instalação a partir de arquivos
kickstart.
■■
O Capítulo 10, “Obtendo e gerenciando software”, fornece uma compreensão de
como os pacotes de software funcionam e como obtê-los e gerenciá-los.
■■
O Capítulo 11, “Gerenciando contas de usuário”, discute ferramentas para adicionar e excluir usuários e grupos, bem como a forma de centralizar o gerenciamento de conta de usuário.
■■
O Capítulo 12, “Gerenciando discos e sistemas de arquivos”, fornece informações
sobre a adição de partições, criar e montar sistemas de arquivos, bem como trabalhar com gerenciamento de volume lógico.
Na Parte IV, “Tornando-se um administrador de servidor Linux”, você aprenderá a criar
servidores de rede poderosos e as ferramentas necessárias para gerenciá-los:
■■
O Capítulo 13, “Entendendo administração de servidores”, aborda o registro em
log remoto, ferramentas de monitoramento e o processo de inicialização do Linux.
■■
O Capítulo 14, “Administrando redes”, discute a configuração de rede.
■■
O Capítulo 15, “Iniciando e parando serviços”, fornece informações sobre como
iniciar e parar serviços de rede.
■■
O Capítulo 16, “Configurando um servidor de impressão”, descreve como configurar impressoras para usar localmente no seu sistema Linux ou através da rede a
partir de outros computadores.
■■
O Capítulo 17, “Configurando um servidor web”, descreve como configurar um
servidor Web Apache.
■■
O Capítulo 18, “Configurando um servidor FTP”, aborda os procedimentos para
a configuração de um servidor FTP que pode ser usado para permitir que outros
baixem arquivos de seu sistema Linux através da rede.
■■
O Capítulo 19, “Configurando um servidor de compartilhamento de arquivos do
Windows (Samba)”, abrange configuração do servidor de arquivos Windows com
o Samba.
■■
O Capítulo 20, “Configurando um servidor de arquivos NFS”, descreve como usar
os recursos de rede do sistema de arquivos para compartilhar pastas de arquivos
entre sistemas em uma rede.
■■
O Capítulo 21, “Solução de problemas do Linux”, abrange ferramentas populares
para a solução de problemas no seu sistema Linux.
Na Parte V, “Aprendendo técnicas de segurança do Linux”, você aprende a proteger seus
sistemas e serviços Linux:
■■
O Capítulo 22, “Entendendo a segurança básica do Linux”, aborda os conceitos e
técnicas básicas de segurança.
xxxiii
PFCG_Book 1.indb 33
13/05/2014 16:48:13
Introdução
■■
O Capítulo 23, “Entendendo segurança avançada do Linux”, fornece informações
sobre o uso de Pluggable Authentication Modules (PAM) e ferramentas de criptologia para reforçar a segurança e autenticação do sistema.
■■
O Capítulo 24, “Aprimorando a segurança do Linux com o SELinux”, mostra como
ativar Security Enhanced Linux (SELinux) para garantir os serviços do sistema.
■■
O Capítulo 25, “Protegendo Linux na rede”, abrange recursos de segurança de
rede, como firewalls iptables, para garantir a segurança dos serviços do sistema.
A Parte VI contém dois apêndices para ajudar você a obter o máximo de sua
compreensão do Linux. O Apêndice A, “Mídia”, fornece orientação sobre download de
distribuições do Linux. O Apêndice B, “Respostas dos Exercícios”, fornece soluções de
exemplo para os exercícios incluídos nos capítulos 2 a 25.
Convenções utilizadas neste livro
Ao longo do livro, uma tipografia especial indica código e comandos. Comandos e
códigos são mostrados em uma fonte monoespaçada:
This is how code looks.
No caso de um exemplo incluir tanto a entrada como a saída, a fonte monoespaçada é
ainda usada, mas a entrada é apresentada em negrito para diferenciar um do outro. Eis
um exemplo:
$ ftp ftp.handsonhistory.com
Name (home:jake): jake
Password: ******
Quanto aos estilos no texto:
■■
Novos termos e palavras importantes aparecem em itálico quando introduzidos.
■■
Teclas de atalho aparecem assim: Ctrl+A
■■
Nomes de arquivos, URLs e código dentro do texto aparecem assim: persistence.
properties.
Os seguintes itens chamam a atenção para pontos que são particularmente importantes.
Nota
Uma caixa de Nota fornece informações extras para as quais você precisa dedicar uma atenção
especial.
Dica
Uma caixa de Dica mostra uma maneira especial de realizar uma tarefa em particular.
xxxiv
PFCG_Book 1.indb 34
13/05/2014 16:48:13
Introdução
Atenção
Uma caixa de Atenção alerta para você tomar cuidado especial ao executar um procedimento ou
seu hardware ou software pode ser danificado.
Mergulhando no Linux
Se você é iniciante em Linux, pode ter vagas ideias sobre o que ele é e de onde veio. Você
já deve ter ouvido algo sobre ele ser “free” no sentido de “gratuito” ou no sentido de
“livre” (como a liberdade de usá-lo como você quiser). Antes de começar a pôr as mãos
no Linux (o que faremos em breve), o Capítulo 1 procura responder algumas de suas
perguntas sobre as origens e os recursos do Linux.
Dedique um tempo para estudar este livro a fim de entender o Linux e como você pode
fazê-lo trabalhar para atender suas necessidades. Esse é o seu convite para entrar e dar o
primeiro passo para se tornar um especialista em Linux!
Visite o site Linux Bible
Para encontrar links para as várias distribuições do Linux, dicas sobre como obter
a certificação Linux e correções para o livro à medida que se tornam disponíveis,
visite http://www.wiley.com/WileyCDA/.
xxxv
PFCG_Book 1.indb 35
13/05/2014 16:48:13
Parte I
Começando
nesta parte
Capítulo 1
Começando com o Linux
Capítulo 2
Criando o Desktop Perfeito em Linux
PFCG_Book 1.indb 3
13/05/2014 16:48:13
PFCG_Book 1.indb 4
13/05/2014 16:48:13
1
C a p ítulo
Começando com o Linux
NESTE CAPÍTULO
Aprendendo o que é Linux
Aprendendo de onde o Linux veio
Escolhendo distribuições Linux
Explorando oportunidades profissionais com o Linux
O
Tornando-se certificado em Linux
Linux é um dos avanços tecnológicos mais importantes do século XXI. Além
de seu impacto sobre o crescimento da internet e do seu lugar como uma
tecnologia capacitadora para uma série de dispositivos baseados em computador,
o desenvolvimento do Linux tem sido um exemplo de como projetos colaborativos
podem ultrapassar o que as pessoas e empresas individuais podem fazer sozinhas.
O Google roda milhares e milhares de servidores Linux para fornecer sua tecnologia de
busca. Seus telefones Android são baseados no Linux. Da mesma forma, quando você
baixa e executa o Google Chrome OS, você tem um navegador que é apoiado por um
sistema operacional Linux.
O Facebook constrói e implanta em seu site usando o que é conhecido como uma pilha
LAMP (Linux, servidor web Apache, banco de dados MySQL e linguagem de script web
PHP) — todos são projetos open source, isto é, baseados em código livre. Na verdade, o
próprio Facebook usa um modelo de desenvolvimento de código-fonte aberto, tornando
o código-fonte para os aplicativos e ferramentas que guiam o Facebook disponíveis para
o público. Esse modelo tem ajudado o Facebook a eliminar bugs rapidamente, obter
contribuições de todo o mundo e impulsionar o crescimento exponencial dessa rede social.
Organizações financeiras que têm trilhões de dólares dependendo da velocidade e da
segurança de seus sistemas operacionais também se baseiam muito no Linux. Essas
incluem as bolsas de valores de Nova York, Chicago e Tóquio.
A ampla adoção do Linux em todo o mundo criou uma demanda enorme pelo seu
conhecimento. Este capítulo inicia você em um caminho para se tornar um especialista
em Linux, ajudando-o a entender o que o Linux é, de onde veio e quais são suas
oportunidades por se tornar proficiente nesse sistema. O restante deste livro fornece
atividades práticas para lhe ajudar a ganhar essa experiência.
5
PFCG_Book 1.indb 5
13/05/2014 16:48:13
Parte I: Começando
Entendendo o que é o Linux
Linux é um sistema operacional de computador. Um sistema operacional consiste no
software que gerencia seu computador e permite que você execute aplicativos nele. O que
caracteriza os sistemas operacionais Linux e similares é:
■■
Detectar e preparar hardware — Quando o sistema Linux inicializa (quando
você liga seu computador), ele olha para os componentes em seu computador
(CPU, disco rígido, placas de rede etc.) e carrega os softwares (drivers e módulos)
necessários para acessar dispositivos de hardware específicos.
■■
Gerenciar processos — O sistema operacional deve manter o controle de vários
processos em execução ao mesmo tempo e decidir quais têm acesso à CPU e
quando. O sistema também deve oferecer formas de iniciar, parar e alterar o
status dos processos.
■■
Gerenciar memória — Memória RAM e espaço de troca (memória estendida)
precisam ser alocados para aplicativos conforme eles precisam de memória. O
sistema operacional decide como as solicitações de memória são manipuladas.
■■
Fornecer interfaces de usuário — Um sistema operacional deve fornecer
maneiras de acessar o sistema. Os primeiros sistemas Linux eram acessados
a partir de um interpretador de linha de comando chamado shell. Hoje, as
interfaces gráficas desktop estão comumente disponíveis.
■■
Controlar sistemas de arquivos — Estruturas do sistema de arquivos são
incorporadas ao sistema operacional (ou carregadas como módulos). O sistema
operacional controla a posse e acesso aos arquivos e diretórios que contêm os
sistemas de arquivos.
■■
Proporcionar acesso e autenticação de usuário — Criar contas de usuários e
definir limites para eles é uma característica básica do Linux. Separar contas de
usuário e de grupo permite o controle de seus próprios arquivos e processos.
■■
Oferecer utilitários administrativos — No Linux, existem centenas (talvez
milhares) de comandos e janelas gráficas para fazer coisas como adicionar
usuários, gerenciar discos, monitorar a rede, instalar softwares e, de maneira
geral, proteger e gerenciar seu computador.
■■
Iniciar serviços — Para utilizar impressoras, tratar mensagens de log e fornecer
uma variedade de sistemas e serviços de rede, processos rodam em segundo
plano, à espera de pedidos por vir. Há muitos tipos de serviços que são
executados no Linux e ele fornece diferentes maneiras de iniciar e parar esses
serviços. Em outras palavras, enquanto o Linux possui navegadores para exibir
páginas da web, ele também pode ser aquele que serve essas páginas a outros.
Recursos de servidores populares incluem servidores de web, e-mail, banco de
dados, impressora, arquivo, DNS e DHCP.
■■
Ferramentas de programação — Uma grande variedade de utilitários de
programação para criar aplicativos e bibliotecas a fim de implementar interfaces
especiais estão disponíveis com o Linux.
Como um gerenciador de sistemas Linux, você precisa aprender a trabalhar com as
características descritas anteriormente. Embora muitos recursos possam ser gerenciados
usando interfaces gráficas, uma compreensão da linha de comando do shell é
fundamental para alguém que administra sistemas Linux.
6
PFCG_Book 1.indb 6
13/05/2014 16:48:14
Capítulo 1: Começando com o Linux
Os modernos sistemas Linux agora vão muito além do que podiam os primeiros sistemas
UNIX (em que o Linux se baseava). Recursos avançados no Linux, frequentemente
usados em grandes empresas, incluem os seguintes:
■■
Clustering — O Linux pode ser configurado para trabalhar em “clusters”, ou
aglomerados de computadores, de modo a fazer vários sistemas aparecerem como
um sistema para o mundo exterior. Os serviços podem ser configurados para se
distribuírem entre os nós do cluster, enquanto, para aqueles que os utilizam,
pareçam estar funcionando sem interrupção.
■■
Virtualização — Para gerenciar recursos de computação de forma mais eficiente,
o Linux pode funcionar como um servidor de virtualização. Nesse servidor,
você pode executar outros sistemas Linux, Microsoft Windows, BSD, ou outros
sistemas operacionais como convidados virtuais. Para o mundo exterior, cada
um dos convidados virtuais aparece como um computador separado. O KVM e o
Xen são duas tecnologias em Linux para a criação de máquinas virtuais. Red Hat
Enterprise Virtualization é um produto da Red Hat, Inc. para gerenciar múltiplos
servidores de virtualização, convidados virtuais e armazenamento de dados.
■■
Computação em tempo real — O Linux pode ser configurado para computação
em tempo real, em que os processos de alta prioridade possam esperar uma
atenção rápida e previsível.
■■
Armazenamento especializado — Em vez de apenas armazenar dados no
disco rígido do computador, várias interfaces especializadas de armazenamento
local e em rede estão disponíveis em Linux. Dispositivos compartilhados de
armazenamento em Linux incluem o iSCSI, o Fibre Channel e o InfiniBand.
1
Muitos desses tópicos avançados não são abordados neste livro. Mas os recursos
abordados aqui para usar o shell, trabalhar com discos, iniciar e parar serviços e
configurar uma grande variedade de servidores devem servir como uma base para
trabalhar com esses recursos avançados.
Entendendo como o Linux difere
de outros sistemas operacionais
Se você é novo no Linux, é provável que tenha usado um sistema operacional Microsoft
Windows ou Apple Ma­c OS. Embora o Mac OS X tenha suas raízes em um sistema
operacional de software livre, referido como Berkeley Software Distribution (mais sobre
isso mais adiante), os sistemas operacionais da Microsoft e da Apple são considerados
sistemas operacionais proprietários. Isso significa que:
■■
Você não pode ver o código usado para criar o sistema operacional.
■■
Você, portanto, não pode alterar o sistema operacional em seus níveis mais básicos
se ele não atender suas necessidades — e você não pode usar o sistema operacional
para construir seu próprio sistema operacional a partir do código-fonte.
■■
Você não pode verificar o código para encontrar erros, explorar vulnerabilidades
de segurança, ou simplesmente saber o que o código está fazendo.
■■
Você pode não ser capaz de facilmente conectar seu próprio software com
o sistema operacional se os criadores desse sistema não quiserem expor as
interfaces de programação que você precisa para o mundo exterior.
7
PFCG_Book 1.indb 7
13/05/2014 16:48:14
Parte I: Começando
Você pode ler as declarações sobre o software proprietário e dizer: “O que me importa?
Eu não sou um desenvolvedor de software. Eu não quero ver ou mudar o modo como
meu sistema operacional é construído.”
Isso pode ser verdade. Mas o fato de que outros podem ter software livre e de códigofonte aberto e usá-lo como quiserem tem impulsionado o crescimento explosivo da
internet, telefones celulares (pense no Android), dispositivos de computação especiais
(pense no Tivo) e centenas de empresas de tecnologia. O software livre baixou os custos
de computação e permitiu uma explosão de inovação.
Talvez você não queira usar o Linux — de forma semelhante a que o Google, o Facebook
e outras empresas têm usado — para construir a fundação de uma empresa de bilhões
de dólares. Mas essas e outras empresas que agora contam com o Linux para conduzir
suas infraestruturas de computador estão precisando de cada vez mais pessoas com as
habilidades para rodar esses sistemas.
Você pode se perguntar como um sistema de computador que é tão poderoso e flexível
tornou-se livre também. Para entender como isso aconteceu, você precisa ver de onde o
Linux veio. Assim, a próxima seção deste capítulo descreve o caminho estranho e sinuoso
do movimento do software livre que levou ao Linux.
Explorando a história do Linux
Algumas histórias do Linux começam com essa mensagem postada por Linus Torvalds
no newsgroup comp.os.minix em 26 de agosto de 1991 (http://groups.google.
com/group/comp.os.minix/msg/b813d52cbc5a044b):
Linus Benedict Torvalds
Olá pessoal por aí usando minix Estou criando um sistema operacional (livre) (apenas um hobby, não será grande e
profissional como o gnu) para clones AT 386(486). Ele vem crescendo desde abril e está
começando a ficar pronto. Eu gostaria de qualquer feedback das pessoas sobre o que
gostaram ou não no minix, uma vez que meu OS se parece um pouco com ele (mesmo
layout físico do sistema de arquivos (devido a razões práticas, entre outras coisas)...
Quaisquer sugestões serão bem-vindas, mas não prometo que vou implementá-las. :-)
Linus ([email protected])
P.S.: Sim — não contém nenhum código minix e tem um fs multi-threaded. NÃO é
portável [sic] (usa alternância de tarefas de 386 etc) e provavelmente nunca vai suportar
outra coisa senão discos rígidos AT, já que isso é tudo o que tenho. :-(
O Minix era um sistema operacional tipo UNIX que rodava em PCs no início da década de
1990. Assim como o Minix, o Linux também era um clone do sistema operacional UNIX.
Com poucas exceções, como o Microsoft Windows, sistemas de computadores mais
modernos (incluindo Mac OS X e Linux) eram provenientes de sistemas operacionais
UNIX, criados originalmente pela AT&T.
Para apreciar verdadeiramente como um sistema operacional livre poderia ter sido
projetado com base em um sistema proprietário dos Laboratórios Bell da AT&T, ajuda
entender a cultura em que o UNIX foi criado e a cadeia de eventos que tornaram possível
reproduzir livremente a essência desse sistema.
8
PFCG_Book 1.indb 8
13/05/2014 16:48:14
Capítulo 1: Começando com o Linux
Nota
Para saber mais sobre como o Linux foi criado, pegue o livro Just For Fun: The Story of an
Accidental Revolutionary, de Linus Torvalds (Harper Collins Publishing, 2001).
1
A cultura de fluxo livre do UNIX no Bell Labs
Desde o início, o sistema operacional UNIX foi criado e nutrido em um ambiente de
comunidade. Sua criação não foi impulsionada por necessidades do mercado, mas por
um desejo de superar os obstáculos na produção de programas. A AT&T, que detinha a
marca UNIX originalmente, acabou transformando o UNIX em um produto comercial,
mas a essa altura, muitos dos conceitos (e até mesmo grande parte do código inicial) que
tornavam o UNIX especial tinham caído em domínio público.
Se você não tem idade suficiente para lembrar quando a AT&T se dividiu, em 1984, você
pode não se lembrar de uma época em que a AT&T era “a” companhia telefônica. Até
o início de 1980, a AT&T não precisava pensar muito em competição, porque se você
queria um telefone nos Estados Unidos, tinha de recorrer à AT&T. Ela se dava ao luxo de
financiar projetos de pesquisa pura. A Meca para tais projetos era o Bell Laboratories, em
Murray Hill, Nova Jersey.
Depois que um projeto chamado Multics falhou por volta de 1969, os funcionários da Bell
Labs Ken Thompson e Dennis Ritchie decidiram sair e criar por conta própria um sistema
operacional que oferecesse um melhor ambiente para o desenvolvimento de software.
Naquela época, a maioria dos programas era escrita em cartões perfurados que tinham de
ser inseridos em lotes em computadores mainframe. Em uma palestra em 1980 sobre “A
Evolução do Sistema de Compartilhamento de Tempo do UNIX”, Dennis Ritchie resumiu
o espírito que iniciou o UNIX:
O que queríamos preservar era não só um bom ambiente para fazer programação, mas
um sistema em torno do qual um companheirismo poderia se formar. Sabíamos, por
experiência, que a essência da computação em comunidade da maneira proporcionada
pelo acesso remoto e o compartilhamento de tempo de máquinas não é apenas para
digitar programas em um terminal em vez de um furador de papel, mas para encorajar
a comunicação de perto.
A simplicidade e o poder do projeto UNIX começou a quebrar as barreiras que, até esse
ponto, impediam os desenvolvedores de software. A fundação do UNIX foi criada com
vários elementos-chave:
■■
O sistema de arquivos UNIX — Porque incluía uma estrutura que permitia níveis
de subdiretórios (os quais, para os usuários de desktop de hoje, parecem pastas
dentro de pastas), o UNIX poderia ser usado para organizar os arquivos e diretórios
de forma intuitiva. Além disso, os complexos métodos de acessar discos, fitas e
outros dispositivos foram significativamente simplificados, representando esses
dispositivos como arquivos de dispositivos individuais que você também podia
acessar como itens em um diretório.
■■
Redirecionamento de entrada/saída — Os primeiros sistemas UNIX também
incluíam redirecionamento de entrada. A partir de uma linha de comando, os
usuários UNIX podiam direcionar a saída de um comando para um arquivo usando
uma tecla de seta para a direita (>). Mais tarde, o conceito de redirecionamento
(usando o caractere |, conhecido como “pipe” em inglês) foi ampliado fazendo
a saída de um comando ser direcionada para a entrada de outro. Por exemplo, o
9
PFCG_Book 1.indb 9
13/05/2014 16:48:14
Parte I: Começando
comando a seguir concatena (cat) o arquivo1 e arquivo2, ordena (sort) as linhas
nesses arquivos alfabeticamente, pagina o texto classificado para a impressão (pr)
e direciona a saída para a impressora padrão do computador (lpr):
$ cat file1 file2 | sort | pr | lpr
Esse método de direcionar entrada e saída permitiu aos desenvolvedores criar
seus próprios utilitários especializados que podiam ser vinculados com utilitários
existentes. Essa modularidade tornou possível que lotes de código fossem
desenvolvidos por muitas pessoas diferentes. Um usuário poderia simplesmente
montar as peças para o que ele precisava.
■■
Portabilidade — Simplificar a experiência de usar UNIX também o tornou
extremamente portátil para rodar em diferentes computadores. Por ter drivers de
dispositivo (representados por arquivos na árvore de arquivos), o UNIX poderia
apresentar uma interface para aplicações de tal forma que os programas não
precisavam saber sobre os detalhes do hardware subjacente. Para mais tarde
portar o UNIX para outro sistema, os desenvolvedores só precisavam mudar os
drivers. Os programas aplicativos não precisavam ser alterados para rodar em um
hardware diferente!
Para tornar a portabilidade uma realidade, era necessária uma linguagem de programação
de alto nível a fim de implementar o software necessário. Para esse fim, Brian Kernighan
e Dennis Ritchie criaram a linguagem de programação C. Em 1973, o UNIX foi reescrito
em C. Hoje, o C ainda é o principal idioma usado para criar o kernel dos sistemas
operacionais Unix (e Linux).
Como Ritchie chegou a dizer em uma palestra, em 1979 (hhtp://.bell-labs.com/
who/dmr/hist.html):
Hoje, o único programa UNIX importante ainda escrito em assembler é o assembler
em si, praticamente todos os programas utilitários estão em C e por isso são a maioria
dos programas, embora também existam locais com muitos em Fortran, Pascal e
Algol 68. Parece certo que a maior parte do sucesso do UNIX resulta da legibilidade,
modificabilidade e portabilidade do seu software que, por sua vez, resulta da sua
expressão em linguagens de alto nível.
Se você é um entusiasta do Linux e está interessado nos recursos de seus primeiros dias
que sobreviveram até hoje, uma leitura interessante é a reimpressão do primeiro manual
programador UNIX feito por Dennis Ritchie (datado em 3 de novembro de 1971). Você
pode encontrá-lo no site de Dennis Ritchie: http://cm.belllabs.com/cm/cs/who/
dmr/1stEdman.html. A forma dessa documentação é a das “páginas man” (página
do manual) do UNIX — que ainda é o principal formato para documentar comandos de
sistema operacional UNIX e Linux e ferramentas de programação de hoje em dia.
O que fica claro quando você lê a documentação inicial e os relatos do sistema UNIX é
que o desenvolvimento foi um processo de fluxo livre, sem ego, e se dedicou a tornar o
UNIX excelente. Esse processo levou a um compartilhamento de código (dentro e fora da
Bell Labs), o que permitiu o rápido desenvolvimento de um sistema operacional UNIX de
alta qualidade. Isso também levou a um sistema operacional que a AT&T teria dificuldade
em recuperar mais tarde.
10
PFCG_Book 1.indb 10
13/05/2014 16:48:14
Capítulo 1: Começando com o Linux
O UNIX comercializado
Antes da alienação de participação societária da AT&T em 1984, quando ela foi dividida
em AT&T e sete empresas “Baby Bell”, a AT&T foi proibida de vender sistemas de
computador. As empresas que mais tarde se tornariam Verizon, Qwest e Alcatel-Lucent
eram todas parte da AT&T. Como resultado desse monopólio do sistema de telefonia,
o governo dos EUA estava preocupado com a possibilidade de que uma AT&T irrestrita
pudesse dominar a incipiente indústria de computadores.
1
Por causa disso, a AT&T foi impedida de vender computadores diretamente aos clientes
antes de sua alienação, o código-fonte UNIX foi licenciado para universidades por um
valor simbólico. Não havia um sistema operacional UNIX para venda pela AT&T que você
não tivesse de compilar por sua própria conta.
Chega a Berkeley Software Distribution
Em 1975, o UNIX V6 tornou-se a primeira versão UNIX disponível para uso generalizado
fora da Bell Laboratories. A partir desse código-fonte UNIX inicial, a primeira variante
importante do UNIX foi criada na Universidade da Califórnia, em Berkeley, e foi batizada
como Berkeley Software Distribution (BSD).
Durante a maior parte da década seguinte, as versões BSD e UNIX da Bell Labs tomaram
direções distintas. O BSD continuou à frente no estilo fluxo livre e compartilhado, que era
a marca do UNIX inicial da Bell Labs, enquanto a AT&T começava a direcionar o UNIX
para a comercialização. Com a formação de um UNIX Laboratory separado, que saiu de
Murray Hill e se estabeleceu em Summit, Nova Jersey, a AT&T iniciou suas tentativas de
comercializar o UNIX. Em 1984, a alienação societária imposta pelo governo espreitava a
AT&T e ela estava pronta para realmente começar a comercializar o UNIX.
O UNIX Laboratory e a Comercialização
O UNIX Laboratory era considerado uma joia que não conseguia encontrar um lar ou
uma maneira de dar lucro. Enquanto se movia entre a Bell Laboratories e outras áreas
da AT&T, seu nome mudou várias vezes. Ele é provavelmente melhor lembrado pelo
nome que tinha quando começou sua proliferação a partir da AT&T: UNIX System
Laboratories (USL).
O código-fonte do UNIX que saiu da USL, o legado que agora pertence em parte à Santa
Cruz Operation (SCO), tem sido usado como base para os processos da SCO contra os
principais fornecedores do Linux (como a IBM e a Red Hat, Inc.). Por causa disso, acho
que os esforços de USL que contribuíram para o sucesso do Linux são esquecidos pela
maioria das pessoas.
Durante a década de 1980, naturalmente, muitas empresas de informática tinham
medo de que a recém-vendida AT&T representasse uma ameaça maior para o controle
da indústria de computadores do que seria uma empresa iniciante, em Redmond,
Washington. Para acalmar os temores da IBM, Intel, Digital Equipment Corporation e
outras empresas de informática, o UNIX Lab fez os seguintes compromissos para garantir
a igualdade de condições:
■■
Código-fonte único — Em vez de produzir seu próprio conjunto de caixas
UNIX, a AT&T continuou a vender apenas o código-fonte e torná-lo disponível
igualmente a todos os licenciados. Cada empresa, então, portaria o UNIX para seu
próprio equipamento. Mas foi só em 1992, quando o laboratório foi desmembrado
11
PFCG_Book 1.indb 11
13/05/2014 16:48:14
Parte I: Começando
como uma joint venture com a Novell (chamada Univel) e então acabou sendo
vendido para a Novell, que um conjunto comercial em caixa do UNIX (chamado
UnixWare) foi produzido diretamente a partir daquele código-fonte.
■■
Interfaces publicadas — Para criar um ambiente de justiça e comunidade
para seus OEMs (fabricantes de equipamentos originais), a AT&T começou a
padronizar o que os diferentes fornecedores de UNIX tinham de ser capazes de
fazer para continuar a ser chamado de UNIX. Para esse fim, o Portable Operating
System Interface (POSIX) e a AT&T UNIX System V Interface Definition (SVID)
eram especificações que os fornecedores de Unix poderiam usar para criar
sistemas compatíveis com UNIX. Esses mesmos documentos também serviram
como roteiros para a criação do Linux.
Nota
Em uma postagem inicial no grupo de notícias por e-mail, Linus Torvalds fez um pedido de uma
cópia, de preferência online, do padrão POSIX. Acho que ninguém da AT&T esperava alguém ser
realmente capaz de escrever seu próprio clone do UNIX a partir dessas interfaces, sem o uso de
qualquer parte do seu código-fonte UNIX.
■■
Abordagem técnica — Mais uma vez, até o fim da USL, a maioria das decisões
sobre a direção do UNIX eram feitas com base em considerações técnicas. O
gerenciamento foi promovido entre o pessoal técnico e, até onde eu sei, nunca
houve qualquer conversa sobre escrever um software para quebrar o de outras
empresas ou restringir o sucesso de parceiros da USL.
Quando por fim a USL começou a contratar especialistas em marketing e criar um produto
desktop UNIX para usuários finais, o Microsoft Windows já tinha uma firme predominância
no mercado de desktops. Também, porque a direção do UNIX tinha ido sempre no sentido
do código-fonte de licenciamento destinado a sistemas de computação de grande porte, a
USL tinha dificuldades para precificar seus produtos. Por exemplo, em um software que
ela estava incluindo no UNIX, a USL era obrigada a pagar taxas de licenciamento por
computador que se baseavam em mainframes de US$ 100.000 em vez de computadores de
US$ 2.000. Adicione a isso o fato de que não havia programas aplicativos disponíveis para o
UnixWare e você pode ver por que o esforço falhou.
Mas um marketing de sucesso de sistemas UNIX da época estava acontecendo com outras
empresas de informática. A SCO tinha encontrado um nicho de mercado, principalmente
vendendo versões para PC do UNIX executando terminais burros em pequenos escritórios.
A Sun Microsystems estava vendendo um grande número de estações de trabalho UNIX
(originalmente baseadas no BSD, mas fundidas com o UNIX no SVR4) para programadores
e aplicações de tecnologia sofisticada (como bolsas de valores).
Outros sistemas UNIX comerciais também foram surgindo na década de 1980. Essa nova
afirmação de propriedade do UNIX estava começando a cobrar seu preço ao espírito
das contribuições abertas. Começaram a surgir processos para proteger o código-fonte
e marcas comerciais do UNIX. Em 1984, esse novo UNIX restritivo deu origem a uma
organização que pavimentou uma estrada para o Linux: a Free Software Foundation
(Fundação do Software Livre).
12
PFCG_Book 1.indb 12
13/05/2014 16:48:14
Download