Infraestrutura Unix

Propaganda
RenatoRibeiro
Infraestrutura Unix.
Autor: Renato Ribeiro e Patrick Tracanelli
Em sua documentação oficial, a Apple aponta que o kernel do OS X (coração do sistema operacional) é construído com
base nos sistemas BSD Unix e Mach. Essa implementação abrange os recursos primários dos sistemas de arquivos,
serviços de rede, gerenciamento e identificação de usuários e grupos do sistema. A camada de segurança do OS X é
formada pelo subsistema BSD Unix, garantindo que as políticas de segurança sejam imperativamente respeitadas em todos
os aspectos do sistema (arquivos, processos, rede e memória). Do outro lado, o Mach fica responsável pelo gerenciamento
de memória, controle de threads, gerenciamento de hardware e comunicação entre processos. Parecem duas “almas”
trabalhando em conjunto, um kernel híbrido formando o coração do OS X e isso é fundamental para a segurança do
sistema.
Para que possamos compreender como a Apple chegou até o mundo Unix, convidei o meu amigo e sócio Patrick
Tracanelli, um dos maiores conhecedores sobre BSD no Brasil, para compartilhar conosco um pouco da história e do seu
conhecimento técnico sobre o assunto.
Este artigo faz parte da série "Segurança no mundo Apple" publicado no MacMagazine em 01/03/2012. Mais informações em http://www.renatoribeiro.me 1
RenatoRibeiro
Quando Steve Jobs saiu da Apple, em maio de 1985, oficialmente os argumentos de John Sculley para convencer
a diretoria da empresa eram problemas financeiros e fracassos em projetos recentes, como de vendas quase insignificativas
do Apple Lisa alinhados à queda na aceitação de sistemas Mac. No entanto, os desentendimentos precediam os fatores de
negócio, e iniciavam-se na parte técnica. Jobs estava descontente com o estado dos Macs e seu sistema, e insistia que
eles deveriam assumir uma personalidade mais “Unix”. Essa ideia era muito bem aceita por parte da equipe de
desenvolvimento da Apple e má vista por outra parte e alguns gestores, como Sculley. Foi só recentemente que uma
passagem da biografia autorizada de Jobs indicou consistentemente que a ideia de tornar o Mac mais “Unix” foi um dos
grandes estopins para desentendimento de Jobs com Sculley e a diretoria.
O resultado disso, sabemos, foi a saída de Jobs da Apple, o que abriu margem para novos empreendimentos do
gênio da Maçã. Além de sua relação com Hollywood por meio da Pixar, Jobs criou a NeXT Computer, empresa que
passaria a criar hardware e sistema operacional de grande poder de processamento matemático, com foco inicialmente no
mercado acadêmico que sempre teve grandes demandas de poder computacional para simular estudos e cálculos
complexos. Os computadores da NeXT mostraram-se, depois, adequados a processamento gráfico de grande
desempenho, como efeitos gráficos e animações em filmes e comerciais de TV. Na NeXT, Jobs colocou em prática seus
planos e, junto aos computadores da companhia — incluindo o famoso NeXTcube —, foi criando um sistema operacional, o
NeXTSTEP.
O NeXTSTEP juntou, em um único sistema, as características Unix outrora planejadas
e outros recursos. O sistema passou a ser fundamentado em um kernel de arquitetura
microkernel, o Mach. Este, por sua vez, é um kernel criado na Universidade de
Carnegie Mellon, cujo objetivo original era formar um sistema Unix completo, livre da
licença comercial da AT&T; para isso, o conceito original do Mach é um kernel rodando
sob uma base (userland, aplicações, bibliotecas, etc.) BSD, já que o BSD Unix em
versões antes do 4.4-BSD Lite2 dependia da licença do AT&T Unix (comercial) para ser
utilizado. Então o Mach, em uma base BSD, incorporando do kernel BSD as tecnologias relevantes, criadas pela
Universidade de Berkeley (onde o BSD foi criado), passou a dar origem ao NeXTSTEP dentro da NeXT.
Portanto, a inspiração original do Mach foi incrementada no NeXTSTEP que passava então a ser um sistema de
base BSD (userland), kernel Mach mas também kernel BSD. Devido à natureza híbrida do novo sistema e monolítica do
kernel BSD, o microkernel Mach passou a poder se comunicar independentemente (como originalmente) mas registrar-se
no kernel monolítico BSD, de forma similar a módulos e extensões de kernel (chamados kext no OS X, isto é, kernel
extensions), o que faz com que o microkernel Mach cumpra as exigências de segurança do BSD. Mais tarde isso seria
melhorado, com a adoção dos Kernel Entry Points BSD no Mach (projeto TrustedBSD) permitindo componentes imperativos
de controle de acesso (MAC – Mandatory Access Control) do BSD impor controles também no Mach.
Junto a essa arquitetura Unix, o NeXTSTEP trouxe display em PostScript e um subsistema de janelas gráficas,
junto a uma base de desenvolvimento fundamentada em kits de orientação a objeto e uma nova linguagem: Objective-C.
Essa plataforma computacional também foi a base para a criação da última dentre as principais tecnologias internet, a Web.
À época já tínhamos correio eletrônico, DNS (criados em Berkeley, BSD), FTP, Gopher, etc. Mas foi só em 1990 que Tim
Berners-Lee, em um NeXTcube com NeXTSTEP, criou o primeiro servidor HTTP e o primeiro navegador, batizado de
WorldWideWeb (dando origem à sigla WWW). A alma da web, o HTML, foi baseado no Textclass da NeXT.
Em 1997 a Apple adquiriu a NeXT, com interesse inicial no sistema operacional. Naquela época o BSD já era livre
(open source) e rodava em plataformas abertas. Então a ideia era trazer pra Apple algo parecido ao que a NeXT tinha no
Este artigo faz parte da série "Segurança no mundo Apple" publicado no MacMagazine em 01/03/2012. Mais informações em http://www.renatoribeiro.me
2
RenatoRibeiro
NeXTSTEP, com base no NeXTSTEP porém novo e melhor. Os componentes Mach foram reaproveitados do NeXTSTEP,
mas a base BSD deu lugar à base FreeBSD, um BSD mais moderno, livre, com uma licença mais amigável e que tinha
desenvolvedores originais do BSD Unix.
A Apple e seu Mac começou a retomar forma após lançamento do iMac com um novo sistema, o Mac OS 9. Ele
foi uma tentativa — algumas características Unix passaram a ser incorporadas, mas sem muito sucesso: o Mac OS 9 era
arcaico demais para incorporar aquela tecnologia. Jobs resolveu matar o Mac OS como era conhecido, e então decretou o
fim do Mac OS 9. Paralelamente a isso, deu-se início à criação de um novo sistema operacional dentro da Apple, um
sistema naturalmente “evolucionário”, batizado inspiradamente de Darwin. Este era um fork do FreeBSD, com
características do kernel Mach herdadas do NeXTSTEP, com um kernel monolítico integrado agora FreeBSD, e toda a base
(userland, bibliotecas, etc.) FreeBSD e algumas vezes, NetBSD. Trechos do NetBSD foram inicialmente utilizados em
aplicações da base para a arquitetura PowerPC, típica à época dos iMacs.
O Darwin passaria a ser um sistema baseado no FreeBSD, com heranças Mach do NeXTSTEP, e a Apple nessa
base estável, sólida e comprovada, focaria seu desenvolvimento no “diferencial” Apple: o kernel adotou o “Core Graphics” e
“Core Audio”, a interface gráfica incorporou características NeXTSTEP incluindo o Dock, mas também a nova interface
Aqua, bibliotecas como Cocoa e outros recursos de usabilidade e user-feeling que tanto diferenciam a Apple. Por trás disso
tudo, o coração BSD, com artérias Mach. Isso alinhava-se com outra intenção de Jobs: a troca de arquitetura, sair de
PowerPC e ir para Intel. Só hoje, após ler a bibliografia de Jobs, sabemos que ele planejou a longo prazo, escolhendo como
base um sistema focado em arquitetura Intel, sem se importar em ter que fazer adaptações temporárias para rodar também
em PowerPC: a plataforma mais tarde seria descontinuada em favor de arquitetura Intel
apenas, tornando a escolha FreeBSD com o tempo mais acertada ainda.
Em 2000 foi lançado o novo Mac OS, a décima (e tão diferente) versão, e, para garantir a
qualidade, Jobs contratou como engenheiro-chefe de software Unix na Apple, Jordan K.
Hubbard, fundador e criador do FreeBSD. O JKH ainda ocupa esse cargo, sendo a
pessoa por trás das bases Unix do OS X e do iOS (colega direto de Scott Forstall).
Hubbard foi apresentado a Jobs através de um amigo em comum, John Lasseter, um dos
três fundadores originais da Pixar, hoje animador na Disney. Lasseter, um dos grandes
nomes da animação gráfica de todos os tempos, além de amigo pessoal de Jordan
Hubbard e Steve Jobs, é ainda amigo de McKusick, um dos pais do BSD Unix.
Este artigo faz parte da série "Segurança no mundo Apple" publicado no MacMagazine em 01/03/2012. Mais informações em http://www.renatoribeiro.me
3
RenatoRibeiro
Os recursos de segurança do OS X são fatores diretamente herdados (e construídos juntos, a bem da verdade) da
base BSD Unix. Um projeto chamado TrustedBSD financiado por dez anos pela Agência de Pesquisas e Projetos
Avançados de Defesa (DARPA) do Departamento de Defesa dos EUA (DoD), passou a ser criado sob base FreeBSD (e para
FreeBSD) com objetivo de implementar requisitos de segurança da informação de especificações militares (baseadas no
Orange Book / TCSEC – Trusted Computer Systems Evaluation Criteria) e na especificação POSIX.1e. A Apple e a Sun
Microsystems passaram a ter interesse direto nesse projeto e participaram apoiando o desenvolvimento dessas tecnologias
no FreeBSD e posterior adoção em seus sistemas. Isso vale à Apple o certificado oficial de sistema Unix, e também um dos
únicos sistemas operacionais classificados com padrão de segurança TCSEC/B3 pelo DoD dos EUA.
O OS X tem desde então evoluído, em recursos que normalmente são focados na usabilidade e interesse geral do
usuário final. Mas é a evolução por trás de sistema de arquivos, gerência de recursos, que permite que tenhamos
resultados como Versões (Versions), Resume e, agora/em breve, recursos de segurança como Gatekeeper e sandboxing na
Mac App Store.
Este artigo faz parte da série "Segurança no mundo Apple" publicado no MacMagazine em 01/03/2012. Mais informações em http://www.renatoribeiro.me
4
Download