Solaris e illumos: a história do fork que sobreviveu
A Sun criou ZFS e DTrace no Solaris, abriu o código em 2005 e a Oracle fechou-o em 2010. Veja como o fork illumos mantém ambos vivos hoje.
O que são Solaris e illumos
Solaris e illumos são dois ramos da mesma árvore de código-fonte Unix. A Sun Microsystems desenvolveu o Solaris e publicou a maior parte do seu código-fonte em 2005. A Oracle comprou a Sun em 2010 e deixou de publicar esse código-fonte. Por isso, os programadores fora da Oracle deram continuidade ao código aberto com um novo nome: illumos. O sistema operativo em si é de nicho em 2026. A camada de armazenamento e a ferramenta de tracing desenvolvida no seu interior não são. É por isso que vale a pena conhecer esta história.
Se executa ZFS em Linux ou FreeBSD, está a usar código desenvolvido na Sun para o Solaris. Esse código sobreviveu à empresa, à linha de produtos e ao conflito de licenciamento. Este artigo conta como isso aconteceu, com as datas verificadas.
De onde veio o Solaris: BSD, System V e SVR4
A Sun Microsystems foi fundada em 24 de fevereiro de 1982 por Scott McNealy, Andy Bechtolsheim, Vinod Khosla e Bill Joy. O seu sistema operativo, SunOS, derivava do BSD (Berkeley Software Distribution), a linha Unix universitária em que Bill Joy tinha trabalhado antes de a Sun existir. A outra linha Unix era o System V da AT&T, vendido comercialmente. Essas duas ramificações são a divisão descrita em a árvore genealógica do Unix que termina no Linux, e a Sun permaneceu do lado do BSD durante uma década.
Em 1987, a Sun e a AT&T anunciaram um projeto conjunto para fundir o BSD, o System V e o Xenix numa única versão: UNIX System V Release 4, normalmente escrito como SVR4. Em 4 de setembro de 1991, a Sun anunciou que o SunOS 4 seria substituído por um sistema derivado do SVR4 com um novo nome comercial, Solaris 2. O Solaris 2.0 foi lançado em junho de 1992, apenas para hardware SPARC. A Sun tinha mudado de lado na divisão do Unix, e os seus clientes tiveram de portar o respetivo software.
O nome antigo nunca desapareceu. O kernel manteve a numeração do SunOS, por isso o Solaris 2.6 executava o SunOS 5.6, e o Oracle Solaris 11.4 ainda se identifica como SunOS 5.11. Execute uname -a numa máquina illumos em 2026 e a primeira palavra apresentada continuará a ser SunOS, porque o illumos herdou o nome juntamente com o código.
O que o Solaris 10 introduziu em 2005
O Solaris 10 foi lançado em 31 de janeiro de 2005. Isso é relevante porque tudo o que sobreviveu à empresa estava nesse lançamento ou chegou numa das suas atualizações.
O DTrace foi desenvolvido na Sun por Bryan Cantrill, Mike Shapiro e Adam Leventhal e ficou disponível pela primeira vez em novembro de 2003. Instrumenta um kernel em execução e processos de utilizador em execução sem recompilar nada e sem reiniciar o processo que está a monitorizar. Uma probe que não foi ativada não tem custo, porque a instrumentação só é aplicada quando um script a solicita. É por isso que os administradores estavam dispostos a utilizá-lo em máquinas de produção. O DTrace recebeu o prémio principal nos Technology Innovation Awards de 2006 do The Wall Street Journal e um prémio da USENIX STUG (Software Tools User Group) em 2008.
O ZFS foi concebido na Sun por Jeff Bonwick, Bill Moore e Matthew Ahrens e anunciado em 14 de setembro de 2004. Unificou o gestor de volumes e o sistema de ficheiros numa única camada. Isso permite calcular o checksum de cada bloco durante a leitura e reparar um bloco danificado a partir de uma cópia redundante. As escritas usam copy on write: um bloco nunca é sobrescrito no local. Assim, uma falha durante uma escrita mantém os dados antigos intactos, em vez de deixar um sistema de ficheiros escrito apenas parcialmente. Os snapshots têm um custo quase nulo, porque um snapshot é simplesmente o conjunto de blocos que as escritas posteriores não alteraram. O ZFS não fez parte do lançamento inicial do Solaris 10. Foi incluído na atualização Solaris 10 6/06, em junho de 2006.
As Zones foram o terceiro componente. Uma zone fornece a um único kernel vários espaços de utilizador isolados, cada um com o seu próprio sistema de ficheiros root, tabela de processos e configuração de rede. As Zones apareceram numa versão beta do Solaris 10 em fevereiro de 2004 e foram incluídas no lançamento completo. O FreeBSD tinha chegado anteriormente à mesma ideia por uma abordagem diferente, e a comparação entre jails e contentores Docker continua a ser a forma mais clara de perceber o que é realmente o isolamento ao nível do kernel. As Zones continuam presentes no illumos e são a base de pelo menos uma distribuição apresentada abaixo.
Por que a Sun abriu o código-fonte do Solaris
A Sun submeteu a CDDL (Common Development and Distribution License) à OSI (Open Source Initiative) em 1 de dezembro de 2004, e a OSI aprovou-a em 14 de janeiro de 2005. A CDDL baseia-se na versão 1.1 da MPL (Mozilla Public License). O seu copyleft funciona ao nível de cada ficheiro: um ficheiro de código-fonte CDDL tem de continuar a ser CDDL, mas o binário compilado a partir dele pode ser combinado com código sob outros termos.
O DTrace foi o primeiro. O seu código-fonte foi disponibilizado sob a CDDL em 25 de janeiro de 2005, no recém-lançado site opensolaris.org, seis dias antes de o próprio Solaris 10 ser lançado. A maior parte do código do sistema Solaris foi disponibilizada em 14 de junho de 2005. O ZFS foi integrado no trunk principal de desenvolvimento do Solaris em 31 de outubro de 2005 e chegou aos developers do OpenSolaris na build 27, em 16 de novembro de 2005. O OpenSolaris também se tornou uma distribuição instalável: a versão 2008.05 chegou em 5 de maio de 2008 como live CD, e a versão 2009.06 chegou em 1 de junho de 2009 com suporte para SPARC.
A escolha da licença continua a determinar o que pode executar atualmente. A Free Software Foundation classifica a CDDL como uma licença de software livre incompatível com a GPL (GNU General Public License), uma incompatibilidade herdada da MPL 1.1. O kernel Linux está sob a GPLv2. É por isso que o ZFS on Linux é compilado como um módulo do kernel fora da árvore de código-fonte do kernel, em vez de ser integrado nela, e também por isso que não faz parte do kernel mainline. A decisão de publicar sob qualquer licença open source é a que mais importa para o restante desta história, e o histórico do licenciamento open source explica por que uma empresa tomaria essa decisão.
O que aconteceu quando a Oracle comprou a Sun
A Oracle anunciou em 20 April 2009 que iria adquirir a Sun por US$7.4 billion, ou US$5.6 billion líquidos do dinheiro e da dívida da Sun. A operação foi concluída em 27 January 2010.
Em 13 August 2010, um memorando interno da Oracle, escrito por Mike Shapiro, Bill Nesheim e Chris Armes, circulou dentro da empresa e acabou divulgado. O documento estabelecia diretamente a nova política: "We will no longer distribute source code for the entirety of the Solaris operating system in real-time while it is developed, on a nightly basis." A política excluía novos builds da comunidade: "We will not release any other binary distributions, such as nightly or bi-weekly builds of Solaris binaries, or an OpenSolaris 2010.05 or later distribution." As versões open source passariam a acompanhar os produtos lançados: "We will distribute updates to approved CDDL or other open source-licensed code following full releases of our enterprise Solaris operating system."
Em 23 August 2010, o OpenSolaris Governing Board aprovou uma resolução que registava que a Oracle não tinha nomeado um liaison para o conselho e tinha anunciado o fim da parceria de desenvolvimento em 13 August. O conselho votou devolver à Oracle o controlo da comunidade ao abrigo do charter que a Sun tinha originalmente redigido, o que dissolveu o conselho.
O Oracle Solaris 11 foi lançado em 9 November 2011. Em 2 September 2017, a Oracle despediu a maior parte das equipas do Solaris. O Oracle Solaris 11.4 foi lançado em 28 August 2018 e continua a ser a versão atual. Ao abrigo da política de suporte vitalício da Oracle, o Premier Support para a 11.4 prolonga-se até November 2031 e o Extended Support até November 2037. O Solaris é, portanto, um produto comercial suportado, com uma data de fim publicada, numa versão que está atual desde 2018.
Como o illumos começou e por que é chamado de fork
Em 3 August 2010, dez dias antes de o memorando ser divulgado, Garrett D'Amore anunciou o illumos. O nome combina illum, que significa luz em latim, com OS, de operating system, e o projeto escreve-o como uma só palavra, com apenas a primeira letra em maiúscula.
O alvo era o OS/Net, normalmente escrito ON: a consolidação que contém o kernel e os utilitários principais do sistema. O OpenSolaris nunca foi totalmente aberto. Vários componentes eram distribuídos como binários fechados que ninguém fora da Sun podia recompilar, incluindo o código de internacionalização dentro da biblioteca C (libc_i18n), o gestor de bloqueios NFS, a estrutura criptográfica, drivers como o driver mpt para adaptadores de bus de host LSI e algum código de plataformas SPARC. Substituí-los foi a primeira tarefa do projeto, porque um sistema operativo que não pode ser compilado a partir do código-fonte não pode ser mantido.
D'Amore teve cuidado com a palavra fork. "We are not a fork today, because of the way we track OS/Net", escreveu, descrevendo um repositório downstream que acompanharia a árvore da Oracle e poderia enviar alterações de volta para upstream. Dez dias depois, o upstream deixou de publicar. O illumos tornou-se um fork por defeito, porque já não havia nada para acompanhar. A árvore principal, illumos-gate, ultrapassou 23,000 commits em August 2026 e continua a recebê-los.
Quais distribuições são derivadas do illumos
O illumos não é algo que se instala. É a árvore principal, e as distribuições criam um sistema utilizável sobre ela. Estas são as que continuam a ser lançadas.
- O OpenIndiana foi lançado oficialmente em 14 de setembro de 2010 no JISC Centre, em Londres, e é o descendente mais próximo da antiga distribuição OpenSolaris para desktop e servidores. É uma versão de lançamento contínuo chamada Hipster, e o snapshot 2026.04 foi publicado em 5 de maio de 2026.
- O OmniOS é uma distribuição para servidores, atualmente mantida pela comunidade como OmniOS CE, depois de o fornecedor original ter deixado de trabalhar nela.
- O SmartOS é uma plataforma de hypervisor construída sobre zones. A Joyent criou-a e anunciou em abril de 2022 que o SmartOS e o Triton passariam para a MNX Solutions, com efeitos a partir de 1 de maio de 2022.
- O NexentaStor utilizava a mesma base para appliances de armazenamento. Esta é a linha comercial da qual o illumos surgiu.
- O Tribblix é uma distribuição pequena mantida por Peter Tribble, descrita abaixo.
- O DilOS coloca as ferramentas de gestão de pacotes do Debian sobre um kernel illumos.
Como é instalar um sistema illumos atualmente
Tribblix é um exemplo útil porque é pequeno, está documentado publicamente e continua a ser lançado. O Milestone 41 para x86 foi publicado em 5 August 2026, e a linha SPARC chegou ao Milestone 34 em 21 April 2026. O projeto descreve-se como um estilo retro com componentes modernos e manteve o formato de pacotes SVR4 usado pelo Solaris, em vez de migrar para um sistema de pacotes mais recente.
A instalação é executada a partir de uma imagem live. Arranque a partir da ISO, inicie sessão como o utilizador jack com a palavra-passe jack, torne-se root e execute o instalador num dispositivo de disco. Este é o comando apresentado na documentação de instalação do próprio projeto:
./live_install.sh -G c1t0d0A flag -G escreve um esquema de partições EFI (extensible firmware interface), enquanto -b seleciona o esquema MBR (master boot record) legado. Os nomes dos discos seguem a convenção cXtYdZ do Solaris, e não /dev/sda. Esta é a primeira diferença que parecerá pouco familiar a quem vem do Linux. Os conjuntos de software são chamados overlays e podem ser indicados na mesma linha:
./live_install.sh -G c1t0d0 develop desktopDepois da instalação, a ferramenta de pacotes é zap. Ela funciona com overlays e trata das dependências por si:
zap refresh
zap install-overlay develop
zap update-overlay -aEstes são os comandos publicados pelo Tribblix. São executados em hardware ou num hypervisor sob o seu controlo. Não os encontrará por trás de uma imagem de um clique num painel de controlo de VPS. Essa diferença representa o estado real da implementação do illumos em 2026.
Por que ZFS e DTrace sobreviveram ao Solaris
O ZFS saiu do Solaris quase imediatamente depois de o código-fonte ser publicado. Pawel Jakub Dawidek portou-o para o FreeBSD, onde faz parte do sistema desde o FreeBSD 7.0, em 2008. O trabalho no ZFS nativo para Linux começou em 2008 e produziu a primeira versão estável em 2013. Entre 2010 e 2013, o illumos manteve a cópia de referência do código-fonte do ZFS, porque a árvore da Oracle estava fechada e todas as outras adaptações precisavam de uma fonte da qual pudessem obter alterações. Esse é o valor concreto do fork: sem ele, as adaptações não teriam tido um ancestral comum contra o qual fazer merge.
O projeto OpenZFS foi anunciado em 17 de setembro de 2013 para coordenar essas adaptações. Matt Ahrens, um dos autores originais do ZFS, estava entre os seus fundadores. O OpenZFS 2.0 foi lançado em 30 de novembro de 2020. As notas da versão descrevem o resultado de forma clara: "The ZFS on Linux project has been renamed OpenZFS! Both Linux and FreeBSD are now supported from the same repository making all of the OpenZFS features available on both platforms." O FreeBSD 13.0 abandonou a sua própria cópia derivada do illumos e passou a usar essa árvore partilhada.
As duas linhas do ZFS divergiram no formato em disco. A linha aberta parou na versão de pool 28, a última versão publicada pela Sun, e passou a usar feature flags nomeadas sob a versão reservada 5000. Assim, um pool anuncia quais funcionalidades usa, em vez de usar um único número. A Oracle continuou a incrementar os seus próprios números de versão com o código-fonte fechado. Um pool criado depois da versão 28 num dos lados não pode ser importado no outro. Se estiver a escolher onde executar o ZFS, como o OpenZFS se comporta no FreeBSD em comparação com o Linux explica as diferenças efetivas entre os dois hosts.
O DTrace percorreu uma distância menor. Já era padrão no FreeBSD 7.1, em janeiro de 2009, e a Apple adicionou-o ao Mac OS X 10.5 Leopard. A Oracle publicou o código do kernel do DTrace sob a GPLv2 em agosto de 2017. Essa alteração foi amplamente notada em fevereiro de 2018 e eliminou a barreira de licenciamento no Linux. O DTrace nunca foi integrado no kernel mainline. Na prática, o tracing no Linux usa eBPF, e bpftrace fornece uma linguagem de scripting deliberadamente próxima da linguagem D do DTrace.
O ponto geral está no padrão, não especificamente no Solaris. A Sun publicou o ZFS e o DTrace sob uma licença que permitia a outras pessoas manter uma cópia e continuar o trabalho. Quando a empresa que financiava o desenvolvimento deixou de o fazer, o trabalho continuou, porque o código já existia noutras árvores e estava nas mãos de outras pessoas. As partes do Solaris que nunca foram abertas, incluindo os binários fechados que o illumos teve de reescrever, desapareceram com a empresa. É isso que a publicação do código-fonte altera. É também o mesmo mecanismo por trás de como as distribuições Linux descendem umas das outras.
Deve executar illumos numa VPS?
Para quase toda a gente, a resposta é não, e nada do que foi dito acima é uma recomendação para o fazer. O illumos suporta um conjunto limitado de hardware, porque o seu conjunto de controladores corresponde ao que a Sun suportava, acrescido do que uma pequena comunidade desenvolveu desde então. Os fornecedores de VPS disponibilizam imagens Linux e BSD, pelo que uma instalação do illumos normalmente implica carregar a sua própria ISO para um fornecedor que permita imagens personalizadas e depois verificar se o disco virtual e os dispositivos de rede são reconhecidos. O software de terceiros vem do próprio conjunto de pacotes da distribuição ou do seu próprio compilador.
Existem motivos concretos para o executar: uma carga de trabalho Solaris que precisa de manter ativa, uma implementação com zones que já administra ou interesse em ler o código-fonte. As distribuições listadas acima são mantidas, e as respetivas listas de correio respondem a perguntas. Isso é diferente de o escolher por predefinição para um servidor novo.
Se veio aqui por causa do ZFS, não precisa do illumos para o obter. Execute OpenZFS em Linux ou FreeBSD, onde está empacotado, documentado e amplamente implementado. Se estiver a considerar o lado BSD da mesma família para um servidor, a comparação prática entre Linux e FreeBSD como plataformas de servidor explica o que muda na operação diária. O illumos é a origem destas ferramentas, e saber de onde vieram ajuda a explicar muito do seu comportamento, começando pelo motivo por que zpool e zfs não se comportam nada como o restante stack de armazenamento do Linux.
FAQ
O illumos é a mesma coisa que o OpenSolaris?
Não. O OpenSolaris era um projeto e uma distribuição da Sun, que foram herdados pela Oracle, e a Oracle encerrou-os em 2010. O illumos é um projeto separado, anunciado em 3 August 2010, baseado no último código-fonte principal publicado do OpenSolaris, a consolidação OS/Net. A primeira tarefa foi substituir os componentes binários fechados que o OpenSolaris disponibilizava, incluindo libc_i18n, o gestor de bloqueios NFS, a infraestrutura criptográfica e vários drivers. Nenhum código do illumos provém da Oracle depois de 2010, porque a Oracle deixou de o publicar.
Porque é que o Linux não pode incluir o ZFS no kernel?
As licenças são incompatíveis. O ZFS usa a CDDL, que a Free Software Foundation classifica como uma licença de software livre incompatível com a GPL. Esta incompatibilidade foi herdada da MPL 1.1 pela CDDL. O kernel Linux usa GPLv2. Na prática, o OpenZFS no Linux é disponibilizado como um módulo de kernel externo, normalmente compilado pelo DKMS para cada kernel instalado, ou como um pacote de módulos pré-compilados. Funciona bem, mas o módulo tem de ser recompilado para cada kernel novo. Por isso, pode ficar atrasado em relação a uma nova versão do kernel durante dias ou semanas.
O Oracle Solaris ainda tem suporte?
Sim. O Oracle Solaris 11.4 foi lançado em 28 August 2018 e é a versão atual. O Premier Support vai até November 2031 e o Extended Support até November 2037, segundo a política de suporte vitalício da Oracle. A Oracle despediu a maioria das equipas do Solaris em 2 September 2017. Desde então, o 11.4 recebeu atualizações do repositório de suporte, mas não uma nova versão principal. O código-fonte completo não é publicado da forma como o OpenSolaris o publicava.
Posso instalar o illumos numa VPS?
Por vezes, mas raramente a partir da lista de imagens do fornecedor. Em geral, precisa de um fornecedor que permita anexar uma ISO personalizada e utilizar uma consola. Depois, confirme se os drivers do disco virtual e da rede presentes na árvore do illumos reconhecem os dispositivos do hypervisor. OpenIndiana e Tribblix são os pontos de partida habituais para uma instalação de uso geral. O SmartOS foi concebido para ser um host de hypervisor, não um guest. Teste primeiro numa máquina virtual local.
Vale a pena aprender DTrace se só uso Linux?
O modelo é aplicável, embora a ferramenta em si quase não seja. A Oracle lançou o código do kernel do DTrace sob GPLv2 em August 2017 e mantém uma portabilidade para Oracle Linux. No entanto, essa portabilidade nunca foi integrada no kernel principal. Na prática, o tracing no Linux utiliza eBPF. A linguagem bpftrace foi concebida para se parecer com o D do DTrace. Por isso, probes, predicados e agregações têm o mesmo significado nos dois sistemas. Aprender a forma de pensar do DTrace torna os scripts bpftrace legíveis logo à primeira tentativa.