SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor

Solaris e illumos: el fork que sobrevivió

Solaris creó ZFS y DTrace antes de abrir su código. Oracle volvió a cerrarlo en 2010, pero illumos mantiene viva esa base y sus derivados hoy.

Qué son Solaris e illumos

Solaris e illumos son dos ramas de un mismo árbol de código fuente Unix. Sun Microsystems desarrolló Solaris y publicó la mayor parte de su código fuente en 2005. Oracle compró Sun en 2010 y dejó de publicar ese código, por lo que los desarrolladores ajenos a Oracle continuaron el código abierto con un nombre nuevo: illumos. El sistema operativo es de nicho en 2026. La capa de almacenamiento y la herramienta de trazado integradas en él no lo son. Por eso merece la pena conocer esta historia.

Si ejecuta ZFS en Linux o FreeBSD, está ejecutando código que Sun escribió para Solaris y que sobrevivió a la empresa, a la línea de productos y al conflicto de licencias. Esta publicación explica cómo ocurrió, con las fechas comprobadas.

De dónde procede Solaris: BSD, System V y SVR4

Sun Microsystems fue fundada el 24 de febrero de 1982 por Scott McNealy, Andy Bechtolsheim, Vinod Khosla y Bill Joy. Su sistema operativo, SunOS, derivaba de BSD (Berkeley Software Distribution), la línea de Unix de la universidad en la que Bill Joy había trabajado antes de que existiera Sun. La otra línea de Unix era System V de AT&T, que se comercializaba. Estas dos ramas forman la división descrita en el árbol genealógico de Unix que termina en Linux, y Sun permaneció en el lado de BSD durante una década.

En 1987, Sun y AT&T anunciaron un proyecto conjunto para fusionar BSD, System V y Xenix en una sola versión: UNIX System V Release 4, normalmente escrito SVR4. El 4 de septiembre de 1991, Sun anunció que SunOS 4 sería sustituido por un sistema derivado de SVR4 con un nuevo nombre comercial, Solaris 2. Solaris 2.0 se lanzó en junio de 1992, únicamente para hardware SPARC. Sun había cambiado de lado en la división de Unix y sus clientes tuvieron que adaptar su software.

El nombre antiguo nunca desapareció. El kernel conservó la numeración de SunOS, por lo que Solaris 2.6 ejecutaba SunOS 5.6, y Oracle Solaris 11.4 todavía se identifica como SunOS 5.11. Ejecute uname -a en una máquina illumos en 2026 y la primera palabra mostrada seguirá siendo SunOS, porque illumos heredó el nombre junto con el código.

Qué introdujo Solaris 10 en 2005

Solaris 10 se publicó el 31 de enero de 2005. Es relevante aquí porque todo lo que sobrevivió a la empresa estaba incluido en esa versión o llegó en una de sus actualizaciones.

DTrace fue desarrollado en Sun por Bryan Cantrill, Mike Shapiro y Adam Leventhal, y estuvo disponible por primera vez en noviembre de 2003. Instrumenta un kernel en ejecución y procesos de usuario activos sin recompilar nada y sin reiniciar el proceso que se está supervisando. Una sonda que no se ha habilitado no consume recursos, porque la instrumentación sólo se aplica cuando un script la solicita. Por eso los administradores estaban dispuestos a usarlo en sistemas de producción. DTrace obtuvo el máximo galardón en los Technology Innovation Awards de The Wall Street Journal de 2006 y un premio de USENIX STUG (Software Tools User Group) en 2008.

ZFS fue diseñado en Sun por Jeff Bonwick, Bill Moore y Matthew Ahrens, y se anunció el 14 de septiembre de 2004. Unificó el gestor de volúmenes y el sistema de archivos en una sola capa. Esto permite calcular la suma de comprobación de cada bloque al leerlo y reparar un bloque dañado a partir de una copia redundante. Las escrituras usan copy on write: un bloque nunca se sobrescribe en su ubicación original. Por tanto, un fallo en mitad de una escritura conserva los datos antiguos en lugar de dejar un sistema de archivos escrito parcialmente. Las instantáneas consumen casi nada, porque una instantánea es simplemente el conjunto de bloques que las escrituras posteriores no han modificado. ZFS no se incluyó en la versión inicial de Solaris 10. Se publicó en la actualización Solaris 10 6/06, en junio de 2006.

Zones fue la tercera pieza. Una zone proporciona a un kernel varios espacios de usuario aislados, cada uno con su propio sistema de archivos raíz, tabla de procesos y configuración de red. Zones apareció en una versión beta de Solaris 10 en febrero de 2004 y se incluyó en la versión completa. FreeBSD había llegado antes a la misma idea desde otra perspectiva, y la comparación entre jails y los contenedores Docker sigue siendo la forma más clara de entender qué es realmente el aislamiento a nivel del kernel. Zones sigue activa hoy en illumos y es la base de al menos una de las distribuciones siguientes.

Por qué Sun abrió el código fuente de Solaris

Sun presentó la CDDL (Common Development and Distribution License) ante la OSI (Open Source Initiative) el 1 de diciembre de 2004, y la OSI la aprobó el 14 de enero de 2005. La CDDL se basa en la versión 1.1 de la MPL (Mozilla Public License). Su copyleft se aplica a cada archivo individual: un archivo fuente con CDDL debe seguir teniendo licencia CDDL, pero el binario compilado a partir de él puede combinarse con código sujeto a otros términos.

DTrace fue el primero. Su código fuente se publicó con la CDDL el 25 de enero de 2005, en el sitio opensolaris.org, recién creado, seis días antes de que se lanzara Solaris 10. La mayor parte del código del sistema Solaris se publicó el 14 de junio de 2005. ZFS se integró en la rama principal de desarrollo de Solaris el 31 de octubre de 2005 y llegó a los desarrolladores de OpenSolaris en la build 27, el 16 de noviembre de 2005. OpenSolaris también se convirtió en una distribución instalable: 2008.05 llegó el 5 de mayo de 2008 como un live CD, y 2009.06 llegó el 1 de junio de 2009 con compatibilidad con SPARC.

La elección de la licencia todavía determina qué se puede ejecutar hoy. La Free Software Foundation clasifica la CDDL como una licencia de software libre incompatible con la GPL (GNU General Public License), una incompatibilidad heredada de MPL 1.1. El kernel de Linux usa GPLv2. Por eso ZFS on Linux se compila como un módulo del kernel fuera del árbol de código fuente del kernel, en lugar de integrarse en él, y por eso no forma parte del kernel principal. La decisión de publicar con cualquier licencia abierta es la que más importa para el resto de esta historia, y la historia de las licencias de código abierto explica por qué una empresa tomaría esa decisión.

Qué ocurrió cuando Oracle compró Sun

Oracle anunció el 20 de abril de 2009 que compraría Sun por US$7.4 billion, o US$5.6 billion descontando el efectivo y la deuda de Sun. La operación se completó el 27 de enero de 2010.

El 13 de agosto de 2010 circuló dentro de la empresa un memorando interno de Oracle escrito por Mike Shapiro, Bill Nesheim y Chris Armes, que después se filtró. El documento establecía directamente la nueva política: "Ya no distribuiremos el código fuente de todo el sistema operativo Solaris en tiempo real mientras se desarrolla, cada noche". También descartaba nuevas compilaciones de la comunidad: "No publicaremos ninguna otra distribución binaria, como compilaciones nocturnas o quincenales de binarios de Solaris, ni una distribución OpenSolaris 2010.05 o posterior". En su lugar, las publicaciones de código abierto seguirían a los productos publicados: "Distribuiremos actualizaciones del código aprobado con licencia CDDL u otras licencias de código abierto después de las versiones completas de nuestro sistema operativo Solaris empresarial".

El 23 de agosto de 2010, la Junta de Gobierno de OpenSolaris aprobó una resolución en la que dejaba constancia de que Oracle no había designado un enlace con la junta y había anunciado el fin de la colaboración de desarrollo el 13 de agosto. La junta votó devolver el control de la comunidad a Oracle conforme al estatuto que Sun había redactado originalmente, lo que disolvió la junta.

Oracle Solaris 11 se publicó el 9 de noviembre de 2011. El 2 de septiembre de 2017, Oracle despidió a la mayoría de los equipos de Solaris. Oracle Solaris 11.4 se publicó el 28 de agosto de 2018 y sigue siendo la versión actual. Según la política de soporte de por vida de Oracle, Premier Support para 11.4 está disponible hasta noviembre de 2031 y Extended Support hasta noviembre de 2037. Por tanto, Solaris es un producto comercial con soporte y una fecha de finalización publicada, en una versión que se mantiene actual desde 2018.

Cómo comenzó illumos y por qué se denomina una bifurcación

El 3 August 2010, diez días antes de que se filtrara el memorando, Garrett D'Amore anunció illumos. El nombre combina illum, que significa luz en latín, con OS, abreviatura de sistema operativo. El proyecto lo escribe como una sola palabra y sólo capitaliza la primera letra.

El objetivo era OS/Net, normalmente escrito ON: la consolidación que contiene el kernel y las utilidades principales del sistema. OpenSolaris nunca fue completamente abierto. Varios componentes se distribuían como binarios cerrados que nadie fuera de Sun podía volver a compilar. Entre ellos estaban el código de internacionalización de la biblioteca C (libc_i18n), el gestor de bloqueos de NFS, el framework criptográfico, controladores como mpt para adaptadores de bus de host de LSI y parte del código de las plataformas SPARC. Sustituirlos fue la primera tarea del proyecto, porque un sistema operativo que no se puede compilar desde el código fuente no se puede mantener.

D'Amore fue cuidadoso con el término bifurcación. «Hoy no somos una bifurcación, por la forma en que seguimos OS/Net», escribió. Describía un repositorio derivado que seguiría el árbol de Oracle y podría devolver cambios al repositorio principal. Diez días después, el repositorio principal dejó de publicar cambios. illumos se convirtió en una bifurcación de forma predeterminada, porque ya no había nada que seguir. El árbol principal, illumos-gate, ha superado los 23,000 commits a August 2026 y todavía sigue incorporándolos.

Qué distribuciones proceden de illumos

illumos no es algo que se instale. Es el árbol principal, y las distribuciones construyen sobre él un sistema utilizable. Estas son las que todavía se publican.

  • OpenIndiana se lanzó oficialmente el 14 de septiembre de 2010 en el JISC Centre de Londres. Es el descendiente más directo de la antigua distribución de escritorio y servidor OpenSolaris. Es una versión de publicación continua llamada Hipster, y la instantánea 2026.04 se publicó el 5 de mayo de 2026.
  • OmniOS es una distribución para servidores. Su comunidad la mantiene actualmente como OmniOS CE, después de que su proveedor original dejara de trabajar en ella.
  • SmartOS es una plataforma de hipervisor basada en zones. Joyent la creó y anunció en abril de 2022 que SmartOS y Triton pasarían a MNX Solutions con efecto desde el 1 de mayo de 2022.
  • NexentaStor utilizó la misma base para dispositivos de almacenamiento. Es la línea comercial de la que surgió illumos.
  • Tribblix es una distribución pequeña mantenida por Peter Tribble, que se describe más adelante.
  • DilOS coloca las herramientas de gestión de paquetes de Debian sobre un kernel de illumos.

Cómo es actualmente la instalación de un sistema illumos

Tribblix es un ejemplo útil porque es pequeño, está documentado públicamente y todavía publica versiones. Milestone 41 para x86 se publicó el 5 August 2026, y la línea SPARC llegó a Milestone 34 el 21 April 2026. El proyecto se describe como un estilo retro con componentes modernos y conservó el formato de paquetes SVR4 que usaba Solaris, en lugar de cambiar a un sistema de paquetes más reciente.

La instalación se ejecuta desde una imagen live. Se inicia el sistema desde la ISO, se inicia sesión como el usuario jack con la contraseña jack, se cambia a root y se ejecuta el instalador sobre un dispositivo de disco. Este es el comando que proporciona la documentación de instalación del propio proyecto:

./live_install.sh -G c1t0d0

La opción -G escribe una distribución de particiones EFI (interfaz de firmware extensible), y -b selecciona en su lugar la distribución MBR (registro de arranque maestro) heredada. Los nombres de disco siguen la convención cXtYdZ de Solaris en lugar de /dev/sda, que es lo primero que resultará desconocido si se viene de Linux. Los conjuntos de software se denominan overlays y se pueden indicar en la misma línea:

./live_install.sh -G c1t0d0 develop desktop

Después de la instalación, la herramienta de paquetes es zap. Esta herramienta funciona con overlays y gestiona las dependencias automáticamente:

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

Esos son los comandos que publica Tribblix. Se ejecutan en hardware o en un hipervisor bajo su control. No los encontrará detrás de una imagen de un clic en el panel de control de un VPS. Esa diferencia refleja el estado real del despliegue de illumos en 2026.

Por qué ZFS y DTrace sobrevivieron a Solaris

ZFS salió de Solaris casi inmediatamente después de que se publicara el código fuente. Pawel Jakub Dawidek lo portó a FreeBSD, donde forma parte del sistema desde FreeBSD 7.0 en 2008. El trabajo para disponer de ZFS nativo en Linux comenzó en 2008 y produjo su primera versión estable en 2013. Entre 2010 y 2013, illumos conservó la copia de referencia del código fuente de ZFS, porque el árbol de Oracle era cerrado y todos los demás ports necesitaban una fuente común de la que extraer cambios. Ese es el valor concreto del fork: sin él, los ports no habrían tenido un ancestro común contra el que fusionar cambios.

El proyecto OpenZFS se anunció el 17 de septiembre de 2013 para coordinar esos ports. Matt Ahrens, uno de los autores originales de ZFS, estuvo entre sus fundadores. OpenZFS 2.0 se publicó el 30 de noviembre de 2020, y sus notas de la versión expresan claramente el resultado: "¡El proyecto ZFS on Linux ha cambiado su nombre a OpenZFS! Linux y FreeBSD reciben soporte ahora desde el mismo repositorio, por lo que todas las funciones de OpenZFS están disponibles en ambas plataformas." FreeBSD 13.0 abandonó su propia copia derivada de illumos y pasó a usar ese árbol compartido.

Las dos líneas de ZFS han divergido en el disco. La línea abierta se detuvo en la versión de pool 28, la última versión publicada por Sun, y pasó a usar feature flags con nombre bajo la versión de marcador 5000. De este modo, un pool anuncia las funciones que utiliza en lugar de usar un único número. Oracle siguió incrementando sus propios números de versión con el código cerrado. Un pool creado con una versión posterior a la 28 en una de las líneas no se puede importar en la otra. Si está eligiendo dónde ejecutarlo, cómo funciona OpenZFS en FreeBSD en comparación con Linux explica las diferencias reales entre ambos hosts.

DTrace recorrió una distancia menor. Era estándar en FreeBSD desde la versión 7.1, en enero de 2009, y Apple lo añadió en Mac OS X 10.5 Leopard. Oracle publicó el código del kernel de DTrace bajo GPLv2 en agosto de 2017. El cambio recibió amplia atención en febrero de 2018 y eliminó la barrera de licencia para Linux. Nunca se integró en el kernel principal. En la práctica, el tracing de Linux se ejecuta con eBPF, y bpftrace le proporciona un lenguaje de scripting deliberadamente cercano al D de DTrace.

La idea general es el aspecto importante, no un caso específico de Solaris. Sun publicó ZFS y DTrace bajo una licencia que permitía a otras personas conservar una copia y seguir trabajando en ellos. Cuando dejó de existir la empresa que financiaba el trabajo, este continuó porque el código ya estaba en otros árboles y en manos de otras personas. Las partes de Solaris que nunca se abrieron, incluidos los binarios cerrados que illumos tuvo que reescribir, desaparecieron con la empresa. Eso es lo que cambia la publicación del código fuente, y es el mismo mecanismo que explica cómo unas distribuciones de Linux descienden de otras.

¿Debería ejecutar illumos en un VPS?

Para casi todo el mundo, la respuesta es no, y nada de lo anterior pretende recomendarlo. illumos admite un rango limitado de hardware, porque su conjunto de controladores incluye los que admitía Sun y los que ha desarrollado una comunidad pequeña desde entonces. Los proveedores de VPS publican imágenes de Linux y BSD, por lo que instalar illumos normalmente implica cargar su propia ISO en un proveedor que permita imágenes personalizadas y comprobar después si se reconocen el disco virtual y los dispositivos de red. El software de terceros procede del conjunto de paquetes de la distribución o de su propio compilador.

Existen razones válidas para ejecutarlo: mantener activo un workload de Solaris que necesita conservar, una implementación de zones que ya administra o el interés por leer el código fuente. Las distribuciones indicadas anteriormente se mantienen y sus listas de correo responden preguntas. Eso es distinto de elegirlo por defecto para un servidor nuevo.

Si ha llegado aquí por ZFS, no necesita illumos para usarlo. Ejecute OpenZFS en Linux o FreeBSD, donde está empaquetado, documentado y ampliamente implementado. Si está evaluando la opción BSD de la misma familia para un servidor, la comparación práctica entre Linux y FreeBSD como plataforma de servidor explica qué cambia en la operación diaria. illumos es el origen de estas herramientas, y conocer su procedencia explica gran parte de su comportamiento, empezando por qué zpool y zfs no se parecen en nada al resto de la pila de almacenamiento de Linux.

FAQ

¿illumos es lo mismo que OpenSolaris?

No. OpenSolaris era el proyecto y la distribución de Sun. Oracle lo heredó y lo canceló en 2010. illumos es un proyecto independiente anunciado el 3 August 2010. Se basa en el último código fuente principal publicado de OpenSolaris, la consolidación OS/Net. Su primera tarea fue sustituir los componentes binarios cerrados que OpenSolaris distribuía, incluidos libc_i18n, el gestor de bloqueos de NFS, el marco criptográfico y varios controladores. Ningún código de illumos procede de Oracle después de 2010, porque Oracle dejó de publicarlo.

¿Por qué Linux no puede incluir ZFS en su kernel?

Las licencias no son compatibles. ZFS usa CDDL. La Free Software Foundation la clasifica como una licencia de software libre incompatible con GPL. Esta incompatibilidad fue heredada de MPL 1.1 por CDDL. El kernel de Linux usa GPLv2. En la práctica, OpenZFS en Linux se distribuye como un módulo de kernel externo. Normalmente, DKMS lo compila para cada kernel que instala, o se utiliza un paquete de módulos precompilado. Funciona bien, pero el módulo debe recompilarse para cada kernel nuevo. Por eso puede tardar días o semanas en estar disponible después de una nueva versión del kernel.

¿Oracle Solaris sigue teniendo soporte?

Sí. Oracle Solaris 11.4 se publicó el 28 August 2018 y es la versión actual. Premier Support está disponible hasta November 2031. Extended Support está disponible hasta November 2037 según la política de soporte de ciclo de vida de Oracle. Oracle despidió a la mayoría de los equipos de Solaris el 2 September 2017. Desde entonces, 11.4 ha recibido actualizaciones de los repositorios de soporte, pero no una nueva versión principal. El código fuente completo no se publica como se publicaba el de OpenSolaris.

¿Puedo instalar illumos en un VPS?

A veces, pero rara vez a partir de la lista de imágenes del proveedor. Por lo general, necesita un proveedor que permita conectar una ISO personalizada y usar una consola. Después, debe comprobar que los controladores de disco virtual y de red del árbol de illumos reconozcan los dispositivos del hipervisor. OpenIndiana y Tribblix son los puntos de partida habituales para una instalación de propósito general. SmartOS está diseñado para funcionar como host de hipervisor, no como guest. Pruebe primero en una máquina virtual local antes de pagar por el servicio.

¿Vale la pena aprender DTrace si sólo uso Linux?

El modelo se puede aplicar, aunque la herramienta casi nunca se puede utilizar directamente. Oracle publicó el código del kernel de DTrace bajo GPLv2 en August 2017 y mantiene un port para Oracle Linux. Sin embargo, nunca se integró en el kernel principal. En la práctica, el trazado en Linux utiliza eBPF. El lenguaje que usa bpftrace se diseñó para parecerse al lenguaje D de DTrace. Por eso, las sondas, los predicados y las agregaciones significan lo mismo en ambos. Aprender el modo de razonamiento de DTrace facilita leer los scripts de bpftrace desde el primer intento.

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