SSD Nodes Learn Hosting plans →
Guide Matt ConnorDi Matt Connor

Solaris e illumos: perché il fork è ancora vivo

Sun ha creato ZFS e DTrace in Solaris, poi ne ha aperto il codice. Oracle lo ha richiuso: illumos è il fork che permette di usarli ancora oggi.

Che cosa sono Solaris e illumos

Solaris e illumos sono due rami dello stesso albero dei sorgenti 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 sviluppato al suo interno, invece, sono ancora ampiamente utilizzati. È questo il motivo per cui vale la pena conoscere questa storia.

Se usi ZFS su Linux o FreeBSD, stai eseguendo codice scritto da Sun per Solaris, sopravvissuto all'azienda, alla linea di prodotti e alla disputa sulla licenza. Questo articolo racconta come è accaduto, 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 variante Unix sviluppata all'università su cui Bill Joy aveva lavorato prima della nascita di Sun. L'altra variante Unix era System V di AT&T, distribuita commercialmente. Questi due rami sono la divisione descritta nell'albero genealogico di Unix che termina con Linux, e per un decennio Sun è rimasta sul lato 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 è stato rilasciato nel giugno 1992, esclusivamente per hardware SPARC. Sun aveva cambiato lato nella divisione Unix e i suoi clienti dovevano portare il proprio software.

Il vecchio nome non è mai scomparso. Il kernel ha mantenuto la numerazione di SunOS, quindi Solaris 2.6 eseguiva SunOS 5.6 e Oracle Solaris 11.4 si identifica ancora 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 January 2005. È rilevante in questo contesto perché tutto ciò che è sopravvissuto alla società era incluso in quella release o è arrivato con uno dei suoi aggiornamenti.

DTrace è stato sviluppato presso Sun da Bryan Cantrill, Mike Shapiro e Adam Leventhal ed è diventato disponibile per la prima volta nel November 2003. Instrumenta un kernel in esecuzione e i processi utente in esecuzione senza ricompilare nulla e senza riavviare il processo monitorato. Una probe non abilitata non ha alcun costo, perché l'instrumentation viene applicata solo quando uno script la richiede. Per questo motivo gli amministratori erano disposti a usare DTrace sui sistemi di produzione. DTrace ha vinto il primo premio nei The Wall Street Journal's 2006 Technology Innovation Awards 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 September 2004. Ha unificato il volume manager e il filesystem in un unico livello. Questo consente di calcolare il checksum di 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 sul posto. 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 rilasciato con l'aggiornamento Solaris 10 6/06, nel June 2006.

Le Zones erano il terzo elemento. Una zone fornisce a un singolo kernel più user space isolati, ciascuno con il proprio root filesystem, la propria process table e la propria configurazione di rete. Le Zones sono apparse in una beta build di Solaris 10 nel February 2004 e sono state rilasciate con la versione completa. FreeBSD aveva raggiunto prima la stessa idea da una prospettiva diversa e il confronto tra jail e container Docker resta il modo più chiaro per capire in cosa consista effettivamente l'isolamento a livello kernel. Le Zones sono ancora presenti oggi in illumos e costituiscono la base di almeno una delle distribuzioni descritte di seguito.

Perché Sun ha pubblicato 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 dei singoli file: un file sorgente CDDL deve restare 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 secondo 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 del sistema Solaris è stata pubblicata 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 ciò che è possibile eseguire. La Free Software Foundation classifica la CDDL come una licenza per il software libero incompatibile con la GPL (GNU General Public License), un'incompatibilità ereditata dalla MPL 1.1. Il kernel Linux è distribuito con GPLv2. Per questo motivo ZFS on Linux viene compilato come modulo del kernel al di fuori dell'albero dei sorgenti del kernel, invece di esservi integrato, e non fa parte del kernel principale. La decisione di pubblicare il codice secondo una licenza open source è quella più importante per il resto di questa storia, e la storia delle licenze open source spiega perché un'azienda dovrebbe prendere una decisione simile.

Cosa è successo quando Oracle ha acquisito Sun

Oracle ha annunciato il 20 aprile 2009 l'acquisizione di Sun per 7,4 miliardi di dollari USA, pari a 5,6 miliardi di dollari USA al netto della liquidità e dei debiti di Sun. L'operazione si è conclusa il 27 gennaio 2010.

Il 13 agosto 2010 un memo interno di Oracle, scritto da Mike Shapiro, Bill Nesheim e Chris Armes, è stato distribuito all'interno dell'azienda e successivamente divulgato. Il documento esponeva direttamente la nuova politica: "Non distribuiremo più in tempo reale il codice sorgente dell'intero sistema operativo Solaris durante il suo sviluppo, con cadenza notturna." Escludeva inoltre ulteriori build della community: "Non rilasceremo altre distribuzioni binarie, come le build notturne 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 aggiornamenti del codice approvato con licenza CDDL o con altre licenze open source dopo i rilasci completi del nostro sistema operativo Solaris enterprise."

Il 23 agosto 2010 l'OpenSolaris Governing Board ha approvato una risoluzione che registrava il fatto che Oracle non aveva nominato un referente per il board e aveva annunciato la fine della collaborazione allo sviluppo il 13 agosto. 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 novembre 2011. Il 2 settembre 2017 Oracle ha licenziato la maggior parte dei team Solaris. Oracle Solaris 11.4 è stato rilasciato il 28 agosto 2018 ed è tuttora la release corrente. In base alla policy di supporto a vita di Oracle, il Premier Support per 11.4 è previsto fino a novembre 2031 e l'Extended Support fino a novembre 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 chiama fork

Il 3 agosto 2010, dieci giorni prima della fuga del memorandum, Garrett D'Amore annunciò illumos. Il nome unisce illum, il latino per «luce», e OS, l'abbreviazione 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 fondamentali. OpenSolaris non era mai stato completamente aperto. Alcuni componenti erano distribuiti come binari chiusi che nessuno al di fuori di Sun poteva ricompilare, tra cui il codice di 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 si può compilare dal codice sorgente non è realmente manutenibile.

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 ad agosto 2026 e continua a riceverne.

Quali distribuzioni derivano da illumos

illumos non è un sistema che si installa. È l’albero di base e le distribuzioni costruiscono sopra di esso un sistema utilizzabile. Queste sono le distribuzioni ancora disponibili.

  • OpenIndiana è stata avviata 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, ora mantenuta dalla sua community come OmniOS CE dopo che il fornitore originale ha interrotto il progetto.
  • 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 da cui è nato illumos.
  • Tribblix è una distribuzione di piccole dimensioni mantenuta da Peter Tribble, descritta di seguito.
  • DilOS aggiunge gli strumenti di gestione dei pacchetti di Debian a un kernel illumos.

Come appare oggi l'installazione di un sistema illumos

Tribblix è l'esempio più utile perché è piccolo, documentato pubblicamente e ancora oggetto di nuove release. La Milestone 41 per x86 è stata pubblicata il 5 agosto 2026, mentre la linea SPARC ha raggiunto la Milestone 34 il 21 aprile 2026. Il progetto si descrive come un sistema in stile retro con componenti moderni e ha mantenuto il formato dei pacchetti SVR4 usato 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 sul dispositivo disco. Questa è la procedura indicata nella documentazione ufficiale del progetto:

./live_install.sh -G c1t0d0

Il flag -G scrive una tabella delle partizioni EFI (extensible firmware interface), mentre -b seleziona la tabella legacy MBR (master boot record). I nomi dei dischi seguono la convenzione Solaris cXtYdZ anziché /dev/sda. Questo è il primo aspetto che risulta insolito per chi proviene da Linux. Gli insiemi di software sono chiamati overlay e possono essere indicati sulla stessa riga:

./live_install.sh -G c1t0d0 develop desktop

Dopo l'installazione, lo strumento per i pacchetti è zap. Lo strumento 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. Non sono disponibili tramite un'immagine con installazione in un clic nel pannello di controllo di un VPS. Questa differenza descrive in modo realistico lo stato 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 sul port nativo di ZFS per Linux è iniziato nel 2008 e ha prodotto la prima release stabile nel 2013. Tra il 2010 e il 2013, illumos ha mantenuto la copia di riferimento del codice sorgente di ZFS, perché l'albero 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 confrontare e unire le modifiche.

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 note di rilascio 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 all'albero condiviso.

Le due linee di ZFS hanno seguito percorsi diversi sul disco. La linea open si è fermata alla versione del pool 28, l'ultima pubblicata da Sun, ed è passata ai feature flag con nome sotto la versione segnaposto 5000. In questo modo un pool dichiara quali feature utilizza invece di usare un singolo numero. Oracle ha continuato a incrementare i propri numeri di versione mantenendo il codice sorgente chiuso. Un pool creato oltre la versione 28 su una delle due linee non può essere importato sull'altra. Se devi scegliere dove eseguirlo, come si comporta OpenZFS su FreeBSD rispetto a Linux descrive le differenze effettive tra i due host.

DTrace ha percorso una distanza più breve. Era già incluso di serie in FreeBSD 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 della 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 linguaggio D di DTrace.

Il punto generale riguarda il meccanismo, non Solaris in particolare. Sun ha pubblicato ZFS e DTrace con una licenza che consentiva ad altri di conservarne una copia e continuare a svilupparli. Quando l'azienda che finanziava il lavoro ha smesso di farlo, lo sviluppo è continuato perché il codice era già presente in altri alberi 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 è ciò che cambia con la pubblicazione del codice sorgente e lo stesso meccanismo è alla base di come le distribuzioni Linux derivano le une dalle altre.

Eseguire illumos su un VPS?

Per quasi tutti la risposta è no e nulla di quanto riportato sopra costituisce una raccomandazione in tal senso. illumos supporta un insieme ristretto di hardware, perché il suo set di driver comprende quelli supportati da Sun e quelli sviluppati successivamente da una piccola comunità. I provider VPS pubblicano immagini Linux e BSD. Pertanto, installare illumos di solito significa caricare la propria ISO su un provider che consente l'uso di immagini personalizzate e 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 workload Solaris che deve rimanere operativo, una distribuzione basata su zones che già gestisci 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 dalla scelta 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 lato BSD della stessa famiglia per un server, il confronto pratico tra Linux e FreeBSD come piattaforme server descrive le differenze nella gestione quotidiana. illumos è l'origine di questi strumenti e sapere da dove provengono aiuta a comprenderne il comportamento, a partire dal motivo per cui zpool e zfs risultano completamente diversi dal resto dello stack di storage Linux.

FAQ

illumos è la stessa cosa di OpenSolaris?

No. OpenSolaris era il progetto e la distribuzione di Sun, ereditati da Oracle, che li ha terminati nel 2010. illumos è un progetto separato, annunciato il 3 August 2010 e basato sull'ultimo codice sorgente pubblicato del core di OpenSolaris, il consolidamento 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 nessun codice di illumos proviene da Oracle, perché Oracle ha smesso di pubblicarlo.

Perché Linux non può includere ZFS nel kernel?

Le licenze non sono compatibili. ZFS è distribuito con 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 licenza GPLv2. Di conseguenza, OpenZFS su Linux viene distribuito come modulo del kernel out-of-tree, generalmente compilato da DKMS per ogni kernel installato, oppure come pacchetto di moduli precompilato. Funziona bene, ma il modulo deve essere ricompilato per ogni nuovo kernel. Per questo può arrivare con giorni o settimane di ritardo rispetto a una nuova release del kernel.

Oracle Solaris è ancora supportato?

Sì. Oracle Solaris 11.4 è stato rilasciato il 28 August 2018 ed è la release corrente. Il Premier Support è previsto fino a November 2031 e l'Extended Support fino a November 2037, secondo la politica di supporto a vita di Oracle. 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 usando un'immagine disponibile nell'elenco del provider. In genere serve un provider che consenta di collegare una ISO personalizzata e di usare una console. È inoltre necessario verificare che i driver per il disco virtuale e la rete presenti nell'albero di illumos riconoscano i dispositivi dell'hypervisor. OpenIndiana e Tribblix sono i punti di partenza abituali per un'installazione generica. SmartOS è invece progettato per essere un host hypervisor, non un guest. Eseguire un test in una macchina virtuale locale prima di acquistare il servizio.

Vale la pena imparare DTrace se uso soltanto Linux?

Il modello è trasferibile, anche se lo strumento nella maggior parte dei casi non lo è. Oracle ha rilasciato il codice del kernel di DTrace con licenza GPLv2 in August 2017 e mantiene un port per Oracle Linux, ma il codice non è mai stato integrato nel kernel principale. In pratica, il tracing su Linux usa eBPF. Il linguaggio usato da bpftrace è stato progettato per richiamare il D di DTrace. Per questo probe, predicati e aggregazioni hanno lo stesso significato in entrambi i sistemi. Imparare il metodo di lavoro di DTrace rende gli script bpftrace leggibili al primo tentativo.

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