terça-feira, 8 de maio de 2012

To BSD or not Be




... ou seja, "que BSD vou instalar agora?"


Não é só BSD, mas me pediram e, então, resolvi dedicar este post a uma análise dos SOs Unix livres mais usados e mais indicados para cada tipo de atividade.

Discutir as distribuições de sistemas operacionais é, hoje em dia, uma tarefa complicada. Primeiro porque existe mais de uma centena de tipos de UnixTM e unix-like que são gratuitos e de código aberto. E, segundo, porque cada distribuição está criando especialidades dentro de cada área de atuação profissional (vide meu post sobre o Fedora Spins).

Se deixarmos de lado os SOs próprios para nerds, tipo GNU-Hurd, Inferno, Haiku (ex-BeOS) e os unix-like como Minix e Linux, resta os SOs de kernel BSD [1] e Sistem V. É bom esclarecer que o o kernel Linux, não é um Unix tradicional, embora tenha raízes bem fincadas naquele sistema. Já o kernel BSD é um Unix totalmente POSIX compliant.

Figura 1 História do Unix (Wikipedia [http://en.wikipedia.org/wiki/File:Unix_history-simple.svg])

Na figura 1, pode-se ver os principais sistemas Unix e Unix-like existentes hoje e, como o interesse deste post está voltado para os sistemas Unix free e open source, nos limitamos aos descendentes do BSD e do Sistem V. Os descendentes do BSD a que me refiro são o FreeBSD, o NetBSD, o OpenBSD e o Dragonfly e o descendente do System V (Solaris) é o chamado OpenSolaris (ex-Sun Microsystem, atualmente da Oracle).

O que torna as distribuiões BSD atraentes é, principalmente a sua licença. A licença BSD tem pouquíssimas restrições quando comparada a outras licenças como a GPL (Gnu Public License) ou outras restrições de copyright [2].

As distribuições BSD se diferenciam das distribuições Linux por respeitarem o padrão Unix desenvolvido pela Berckeley Sistem Distribution e atenderem às exigências POSIX. POSIX vem de Portable Operating System Interface e é uma norma definida pelo IEEE organizada pelo grupo 1003 (IEEE 1003) de acordo com as normas ISO/IEC 9945 [3].

Outra característica destes sistemas (FreeBSD, NetBSD e OpenBSD) é o quesito segurança pois são sistemas construídos com foco em redes de computadores e em segurança de rede além, é claro, da preocupação com a estabilidade do núcleo do SO.

Existe muita discussão sobre qual BSD é mais seguro mas todos estão, basicamente, no mesmo nível de segurança. Dependendo da instalação —  que no OpenBSD resulta mais segura por default — é o usuário que acaba definindo o nível de segurança de um sistema. Outro fato é que sistemas BSD tendem a ser instalados por administradores de rede mais experientes que configuram os serviços de acordo com regras mais rígidas. É claro que se deve levar em consideração que o arsenal de ferramentas de segurança destes sistemas é bem grande.

O FreeBSD é, de longe, o sistema que possui maior quantidade de aplicativos e um sistema de instalação com repositórios bem atualizados. O sistema usa o ports (man 7 ports) como repositório de software e que permite a instalação de software pré-compilado ou permite fazer o download dos códigos fonte dos aplicativos e compilá-los localmente, administrando todas as dependências automaticamente.

O OpenBSD é bastante seguro e o mais tradicional dos BSD e o NetBSD é um sistema com um kernel bem "enxuto" totalmente voltado para aplicativos de rede e de roteamento sendo ideal para uso como sistemas de roteadores.

Pode-se dizer que sistemas BSD são sistemas ideais para servidores mas nada impede que se os use como desktop ou mesmo no laptop. Existem algumas versões específicas para estação de trabalho como, por exemplo, o PC-BSD. Usar estes sistemas diretamente requer um bom conhecimento e paciência para configurar e recompilar os aplicativos para que sejam otimizados para cada hardware.

O DragonflyBSD é um kernel BSD customizado que é totalmente open source e gratuito. Este está na minha lista de testes e ainda não tive tempo de analisar com mais detalhes. O que chama a atenção é o sistema de arquivos Hammer com acesso e recuperação do histórico e espelhamento (diferente do modelo do ZFS). Diz-se que o kernel tem um mecanismo de sincronização eficiente e é bem orientado ao paralelismo o que é uma boa funcionalidade para os processadores "multicore" de hoje. (este está na minha lista para um próximo assunto aqui no blog)

Outros sistemas operacionais unix tais como o Oracle Solaris 11, derivado do Sun Solaris 10 possui a versão free e open como o OpenSolaris que roda em arquitetura x86 (veja meu post sobre o Solaris 11). O atrativo deste sistema operacional é a interação com a JVM e o ambiente Java totalmente compativel com a versão da Oracle (antiga Sun Microsystems). O desenvolvedor Java deve considerar uma olhadinha no sistema da Oracle.

Segue, aos interessados, o link para os sites oficiais:

Dragonfly - http://www.dragonflybsd.org/

FreeBSD - http://www.freebsd.org/

NetBSD - http://www.netbsd.org/

OpenBSD - http://www.openbsd.org/

PCBSD - http://www.pcbsd.org/

Oracle OpenSolaris - http://hub.opensolaris.org/bin/view/Main/



Referências:

[1] http://en.wikipedia.org/wiki/Berkeley_Software_Distribution

[2] http://en.wikipedia.org/wiki/BSD_licenses

[3] http://pt.wikipedia.org/wiki/POSIX

Quer saber qual melhor distibuição Linux para você? Experimente este link:

http://www.techradar.com/news/software/operating-systems/10-best-linux-distros-704584

2 comentários:

  1. Reproduzindo aqui, uma conversa que tivemos, Lucas Mocellin e eu (na integra):

    Lucas Mocellin:

    "O OpenBSD é bastante seguro e o mais tradicional dos BSD e o NetBSD é um sistema com um kernel bem "enxuto" totalmente voltado para aplicativos de rede e de roteamento sendo ideal para uso como sistemas de roteadores."

    acho que a do NetBSD não é bem isso, a idéia é que seja o mais portável possível, que suporte o maximo de plataformas possíveis, desde servidores, laptops, celulares e sistemas embarcados (torradeira! haha), depois com vários suportes a tudo que se imaginar e isso torna o kernel ao contrario de enxuto e sim muito "inflado".

    "One of the primary focuses of the NetBSD project has been to make the base OS highly portable. This has resulted in NetBSD being ported to a large number of hardware platforms. NetBSD is also interoperable, implementing many standard APIs and network protocols, and emulating many other systems' ABIs."

    http://www.netbsd.org/about/

    acho que eh o sistema que suporta o maior numero de plataformas diferentes, veja, tem mais de 50!
    Plataformas

    http://www.netbsd.org/ports/
    About the NetBSD Project
    www.netbsd.org

    João Dovicchi

    Sim... até certo ponto tens razão e este pode ser o foco agora. No entanto a origem no 4.3BSD - Net/2 o destinava aos gateways de rede da época. Isto definia o modelo típico de SO para roteadores (não que tivessem que ser necessariamente assim) no entanto, o projeto "motto" ("Of course it runs NetBSD" ) desvirtuou um pouco a idéia original.

    Isto gerou um desacordo no grupo e foi o que levou ao afastamento do Theo do time do NetBSD e ele acabou criando a equipe do OpenBSD. O foco inicial era os dispositivos de rede sim. Isto foi uma discussão que cheguei a acompanhar nas listas de 1994 e 95. É verdade que o foco mudou mas o kernel continua enxuto.

    A portabilidade foi bem trabalhada em camadas de interface no nível do hardware criando o que se chama de "camada de portabilidade", permitindo que drivers específicos ficassem fora do kernel quando desnecessários. Não me lembro bem dos detalhes mas era uma ideia bem revolucionária na época.

    Podemos marcar uma conversa sobre isto e este assunto bem poderia estar rolando na lista do blog... [:)] Afinal, estou muito desatualizado sobre o que está ocorrendo com estes SOs hoje em dia.

    ResponderExcluir
  2. Agora um novo comentário: O Lucas tem razão porque o foco do NetBSD mudou muito. Aliás, nos idos de 1993 nem mesmo imaginávamos que a própria Internet chegaria tão rápido a esta dimensão de hoje e teríamos hardwares tão potentes com custo de memória e HD tão baratos.

    De qualquer forma, cabe aqui a correção feita por ele: "O NetBSD roda hoje no maior número de plataformas possível. Por isso o código do Kernel não é pequeno."

    O que eu quis dizer com "enxuto" é que, compilado pode ser tão enxuto para rodar numa "torradeira" (e é mesmo) mas pode ser grande para rodar num mainframe!

    ResponderExcluir