SSD Nodes Learn Hosting plans →
Guias Matt ConnorPor Matt Connor

Solaris e illumos: o fork que manteve o Unix vivo

A Sun criou ZFS e DTrace no Solaris e abriu o código. A Oracle fechou-o, mas o fork illumos preserva a base que ainda roda nos dois sistemas.

O que são Solaris e illumos

Solaris e illumos são dois ramos da mesma árvore de código Unix. A Sun Microsystems desenvolveu o Solaris e publicou a maior parte do respetivo código-fonte em 2005. A Oracle comprou a Sun em 2010 e deixou de publicar esse código, por isso os programadores fora da Oracle deram continuidade ao código aberto com um novo nome: illumos. O sistema operativo é de nicho em 2026. A camada de armazenamento e a ferramenta de tracing integradas nele não são, e é por isso que vale a pena conhecer esta história.

Se utiliza ZFS em Linux ou FreeBSD, está a utilizar código desenvolvido na Sun para Solaris, que sobreviveu à empresa, à linha de produtos e à disputa 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 na qual Bill Joy tinha trabalhado antes da existência da Sun. A outra linha Unix era o System V da AT&T, vendido comercialmente. Esses dois ramos são a divisão descrita em a árvore da família Unix que termina no Linux, e a Sun permaneceu no lado do BSD durante uma década.

Em 1987, a Sun e a AT&T anunciaram um projeto conjunto para juntar 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 adaptar o seu 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. Isto é relevante porque tudo o que sobreviveu à empresa estava nessa versão 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 qualquer custo, porque a instrumentação só é aplicada quando um script a solicita. Foi por isso que os administradores aceitaram utilizá-lo em máquinas de produção. O DTrace recebeu o principal prémio dos Technology Innovation Awards de 2006 do The Wall Street Journal e um prémio STUG (Software Tools User Group) da USENIX 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 gravações usam copy on write: um bloco nunca é substituído no local. Assim, uma falha a meio de uma gravação mantém os dados antigos intactos, em vez de deixar um sistema de ficheiros parcialmente gravado. Os snapshots têm um custo quase nulo, porque um snapshot é simplesmente o conjunto de blocos que as gravações posteriores não alteraram. O ZFS não fazia parte da versão inicial do Solaris 10. Foi incluído na atualização Solaris 10 6/06, em junho de 2006.

As Zones foram a terceira peça. Uma zone fornece a um 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 na versão final. 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 ativas no illumos e são a base de pelo menos uma distribuição 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 aplica-se ao nível de cada ficheiro: um ficheiro-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 publicado 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 publicada 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 programadores do OpenSolaris no 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 um 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 está no kernel principal. A decisão de publicar sob qualquer licença aberta é a que mais importa para o resto desta história, e o historial do licenciamento de código aberto explica por que motivo 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 transaçã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, foi distribuído dentro da empresa e depois divulgado. O documento definiu 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 novas compilações 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." Os lançamentos de código aberto passariam a seguir 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 interlocutor para o conselho e tinha anunciado o fim da parceria de desenvolvimento em 13 August. O conselho votou devolver o controlo da comunidade à Oracle, ao abrigo do estatuto originalmente elaborado pela Sun, o que dissolveu o conselho.

O Oracle Solaris 11 foi lançado em 9 November 2011. Em 2 September 2017, a Oracle despediu a maioria das equipas do Solaris. O Oracle Solaris 11.4 foi lançado em 28 August 2018 e continuava a ser a versão atual, recebendo atualizações do repositório de suporte, em July 2026. Quando a Oracle reviu pela última vez a sua política de suporte ao longo do ciclo de vida do 11.4, em January 2024, manteve o Premier Support até 2031 e prolongou o Extended Support de 2034 para 2037. O Solaris é, portanto, um produto comercial com suporte e uma data de fim publicada, numa versão que se mantém atual desde 2018.

Como o illumos começou e por que é chamado de fork

Em 3 de agosto de 2010, dez dias antes de o memorando vazar, Garrett D'Amore anunciou o illumos. O nome combina illum, do latim para luz, com OS, de operating system, e o projeto escreve-o como uma única palavra, com apenas a primeira letra em maiúscula.

O alvo era o OS/Net, normalmente escrito como 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 conseguia recompilar, incluindo o código de internacionalização dentro da biblioteca C (libc_i18n), o gestor de bloqueios NFS, a infraestrutura criptográfica, drivers como o driver mpt para adaptadores de bus de host LSI e parte do código das 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. "Não somos um fork hoje, por causa da forma como acompanhamos o OS/Net", escreveu, descrevendo um repositório downstream que seguiria 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 padrão, porque já não havia nada para acompanhar. A árvore principal, illumos-gate, ultrapassou 23,000 commits em outubro de 2026 e continua a recebê-los.

Que distribuições vêm do illumos

O illumos não é algo que se instala. É a árvore principal, e as distribuições constroem um sistema utilizável sobre ela. Estas são as que continuam a ser disponibilizadas.

  • 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 de desktop e servidor OpenSolaris. É uma rolling release 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 baseada em 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 usava 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 é o exemplo mais útil porque é pequeno, está documentado publicamente e continua a ser lançado. O Milestone 41 para x86 foi publicado em 5 August 2026. A linha SPARC passou para o Milestone 35 em 23 September 2026, numa versão sintética que coloca pacotes mais recentes, incluindo gcc 10, sobre o sistema operativo Milestone 34; a ISO de instalação SPARC que descarrega continua a ser a Milestone 34. O projeto descreve-se como um estilo retro com componentes modernos e manteve o formato de pacotes SVR4 usado pelo Solaris, em vez de adotar um sistema de pacotes mais recente.

A instalação é executada a partir de uma imagem live. Arranca a ISO, inicia sessão como o utilizador jack com a palavra-passe jack, torna-se root e executa o instalador num dispositivo de disco. Esta é a ordem indicada pela própria documentação de instalação do projeto:

./live_install.sh -G c1t0d0

A opção -G escreve um esquema de partições EFI (extensible firmware interface), e -b seleciona, em alternativa, o esquema MBR (master boot record) legado. Os nomes dos discos seguem a convenção cXtYdZ do Solaris, e não /dev/sda. Esta será a primeira diferença pouco familiar para 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 desktop

Depois da instalação, a ferramenta de pacotes é zap. Ela trabalha com overlays e trata automaticamente das dependências:

zap refresh
zap install-overlay develop
zap update-overlay -a

Estes são os comandos publicados pelo Tribblix. São executados em hardware ou num hypervisor que controla. O Tribblix não está disponível como uma imagem de instalação com um clique num painel de controlo de VPS. O SmartOS é a exceção entre os sistemas illumos: a MNX, empresa que o assumiu da Joyent, disponibiliza uma "choice of Linux, FreeBSD, or SmartOS" através do seu próprio painel de controlo cloud (verificado em 12 October 2026). Fora desse caso, é raro encontrar uma imagem illumos na lista de um fornecedor. Essa lacuna representa o estado real da implementação do illumos em 2026.

Porque o ZFS e o DTrace sobreviveram ao Solaris

O ZFS saiu quase imediatamente do Solaris 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 era fechada e todas as outras portas precisavam de uma fonte comum da qual obter alterações. Esse é o valor concreto do fork: sem ele, as portas não teriam um antecessor comum contra o qual fazer merge.

O projeto OpenZFS foi anunciado em 17 de setembro de 2013 para coordenar essas portas. Matt Ahrens, um dos autores originais do ZFS, esteve entre os seus fundadores. O OpenZFS 2.0 foi lançado em 30 de novembro de 2020, e as notas da versão indicam claramente o resultado: "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 com nomes sob a versão de marcador 5000. Assim, um pool anuncia as funcionalidades que utiliza 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 noticiada em fevereiro de 2018 e removeu a barreira de licenciamento no Linux. O DTrace nunca foi integrado no kernel principal. Na prática, o tracing no Linux usa eBPF, e bpftrace fornece-lhe uma linguagem de scripting deliberadamente próxima do D do DTrace.

O padrão é o ponto geral, não uma característica específica do 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, e é o mesmo mecanismo por trás de como as distribuições Linux descendem umas das outras.

Você deve executar illumos numa VPS?

Para quase toda a gente, a resposta é não, e nada do que foi explicado acima é uma recomendação para tentar. O illumos suporta uma gama limitada de hardware, porque o conjunto de controladores inclui o que a Sun suportava e o que uma pequena comunidade desenvolveu desde então. A maioria dos fornecedores de VPS publica apenas imagens de Linux e BSD. A exceção é a MNX, que assumiu o SmartOS da Joyent e oferece SmartOS juntamente com Linux e FreeBSD na sua própria cloud. Noutros casos, instalar illumos normalmente significa 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 conjunto de pacotes da própria 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 de zones que já administra ou o interesse em ler o código-fonte. As distribuições indicadas acima são mantidas e as respetivas listas de correio respondem a perguntas. Isso é diferente de escolher illumos por omissão para um servidor novo.

Se veio aqui por causa do ZFS, não precisa de illumos para o utilizar. Execute OpenZFS em Linux ou FreeBSD, onde está empacotado, documentado e amplamente implementado. Se está 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 explica muito do seu comportamento, começando pelo motivo por que zpool e zfs não se parecem nada com 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, herdados pela Oracle, que a Oracle encerrou em 2010. O illumos é um projeto separado, anunciado em 3 August 2010, criado a partir do último código-fonte publicado do núcleo do OpenSolaris, a consolidação OS/Net. A primeira tarefa foi substituir os componentes binários fechados que o OpenSolaris distribuía, incluindo libc_i18n, o gestor de bloqueios NFS, a framework 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 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 é distribuído como um módulo de kernel externo à árvore principal, normalmente criado pelo DKMS para cada kernel instalado, ou como um pacote de módulos pré-compilado. Funciona bem, mas o módulo tem de ser recompilado para cada kernel novo. Por isso, pode ficar vários dias ou semanas atrás de uma nova versão do kernel.

O Oracle Solaris ainda é suportado?

Sim. O Oracle Solaris 11.4 foi lançado em 28 August 2018 e ainda era a versão atual, recebendo atualizações dos repositórios de suporte, em July 2026. A política de suporte ao longo do ciclo de vida da Oracle, revista pela última vez para a versão 11.4 em January 2024, prevê Premier Support até 2031 e Extended Support até 2037. A Oracle despediu a maior parte das equipas do Solaris em 2 September 2017. Desde então, a versão 11.4 recebeu atualizações dos repositórios de suporte, mas não uma nova versão principal. O código-fonte completo não é publicado como era no OpenSolaris.

Posso instalar illumos numa VPS?

Às vezes, mas raramente a partir da lista de imagens do fornecedor. A MNX, que mantém o SmartOS, disponibiliza SmartOS a partir do seu próprio painel de controlo da cloud. Noutros fornecedores, normalmente precisa de um serviço que permita anexar uma ISO personalizada e usar uma consola. Depois, confirme que os drivers de disco virtual e de rede da á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 anfitrião de hypervisor, não um convidado que instala diretamente. Faça testes numa máquina virtual local antes de pagar pelo serviço.

Vale a pena aprender DTrace se só uso Linux?

O modelo é transferível, embora a ferramenta, na sua maior parte, 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, nunca foi integrado no kernel principal, e o tracing no Linux usa, na prática, eBPF. A linguagem usada por bpftrace foi concebida para se parecer com a linguagem D do DTrace. Por isso, probes, predicados e agregações significam a mesma coisa nos dois sistemas. Aprender a forma de pensar do DTrace torna os scripts bpftrace legíveis à primeira tentativa.

#solaris#illumos#unix-history#zfs#dtrace