SSD Nodes Learn Hosting plans →
Guide Matt ConnorDi Matt Connor

Solaris e illumos: la storia del fork Unix che vive

Sun ha creato ZFS e DTrace in Solaris, poi ne ha aperto il codice. Oracle lo ha richiuso nel 2010: illumos spiega perché oggi esistono ancora entrambi.

Cosa sono Solaris e illumos

Solaris e illumos sono due rami dello stesso albero di codice Unix. Sun Microsystems ha sviluppato Solaris e nel 2005 ha pubblicato gran parte del relativo codice sorgente. Oracle ha acquisito Sun nel 2010 e ha smesso di pubblicare quel codice. Gli sviluppatori esterni a Oracle hanno quindi portato avanti il codice aperto con un nuovo nome: illumos. Nel 2026 il sistema operativo occupa una nicchia. Il livello di storage e lo strumento di tracing integrato in esso hanno invece una diffusione più ampia. È questo il motivo per cui vale la pena conoscere questa storia.

Se usi ZFS su Linux o FreeBSD, stai usando codice scritto da Sun per Solaris, sopravvissuto all'azienda, alla linea di prodotti e alla disputa sulla licenza. Questo articolo racconta come è successo, con le date verificate.

Da dove proviene Solaris: BSD, System V e SVR4

Sun Microsystems è stata fondata il 24 febbraio 1982 da Scott McNealy, Andy Bechtolsheim, Vinod Khosla e Bill Joy. Il suo sistema operativo, SunOS, derivava da BSD (Berkeley Software Distribution), la linea Unix universitaria a cui Bill Joy aveva lavorato prima della nascita di Sun. L'altra linea Unix era System V di AT&T, distribuita commercialmente. Questi due rami costituiscono la separazione descritta in l'albero genealogico di Unix che termina con Linux, e Sun rimase per un decennio sul ramo BSD.

Nel 1987 Sun e AT&T annunciarono un progetto congiunto per unire BSD, System V e Xenix in una singola release: UNIX System V Release 4, generalmente indicata come SVR4. Il 4 settembre 1991 Sun annunciò che SunOS 4 sarebbe stato sostituito da un sistema derivato da SVR4 con un nuovo nome commerciale, Solaris 2. Solaris 2.0 fu rilasciato nel giugno 1992, esclusivamente per hardware SPARC. Sun aveva cambiato ramo nella divisione di Unix e i suoi clienti dovettero portare il proprio software.

Il vecchio nome non scomparve mai. Il kernel mantenne la numerazione di SunOS: Solaris 2.6 eseguiva SunOS 5.6 e Oracle Solaris 11.4 continua a identificarsi come SunOS 5.11. Eseguendo uname -a su una macchina illumos nel 2026, la prima parola stampata è ancora SunOS, perché illumos ha ereditato il nome insieme al codice.

Cosa ha introdotto Solaris 10 nel 2005

Solaris 10 è stato rilasciato il 31 gennaio 2005. È rilevante in questo contesto perché tutto ciò che è sopravvissuto all'azienda era incluso in quella release oppure è arrivato con uno dei suoi aggiornamenti.

DTrace è stato scritto presso Sun da Bryan Cantrill, Mike Shapiro e Adam Leventhal, ed è diventato disponibile per la prima volta nel novembre 2003. Instrumenta un kernel in esecuzione e i processi utente attivi senza ricompilare nulla e senza riavviare il processo monitorato. Un probe non abilitato non ha alcun costo, perché l'instrumentation viene applicata solo quando uno script la richiede. Per questo gli amministratori erano disposti a usare DTrace sui sistemi in produzione. DTrace ha vinto il primo premio nei Technology Innovation Awards 2006 di The Wall Street Journal e un premio USENIX STUG (Software Tools User Group) nel 2008.

ZFS è stato progettato presso Sun da Jeff Bonwick, Bill Moore e Matthew Ahrens ed è stato annunciato il 14 settembre 2004. Ha unificato il volume manager e il filesystem in un unico livello. Questo consente di verificare con un checksum ogni blocco durante la lettura e di riparare un blocco danneggiato usando una copia ridondante. Le scritture usano il copy on write: un blocco non viene mai sovrascritto direttamente. Di conseguenza, un arresto anomalo durante una scrittura lascia intatti i dati precedenti invece di produrre un filesystem scritto solo parzialmente. Gli snapshot hanno un costo quasi nullo, perché uno snapshot è semplicemente l'insieme dei blocchi che le scritture successive non hanno modificato. ZFS non era incluso nella release iniziale di Solaris 10. È stato distribuito con l'aggiornamento Solaris 10 6/06, nel giugno 2006.

Le Zones erano il terzo componente. Una zone consente a un singolo kernel di fornire diversi spazi utente isolati, ciascuno con il proprio root filesystem, la propria tabella dei processi e la propria configurazione di rete. Le Zones sono comparse in una build beta di Solaris 10 nel febbraio 2004 e sono state distribuite con la release completa. FreeBSD aveva raggiunto prima la stessa idea seguendo un approccio diverso, e il confronto tra jail e container Docker resta il modo più chiaro per capire che cosa sia realmente l'isolamento a livello di kernel. Le Zones sono ancora presenti oggi in illumos e costituiscono la base di almeno una delle distribuzioni descritte di seguito.

Perché Sun ha reso disponibile il codice sorgente di Solaris

Sun ha sottoposto la CDDL (Common Development and Distribution License) all’OSI (Open Source Initiative) il 1 dicembre 2004 e l’OSI l’ha approvata il 14 gennaio 2005. La CDDL si basa sulla versione 1.1 della MPL (Mozilla Public License). Il suo copyleft opera a livello del singolo file: un file sorgente CDDL deve restare soggetto alla CDDL, ma il binario compilato a partire da quel file può essere combinato con codice distribuito secondo altri termini.

DTrace è stato il primo. Il suo codice sorgente è stato pubblicato con la CDDL il 25 gennaio 2005, sul sito opensolaris.org appena lanciato, sei giorni prima del rilascio di Solaris 10. La maggior parte del codice di sistema di Solaris è seguita il 14 giugno 2005. ZFS è stato integrato nel trunk principale dello sviluppo di Solaris il 31 ottobre 2005 ed è arrivato agli sviluppatori di OpenSolaris nella build 27 il 16 novembre 2005. OpenSolaris è diventato anche una distribuzione installabile: la versione 2008.05 è arrivata il 5 maggio 2008 come live CD, mentre la versione 2009.06 è arrivata il 1 giugno 2009 con il supporto per SPARC.

La scelta della licenza determina ancora oggi che cosa è possibile eseguire. La Free Software Foundation classifica la CDDL come licenza di software libero incompatibile con la GPL (GNU General Public License), un’incompatibilità ereditata dalla MPL 1.1. Il kernel Linux è distribuito con la GPLv2. Per questo ZFS on Linux viene compilato come modulo del kernel al di fuori dell’albero dei sorgenti del kernel, invece di essere integrato al suo interno, e non fa parte del kernel mainline. La decisione di pubblicare il codice con una licenza open source è quella che conta di più per il resto di questa storia, e la storia delle licenze open source spiega perché un’azienda dovrebbe compiere una scelta del genere.

Cosa è successo quando Oracle ha acquistato Sun

Oracle ha annunciato il 20 April 2009 che avrebbe acquisito Sun per US$7.4 billion, ovvero US$5.6 billion al netto della liquidità e dei debiti di Sun. L'operazione si è conclusa il 27 January 2010.

Il 13 August 2010 un memo interno di Oracle, redatto da Mike Shapiro, Bill Nesheim e Chris Armes, è stato distribuito all'interno dell'azienda e successivamente divulgato. Il nuovo criterio era espresso in modo diretto: "Non distribuiremo più in tempo reale il codice sorgente dell'intero sistema operativo Solaris durante il suo sviluppo, con cadenza notturna." Il memo escludeva ulteriori build della community: "Non rilasceremo altre distribuzioni binarie, come le build nightly o bisettimanali dei binari di Solaris, né una distribuzione OpenSolaris 2010.05 o successiva." I rilasci open source avrebbero invece seguito i prodotti rilasciati: "Distribuiremo gli aggiornamenti del codice approvato con licenza CDDL o con altre licenze open source dopo i rilasci completi del nostro sistema operativo enterprise Solaris."

Il 23 August 2010 l'OpenSolaris Governing Board ha approvato una risoluzione in cui si registrava che Oracle non aveva nominato un referente per il board e aveva annunciato la fine della collaborazione allo sviluppo il 13 August. Il board ha votato per restituire a Oracle il controllo della community secondo lo statuto originariamente redatto da Sun; questa decisione ha sciolto il board.

Oracle Solaris 11 è stato rilasciato il 9 November 2011. Il 2 September 2017 Oracle ha licenziato la maggior parte dei team Solaris. Oracle Solaris 11.4 è stato rilasciato il 28 August 2018 ed era ancora la release corrente, con aggiornamenti del repository di supporto, nel July 2026. Quando Oracle ha rivisto l'ultima volta la propria policy sul ciclo di vita del supporto per la versione 11.4, nel January 2024, ha mantenuto il Premier Support fino al 2031 e ha esteso l'Extended Support dal 2034 al 2037. Solaris è quindi un prodotto commerciale supportato, con una data di fine supporto pubblicata, basato su una release corrente dal 2018.

Come è nato illumos e perché si parla di fork

Il 3 agosto 2010, dieci giorni prima della fuga del memo, Garrett D'Amore annunciò illumos. Il nome unisce illum, il latino per luce, a OS, acronimo di operating system. Il progetto lo scrive come un'unica parola, con la sola prima lettera maiuscola.

L'obiettivo era OS/Net, generalmente indicato come ON: la consolidazione che contiene il kernel e le utilità di sistema principali. OpenSolaris non era mai stato completamente open source. Alcune parti venivano distribuite come binari chiusi che nessuno al di fuori di Sun poteva ricompilare, tra cui il codice per l'internazionalizzazione della libreria C (libc_i18n), il gestore dei lock NFS, il framework crittografico, driver come mpt per gli host bus adapter LSI e parte del codice per le piattaforme SPARC. Sostituire questi componenti fu il primo compito del progetto, perché un sistema operativo che non può essere compilato dal codice sorgente non può essere sottoposto a manutenzione.

D'Amore prestava attenzione all'uso del termine fork. «Oggi non siamo un fork, per il modo in cui seguiamo OS/Net», scrisse, descrivendo un repository downstream che avrebbe seguito l'albero di Oracle e avrebbe potuto restituire le modifiche al progetto upstream. Dieci giorni dopo, il progetto upstream smise di pubblicare aggiornamenti. illumos diventò quindi un fork, perché non c'era più nulla da seguire. L'albero principale, illumos-gate, ha superato 23,000 commit a ottobre 2026 e continua ancora a riceverne.

Quali distribuzioni derivano da illumos

illumos non è un sistema che si installa. È l’albero di base del sistema, sul quale le distribuzioni costruiscono un ambiente utilizzabile. Queste sono le distribuzioni ancora rilasciate.

  • OpenIndiana è stata lanciata ufficialmente il 14 settembre 2010 presso il JISC Centre di Londra ed è la discendente più diretta della vecchia distribuzione desktop e server OpenSolaris. È una rolling release denominata Hipster e lo snapshot 2026.04 è stato pubblicato il 5 maggio 2026.
  • OmniOS è una distribuzione server, oggi mantenuta dalla community come OmniOS CE dopo che il fornitore originale ha interrotto lo sviluppo.
  • SmartOS è una piattaforma hypervisor basata sulle zones. È stata creata da Joyent, che nell’aprile 2022 ha annunciato il trasferimento di SmartOS e Triton a MNX Solutions, con effetto dal 1 maggio 2022.
  • NexentaStor utilizzava la stessa base per gli appliance di storage. È la linea commerciale dalla quale deriva illumos.
  • Tribblix è una distribuzione compatta mantenuta da Peter Tribble, descritta di seguito.
  • DilOS aggiunge gli strumenti di gestione dei pacchetti di Debian a un kernel illumos.

Come si installa oggi un sistema illumos

Tribblix è l'esempio più utile perché è di dimensioni ridotte, dispone di documentazione pubblica e viene ancora rilasciato. Milestone 41 per x86 è stato pubblicato il 5 agosto 2026. La linea SPARC è passata a Milestone 35 il 23 settembre 2026, con una release sintetica che aggiunge pacchetti più recenti, incluso gcc 10, al sistema operativo Milestone 34; l'ISO di installazione SPARC scaricabile è ancora Milestone 34. Il progetto si descrive come un sistema dallo stile rétro con componenti moderni e ha mantenuto il formato dei pacchetti SVR4 utilizzato da Solaris, invece di passare a un sistema di pacchetti più recente.

L'installazione viene eseguita da un'immagine live. Si avvia l'ISO, si accede come utente jack con la password jack, si diventa root e si esegue l'installer su un dispositivo disco. Questo è il comando riportato nella documentazione di installazione del progetto:

./live_install.sh -G c1t0d0

Il flag -G scrive una tabella delle partizioni EFI (extensible firmware interface), mentre -b seleziona la tabella delle partizioni MBR (master boot record) legacy. I nomi dei dischi seguono la convenzione Solaris cXtYdZ anziché /dev/sda. Questa è la prima differenza che risulta insolita se si proviene da Linux. Gli insiemi di software sono chiamati overlay e possono essere specificati sulla stessa riga:

./live_install.sh -G c1t0d0 develop desktop

Dopo l'installazione, lo strumento per i pacchetti è zap. Opera sugli overlay e gestisce automaticamente le dipendenze:

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

Questi sono i comandi pubblicati da Tribblix. Vengono eseguiti su hardware o su un hypervisor sotto il proprio controllo. Tribblix non è disponibile come immagine con installazione con un solo clic nel pannello di controllo di un VPS. SmartOS è l'eccezione tra i sistemi illumos: MNX, l'azienda che lo ha rilevato da Joyent, offre una "scelta tra Linux, FreeBSD o SmartOS" tramite il proprio pannello di controllo cloud (verificato il 12 ottobre 2026). Al di fuori di questo caso, un'immagine illumos nell'elenco di un provider è rara. Questa è la situazione reale della distribuzione di illumos nel 2026.

Perché ZFS e DTrace sono sopravvissuti a Solaris

ZFS ha lasciato Solaris quasi subito dopo la pubblicazione del codice sorgente. Pawel Jakub Dawidek lo ha portato su FreeBSD, dove fa parte del sistema da FreeBSD 7.0, nel 2008. Il lavoro su ZFS nativo per Linux è iniziato nel 2008 e ha prodotto la prima release stabile nel 2013. Tra il 2010 e il 2013 illumos ha conservato la copia di riferimento del codice sorgente di ZFS, perché il tree di Oracle era chiuso e ogni altro port aveva bisogno di una fonte da cui recuperare le modifiche. Questo è il valore concreto del fork: senza di esso, i port non avrebbero avuto un antenato comune con cui effettuare il merge.

Il progetto OpenZFS è stato annunciato il 17 settembre 2013 per coordinare questi port. Tra i fondatori c'era Matt Ahrens, uno degli autori originali di ZFS. OpenZFS 2.0 è stato rilasciato il 30 novembre 2020. Le release notes descrivono chiaramente il risultato: "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." FreeBSD 13.0 ha abbandonato la propria copia derivata da illumos ed è passato a quel tree condiviso.

Le due linee di sviluppo di ZFS sono divergenti a livello di formato su disco. La linea open si è fermata alla pool version 28, l'ultima pubblicata da Sun, e poi è passata ai feature flag con nome sotto la versione segnaposto 5000. In questo modo una pool pubblicizza le feature che usa, invece di un singolo numero. Oracle ha continuato a incrementare i propri numeri di versione mantenendo il codice sorgente chiuso. Una pool creata oltre la versione 28 su una linea non può essere importata sull'altra. Se devi scegliere dove eseguire il sistema, come si comporta OpenZFS su FreeBSD rispetto a Linux descrive le differenze effettive tra i due host.

DTrace ha seguito un percorso più breve. Era standard in FreeBSD già dalla versione 7.1, nel gennaio 2009, e Apple lo ha aggiunto in Mac OS X 10.5 Leopard. Oracle ha rilasciato il codice del kernel di DTrace con licenza GPLv2 nell'agosto 2017. Il cambiamento ha ricevuto ampia attenzione nel febbraio 2018 e ha rimosso l'ostacolo costituito dalla licenza per Linux. Il codice non è mai stato integrato nel kernel mainline. Nella pratica, il tracing su Linux si basa su eBPF e bpftrace gli fornisce un linguaggio di scripting volutamente simile al D di DTrace.

Il punto generale riguarda il modello, non Solaris. Sun ha pubblicato ZFS e DTrace con una licenza che consentiva ad altri di conservarne una copia e continuare a lavorarci. Quando l'azienda che finanziava il lavoro ha smesso di farlo, lo sviluppo è continuato, perché il codice si trovava già in altri tree e nelle mani di altri sviluppatori. Le parti di Solaris che non sono mai state aperte, inclusi i binari chiusi che illumos ha dovuto riscrivere, sono scomparse insieme all'azienda. Questo è l'effetto dell'open source ed è lo stesso meccanismo alla base di come le distribuzioni Linux derivano le une dalle altre.

Eseguire illumos su una VPS?

Per quasi tutti la risposta è no e nulla di quanto riportato sopra costituisce una raccomandazione a provarlo. illumos supporta una gamma ristretta di hardware, perché il suo set di driver comprende quelli supportati da Sun e quelli sviluppati da una piccola comunità negli anni successivi. La maggior parte dei provider VPS pubblica solo immagini Linux e BSD. L'eccezione è MNX, che ha rilevato SmartOS da Joyent e offre SmartOS insieme a Linux e FreeBSD nel proprio cloud. Negli altri casi, installare illumos significa in genere caricare una propria ISO su un provider che consente di usare immagini personalizzate e poi verificare se il disco virtuale e i dispositivi di rete vengono riconosciuti. Il software di terze parti proviene dal set di pacchetti della distribuzione oppure dal proprio compilatore.

Esistono motivi concreti per eseguirlo: un carico di lavoro Solaris che deve restare attivo, una distribuzione basata su zones già in uso oppure l'interesse per leggere il codice sorgente. Le distribuzioni elencate sopra sono mantenute e le relative mailing list forniscono risposte alle domande. È una situazione diversa dallo sceglierlo come impostazione predefinita per un nuovo server.

Se sei arrivato qui per ZFS, non ti serve illumos per usarlo. Esegui OpenZFS su Linux o FreeBSD, dove è disponibile come pacchetto, documentato e ampiamente utilizzato. Se stai valutando il ramo BSD della stessa famiglia per un server, il confronto pratico tra Linux e FreeBSD come piattaforme server illustra le differenze nella gestione quotidiana. illumos è l'origine di questi strumenti e sapere da dove provengono aiuta a comprenderne molti comportamenti, a partire dal motivo per cui zpool e zfs sono completamente diversi dal resto dello stack di storage Linux.

FAQ

OpenSolaris e illumos sono la stessa cosa?

No. OpenSolaris era il progetto e la distribuzione di Sun, ereditati da Oracle, che ha interrotto il progetto nel 2010. illumos è un progetto separato, annunciato il 3 August 2010 e basato sul codice sorgente dell'ultimo core OpenSolaris pubblicato, la consolidazione OS/Net. Il primo obiettivo era sostituire i componenti binari chiusi inclusi in OpenSolaris, tra cui libc_i18n, il gestore dei lock NFS, il framework crittografico e diversi driver. Dopo il 2010 non proviene da Oracle alcun codice di illumos, perché Oracle ha smesso di pubblicarlo.

Perché Linux non può includere ZFS nel kernel?

Le licenze non sono compatibili. ZFS è distribuito con la licenza CDDL, che la Free Software Foundation considera una licenza di software libero incompatibile con la GPL. Questa incompatibilità è stata ereditata dalla CDDL dalla MPL 1.1. Il kernel Linux è distribuito con GPLv2. Di conseguenza, OpenZFS su Linux viene distribuito come modulo del kernel esterno all'albero dei sorgenti. In genere viene compilato da DKMS per ogni kernel installato oppure fornito come pacchetto di moduli precompilato. Funziona bene, ma il modulo deve essere ricompilato per ogni nuovo kernel. Per questo può essere disponibile diversi giorni o settimane dopo una nuova release del kernel.

Oracle Solaris è ancora supportato?

Sì. Oracle Solaris 11.4 è stato rilasciato il 28 August 2018 ed era ancora la release corrente, con aggiornamenti dei repository di supporto, a July 2026. La policy di supporto a lungo termine di Oracle, revisionata l'ultima volta per 11.4 a January 2024, prevede il Premier Support fino al 2031 e l'Extended Support fino al 2037. Oracle ha licenziato la maggior parte dei team Solaris il 2 September 2017. Da allora 11.4 ha ricevuto aggiornamenti dei repository di supporto, ma non una nuova versione principale. Il codice sorgente completo non viene pubblicato come avveniva per OpenSolaris.

Posso installare illumos su un VPS?

A volte, ma raramente utilizzando un'immagine disponibile nell'elenco del provider. MNX, che mantiene SmartOS, offre SmartOS dal proprio pannello di controllo cloud. Negli altri casi serve in genere un provider che consenta di collegare una ISO personalizzata e di utilizzare una console. È inoltre necessario verificare che i driver del disco virtuale e della rete presenti nell'albero di illumos riconoscano i dispositivi dell'hypervisor. OpenIndiana e Tribblix sono i punti di partenza consueti per un'installazione generica. SmartOS è invece progettato per essere un host hypervisor, non un guest da installare autonomamente. Esegui i test in una macchina virtuale locale prima di acquistare un servizio.

Vale la pena imparare DTrace se uso soltanto Linux?

Il modello è trasferibile, anche se lo strumento in gran parte non lo è. Oracle ha rilasciato il codice del kernel di DTrace con GPLv2 nel August 2017 e mantiene un port per Oracle Linux, ma il codice non è mai stato integrato nel kernel mainline. Nella pratica, il tracing su Linux utilizza eBPF. Il linguaggio bpftrace è stato progettato per assomigliare al D di DTrace. Per questo probe, predicati e aggregazioni hanno lo stesso significato in entrambi. Imparare il modo di ragionare di DTrace rende leggibili al primo tentativo gli script bpftrace.

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