Solaris a illumos: historia powstania forka
Dowiedz się, jak po przejęciu Sun przez Oracle społeczność uratowała kod ZFS oraz DTrace. Poznaj historię powstania projektu illumos i jego wpływ na współczesne systemy.
Czym są Solaris i illumos
Solaris oraz illumos to dwie gałęzie wywodzące się z tego samego drzewa źródeł Unix. Firma Sun Microsystems stworzyła system Solaris i w 2005 roku udostępniła większość jego kodu źródłowego. W 2010 roku Oracle przejęło Sun i zaprzestało publikacji kodu, dlatego programiści spoza Oracle kontynuowali rozwój otwartej wersji pod nową nazwą: illumos. W 2026 roku sam system operacyjny jest rozwiązaniem niszowym. Warstwa pamięci masowej oraz wbudowane narzędzia do śledzenia procesów takie nie są i właśnie dlatego warto poznać tę historię.
Używając ZFS w systemach Linux lub FreeBSD, korzystasz z kodu napisanego w firmie Sun dla systemu Solaris, który przetrwał samą korporację, linię produktów oraz spory licencyjne. Niniejszy wpis przedstawia historię tego procesu wraz ze zweryfikowanymi datami.
Pochodzenie systemu Solaris: BSD, System V oraz SVR4
Firma Sun Microsystems została założona 24 lutego 1982 roku przez Scotta McNealy'ego, Andy'ego Bechtolsheima, Vinoda Khoslę oraz Billa Joya. System operacyjny SunOS wywodził się z BSD (Berkeley Software Distribution), uniwersyteckiej linii systemu Unix, nad którą Bill Joy pracował jeszcze przed powstaniem firmy Sun. Drugą linią systemu Unix był komercyjny System V firmy AT&T. Te dwie gałęzie stanowią podział opisany w drzewie genealogicznym systemu Unix, które kończy się na systemie Linux, a firma Sun przez dekadę pozostawała po stronie BSD.
W 1987 roku Sun oraz AT&T ogłosiły wspólny projekt połączenia BSD, System V oraz Xenix w jedno wydanie: UNIX System V Release 4, powszechnie określane jako SVR4. 4 września 1991 roku firma Sun ogłosiła, że SunOS 4 zostanie zastąpiony systemem wywodzącym się z SVR4 pod nową nazwą marketingową: Solaris 2. System Solaris 2.0 został wydany w czerwcu 1992 roku, wyłącznie na architekturę SPARC. Firma Sun zmieniła stronę podziału systemu Unix, a klienci musieli przenieść swoje oprogramowanie.
Stara nazwa nigdy nie zniknęła. Jądro systemu zachowało numerację SunOS, dlatego Solaris 2.6 działał pod kontrolą SunOS 5.6, a Oracle Solaris 11.4 nadal identyfikuje się jako SunOS 5.11. Po uruchomieniu uname -a na maszynie z systemem illumos w 2026 roku, pierwszym wyświetlonym słowem nadal będzie SunOS, ponieważ illumos odziedziczył tę nazwę wraz z kodem źródłowym.
Co system Solaris 10 wprowadził w 2005 roku
System Solaris 10 został wydany 31 stycznia 2005 roku. Jest to istotne, ponieważ wszystko, co przetrwało działalność firmy, znajdowało się w tym wydaniu lub pojawiło się w jednej z jego aktualizacji.
Narzędzie DTrace zostało stworzone w firmie Sun przez Bryana Cantrilla, Mike'a Shapiro oraz Adama Leventhala i po raz pierwszy stało się dostępne w listopadzie 2003 roku. Umożliwia ono instrumentację działającego jądra oraz procesów użytkownika bez konieczności rekompilacji czegokolwiek i bez restartowania monitorowanego procesu. Sonda, która nie została aktywowana, nie generuje żadnego narzutu, ponieważ instrumentacja jest wstrzykiwana tylko wtedy, gdy wymaga tego skrypt. Z tego powodu administratorzy chętnie korzystali z tego narzędzia na maszynach produkcyjnych. DTrace zdobyło główną nagrodę w konkursie Technology Innovation Awards dziennika The Wall Street Journal w 2006 roku oraz nagrodę USENIX STUG (Software Tools User Group) w 2008 roku.
System plików ZFS został zaprojektowany w firmie Sun przez Jeffa Bonwicka, Billa Moore'a oraz Matthew Ahrensa i ogłoszony 14 września 2004 roku. Połączył on menedżer woluminów z systemem plików w jedną warstwę, co pozwala na sprawdzanie sum kontrolnych każdego bloku podczas odczytu oraz naprawę uszkodzonego bloku z kopii nadmiarowej. Operacje zapisu odbywają się w trybie copy on write: blok nigdy nie jest nadpisywany w miejscu, więc awaria w trakcie zapisu pozostawia stare dane w stanie nienaruszonym, zamiast tworzyć częściowo zapisany system plików. Migawki (snapshots) nie generują niemal żadnych kosztów, ponieważ migawka jest po prostu zbiorem bloków, których późniejsze operacje zapisu nie zmodyfikowały. ZFS nie znalazł się w początkowym wydaniu Solaris 10. Został udostępniony w aktualizacji Solaris 10 6/06, w czerwcu 2006 roku.
Strefy (Zones) były trzecim elementem. Strefa zapewnia jednemu jądru kilka odizolowanych przestrzeni użytkownika, z których każda posiada własny system plików root, tablicę procesów oraz konfigurację sieci. Strefy pojawiły się w wersji beta systemu Solaris 10 w lutym 2004 roku i zostały dołączone do pełnego wydania. System FreeBSD doszedł do tego samego rozwiązania wcześniej, wychodząc z innego założenia, a porównanie między jails a kontenerami Docker pozostaje najjaśniejszym sposobem na zrozumienie, czym w rzeczywistości jest izolacja na poziomie jądra. Strefy funkcjonują obecnie w systemie illumos i stanowią fundament co najmniej jednej dystrybucji opisanej poniżej.
Dlaczego Sun udostępnił kod źródłowy Solaris
Firma Sun przedłożyła licencję CDDL (Common Development and Distribution License) organizacji OSI (Open Source Initiative) 1 grudnia 2004 roku, a zatwierdzenie nastąpiło 14 stycznia 2005 roku. CDDL bazuje na wersji 1.1 licencji MPL (Mozilla Public License). Mechanizm copyleft działa w niej na poziomie pojedynczego pliku: plik źródłowy na licencji CDDL musi pozostać na tej licencji, jednak zbudowany z niego plik binarny może być łączony z kodem na innych warunkach.
Jako pierwsze udostępniono DTrace. Kod źródłowy opublikowano na licencji CDDL 25 stycznia 2005 roku w nowo uruchomionym serwisie opensolaris.org, sześć dni przed wydaniem systemu Solaris 10. Większość kodu systemu Solaris udostępniono 14 czerwca 2005 roku. ZFS zintegrowano z główną gałęzią rozwojową Solaris 31 października 2005 roku, a do programistów OpenSolaris trafił on w build 27 w dniu 16 listopada 2005 roku. OpenSolaris stał się również dystrybucją możliwą do zainstalowania: wersja 2008.05 ukazała się 5 maja 2008 roku jako Live CD, a wersja 2009.06 pojawiła się 1 czerwca 2009 roku wraz z obsługą architektury SPARC.
Wybór licencji nadal determinuje możliwości uruchomieniowe oprogramowania. Free Software Foundation klasyfikuje CDDL jako licencję wolnego oprogramowania, która jest niekompatybilna z licencją GPL (GNU General Public License). Jest to niekompatybilność odziedziczona po MPL 1.1. Jądro Linux korzysta z licencji GPLv2. Z tego powodu ZFS w systemie Linux jest budowany jako moduł jądra poza drzewem źródeł jądra, zamiast zostać z nim scalony, i dlatego nie znajduje się w głównym nurcie (mainline) jądra. Decyzja o publikacji na jakiejkolwiek otwartej licencji jest kluczowa dla dalszej części tej historii, a historia licencjonowania open source wyjaśnia, dlaczego firma w ogóle podjęła taki krok.
Co wydarzyło się po przejęciu Sun przez Oracle
Oracle ogłosiło 20 kwietnia 2009 roku zamiar przejęcia Sun za kwotę 7,4 miliarda USD, czyli 5,6 miliarda USD netto po uwzględnieniu gotówki i zadłużenia Sun. Transakcję sfinalizowano 27 stycznia 2010 roku.
13 sierpnia 2010 roku wewnątrz firmy rozpowszechniono, a następnie ujawniono, notatkę autorstwa Mike'a Shapiro, Billa Nesheima i Chrisa Armesa. Dokument określał nową politykę wprost: „Nie będziemy już udostępniać kodu źródłowego całego systemu operacyjnego Solaris w czasie rzeczywistym w trakcie jego tworzenia, w trybie codziennym”. Wykluczono dalsze kompilacje społecznościowe: „Nie będziemy wydawać żadnych innych dystrybucji binarnych, takich jak nocne lub dwutygodniowe kompilacje plików binarnych Solaris, ani dystrybucji OpenSolaris 2010.05 lub nowszych”. Wydania open source miały odtąd następować po wydaniach komercyjnych: „Będziemy dystrybuować aktualizacje kodu na licencjach CDDL lub innych licencjach open source po pełnych wydaniach naszego korporacyjnego systemu operacyjnego Solaris”.
23 sierpnia 2010 roku Rada Zarządzająca OpenSolaris przyjęła rezolucję odnotowującą, że Oracle nie wyznaczyło łącznika z radą i ogłosiło zakończenie partnerstwa w zakresie rozwoju w dniu 13 sierpnia. Rada przegłosowała zwrot kontroli nad społecznością na rzecz Oracle zgodnie z pierwotnym statutem opracowanym przez Sun, co doprowadziło do rozwiązania rady.
Oracle Solaris 11 został wydany 9 listopada 2011 roku. 2 września 2017 roku Oracle zwolniło większość zespołów pracujących nad Solarisem. Oracle Solaris 11.4 został wydany 28 sierpnia 2018 roku i w lipcu 2026 roku nadal pozostawał aktualnym wydaniem, otrzymującym aktualizacje z repozytorium wsparcia. Gdy Oracle ostatnio zrewidowało politykę wsparcia technicznego dla wersji 11.4 w styczniu 2024 roku, utrzymano Premier Support do 2031 roku oraz przedłużono Extended Support z 2034 do 2037 roku. Solaris jest zatem wspieranym produktem komercyjnym z opublikowaną datą zakończenia wsparcia, opartym na wydaniu, które pozostaje aktualne od 2018 roku.
Początki illumos i przyczyny określenia go mianem forka
3 sierpnia 2010 roku, dziesięć dni przed wyciekiem notatki, Garrett D'Amore ogłosił powstanie illumos. Nazwa łączy łacińskie illum (światło) z OS (system operacyjny); projekt zapisuje ją jako jedno słowo z wielką literą tylko na początku.
Celem był OS/Net, powszechnie zapisywany jako ON: konsolidacja zawierająca jądro oraz podstawowe narzędzia systemowe. OpenSolaris nigdy nie był w pełni otwarty. Wiele komponentów było dostarczanych jako zamknięte pliki binarne, których nikt spoza Sun nie mógł skompilować, w tym kod internacjonalizacji wewnątrz biblioteki C (libc_i18n), menedżer blokad NFS, framework kryptograficzny, sterowniki takie jak mpt dla adapterów magistrali hosta LSI oraz część kodu platformy SPARC. Zastąpienie tych elementów było pierwszym zadaniem projektu, ponieważ systemu operacyjnego, którego nie można zbudować ze źródeł, nie da się utrzymać.
D'Amore zachowywał ostrożność w używaniu słowa fork. „Obecnie nie jesteśmy forkiem ze względu na sposób, w jaki śledzimy OS/Net” – napisał, opisując repozytorium typu downstream, które miało podążać za drzewem Oracle i umożliwiać przesyłanie zmian z powrotem do upstreamu. Dziesięć dni później upstream przestał publikować kod. illumos stał się forkiem automatycznie, ponieważ nie było już czego śledzić. Główne drzewo, illumos-gate, przekroczyło liczbę 23 000 commitów w październiku 2026 roku i nadal jest rozwijane.
Które dystrybucje wywodzą się z illumos
illumos nie jest systemem przeznaczonym do bezpośredniej instalacji. Stanowi on rdzeń, na bazie którego dystrybucje budują gotowe do użycia systemy. Poniżej wymieniono te, które są nadal rozwijane.
- OpenIndiana została oficjalnie uruchomiona 14 września 2010 roku w JISC Centre w Londynie i jest najbliższym potomkiem dawnej dystrybucji OpenSolaris przeznaczonej na komputery stacjonarne i serwery. Jest to wydanie typu rolling release o nazwie Hipster, a snapshot 2026.04 został opublikowany 5 maja 2026 roku.
- OmniOS to dystrybucja serwerowa, obecnie utrzymywana przez społeczność jako OmniOS CE po tym, jak pierwotny dostawca zaprzestał prac nad tym projektem.
- SmartOS to platforma hiperwizora oparta na strefach (zones). Została stworzona przez Joyent, a w kwietniu 2022 roku ogłoszono, że SmartOS oraz Triton przechodzą pod zarząd MNX Solutions, co weszło w życie 1 maja 2022 roku.
- NexentaStor wykorzystywał tę samą bazę w urządzeniach pamięci masowej (storage appliances), co stanowi komercyjną linię, z której wywodzi się illumos.
- Tribblix to niewielka dystrybucja utrzymywana przez Petera Tribble'a, opisana poniżej.
- DilOS integruje narzędzia pakietowe Debiana z jądrem illumos.
Jak wygląda instalacja systemu illumos w 2026 roku
Tribblix stanowi użyteczny przykład, ponieważ jest niewielki, posiada publiczną dokumentację i jest nadal rozwijany. Milestone 41 dla architektury x86 został opublikowany 5 sierpnia 2026 roku. Linia SPARC przeszła na Milestone 35 w dniu 23 września 2026 roku; jest to wydanie syntetyczne, które umieszcza nowsze pakiety, w tym gcc 10, na systemie operacyjnym Milestone 34. Pobierany obraz ISO dla SPARC to nadal Milestone 34. Projekt określa się jako styl retro z nowoczesnymi komponentami i zachował format pakietów SVR4 używany w Solaris, zamiast przechodzić na nowszy system pakietów.
Instalacja odbywa się z obrazu typu live. Należy uruchomić system z ISO, zalogować się jako użytkownik jack z hasłem jack, uzyskać uprawnienia root i uruchomić instalator na wybranym urządzeniu dyskowym. Oto polecenie podane w oficjalnej dokumentacji instalacyjnej projektu:
./live_install.sh -G c1t0d0Flaga -G zapisuje układ partycji EFI (extensible firmware interface), natomiast -b wybiera starszy układ MBR (master boot record). Nazwy dysków podążają za konwencją Solaris cXtYdZ, a nie /dev/sda, co jest pierwszą rzeczą, która może wydawać się nieznana osobom przechodzącym z Linux. Zestawy oprogramowania nazywane są nakładkami (overlays) i mogą być wymienione w tym samym wierszu:
./live_install.sh -G c1t0d0 develop desktopPo instalacji narzędziem do zarządzania pakietami jest zap, które operuje na nakładkach, dzięki czemu zależności są obsługiwane automatycznie:
zap refresh
zap install-overlay develop
zap update-overlay -aSą to polecenia publikowane przez Tribblix. Działają one na sprzęcie lub hypervisorze, nad którym sprawujesz kontrolę. Nie znajdziesz ich w obrazach typu "jedno kliknięcie" w panelach sterowania VPS, a ta luka stanowi rzetelny obraz stanu wdrożeń illumos w 2026 roku.
Dlaczego ZFS i DTrace przetrwały system Solaris
ZFS opuścił system Solaris niemal natychmiast po opublikowaniu kodu źródłowego. Pawel Jakub Dawidek przeniósł go do FreeBSD, gdzie jest częścią systemu od wersji FreeBSD 7.0 z 2008 roku. Prace nad natywnym ZFS dla Linuxa rozpoczęły się w 2008 roku, a pierwsze stabilne wydanie pojawiło się w 2013 roku. W latach 2010–2013 projekt illumos utrzymywał wzorcową kopię kodu źródłowego ZFS, ponieważ drzewo Oracle zostało zamknięte, a wszystkie inne porty potrzebowały źródła do synchronizacji. To konkretna wartość forka: bez niego porty nie miałyby wspólnego przodka, z którym można by scalać zmiany.
Projekt OpenZFS ogłoszono 17 września 2013 roku w celu koordynacji tych portów, a wśród jego założycieli znalazł się Matt Ahrens, jeden z oryginalnych autorów ZFS. OpenZFS 2.0 wydano 30 listopada 2020 roku, a informacje o wydaniu jasno określają rezultat: „Projekt ZFS on Linux został przemianowany na OpenZFS! Zarówno Linux, jak i FreeBSD są teraz obsługiwane z tego samego repozytorium, co sprawia, że wszystkie funkcje OpenZFS są dostępne na obu platformach”. Wersja FreeBSD 13.0 porzuciła własną kopię wywodzącą się z illumos i przeszła na to wspólne drzewo.
Obie linie ZFS rozeszły się na poziomie zapisu na dysku. Linia otwarta zatrzymała się na wersji puli 28, ostatniej opublikowanej przez Sun, i przeszła na nazwane flagi funkcji w ramach wersji zastępczej 5000. Dzięki temu pula informuje, z jakich funkcji korzysta, zamiast polegać na pojedynczym numerze. Oracle kontynuowało zwiększanie własnych numerów wersji w zamkniętym kodzie. Puli utworzonej powyżej wersji 28 po jednej stronie nie można zaimportować po drugiej. W przypadku wyboru platformy uruchomieniowej, sposób działania OpenZFS na FreeBSD w porównaniu z Linuxem opisuje rzeczywiste różnice między tymi dwoma systemami.
DTrace przebył krótszą drogę. W FreeBSD stał się standardem w wersji 7.1 w styczniu 2009 roku, a Apple dodało go w Mac OS X 10.5 Leopard. Oracle udostępniło kod jądra DTrace na licencji GPLv2 w sierpniu 2017 roku – zmianę tę szeroko odnotowano w lutym 2018 roku, co usunęło barierę licencyjną dla Linuxa. Kod ten nigdy nie został scalony z główną linią jądra. Śledzenie w systemie Linux w praktyce opiera się na eBPF, a bpftrace zapewnia język skryptowy celowo zbliżony do języka D z DTrace.
Ten wzorzec jest ogólną lekcją, a nie tylko kwestią systemu Solaris. Firma Sun opublikowała ZFS i DTrace na licencji, która pozwoliła innym zachować kopię i kontynuować prace. Gdy firma finansująca projekt zaprzestała działań, praca trwała dalej, ponieważ kod znajdował się już w innych drzewach i rękach. Części systemu Solaris, których nigdy nie otwarto, w tym zamknięte pliki binarne, które projekt illumos musiał napisać od nowa, zniknęły wraz z firmą. To właśnie zmienia udostępnienie kodu źródłowego i jest to ten sam mechanizm, który stoi za sposobem, w jaki dystrybucje Linuxa wywodzą się jedna od drugiej.
Czy należy uruchamiać illumos na VPS?
Dla większości użytkowników odpowiedź brzmi: nie, a powyższe treści nie stanowią rekomendacji do podjęcia takiej próby. System illumos wspiera ograniczony zakres sprzętu, ponieważ zestaw jego sterowników bazuje na rozwiązaniach wspieranych przez Sun oraz tych, które zostały opracowane przez niewielką społeczność. Dostawcy VPS udostępniają obrazy systemów Linux i BSD, więc instalacja illumos zazwyczaj wymaga przesłania własnego pliku ISO do dostawcy zezwalającego na obrazy niestandardowe, a następnie sprawdzenia, czy wirtualny dysk i urządzenia sieciowe zostaną rozpoznane. Oprogramowanie firm trzecich pochodzi z zestawów pakietów danej dystrybucji lub z własnej kompilacji.
Istnieją uzasadnione powody, by go uruchamiać: utrzymanie obciążenia typu Solaris, obsługa istniejącego wdrożenia zones lub chęć analizy kodu źródłowego. Wymienione powyżej dystrybucje są utrzymywane, a ich listy mailingowe służą pomocą w razie pytań. Jest to jednak coś innego niż wybór domyślny dla nowego serwera.
Jeśli celem jest ZFS, nie ma potrzeby korzystania z illumos. Należy uruchomić OpenZFS na systemie Linux lub FreeBSD, gdzie jest on spakietowany, udokumentowany i szeroko stosowany. Jeśli rozważasz wybór systemu z rodziny BSD dla serwera, praktyczne porównanie systemów Linux i FreeBSD jako platform serwerowych omawia różnice w codziennej eksploatacji. illumos stanowi źródło tych narzędzi, a zrozumienie ich pochodzenia wyjaśnia wiele aspektów ich działania, począwszy od tego, dlaczego zpool oraz zfs nie przypominają reszty stosu pamięci masowej w systemie Linux.
FAQ
Czy illumos to to samo co OpenSolaris?
Nie. OpenSolaris był projektem i dystrybucją firmy Sun, przejętą przez Oracle, która zakończyła jego rozwój w 2010 roku. illumos to odrębny projekt ogłoszony 3 sierpnia 2010 roku, zbudowany na bazie ostatniego opublikowanego kodu źródłowego jądra OpenSolaris, czyli konsolidacji OS/Net. Jego pierwszym zadaniem było zastąpienie zamkniętych komponentów binarnych, które zawierał OpenSolaris, w tym libc_i18n, menedżera blokad NFS, frameworka kryptograficznego oraz kilku sterowników. Żaden kod illumos nie pochodzi od Oracle po 2010 roku, ponieważ Oracle przestało go publikować.
Dlaczego Linux nie może zawierać ZFS w swoim jądrze?
Licencje są ze sobą niezgodne. ZFS korzysta z licencji CDDL, którą Free Software Foundation klasyfikuje jako licencję wolnego oprogramowania niekompatybilną z GPL; jest to niezgodność odziedziczona przez CDDL z MPL 1.1. Jądro Linux korzysta z licencji GPLv2. W praktyce oznacza to, że OpenZFS na systemie Linux jest dostarczany jako moduł jądra spoza drzewa źródeł (out of tree), zazwyczaj budowany przez DKMS dla każdego instalowanego jądra lub jako gotowy pakiet modułu. Działa to poprawnie, ale moduł musi być przebudowywany przy każdej aktualizacji jądra, więc może wystąpić kilkudniowe lub kilkutygodniowe opóźnienie w stosunku do wydania nowego jądra.
Czy Oracle Solaris jest nadal wspierany?
Tak. Oracle Solaris 11.4 został wydany 28 sierpnia 2018 roku i w lipcu 2026 roku nadal pozostawał aktualnym wydaniem, otrzymującym aktualizacje z repozytorium wsparcia. Polityka wsparcia technicznego Oracle, ostatnio zaktualizowana dla wersji 11.4 w styczniu 2024 roku, przewiduje wsparcie Premier Support do 2031 roku oraz Extended Support do 2037 roku. Oracle zwolniło większość zespołów pracujących nad Solarisem 2 września 2017 roku, a wersja 11.4 od tego czasu otrzymuje jedynie aktualizacje z repozytorium, zamiast nowej wersji głównej. Pełny kod źródłowy nie jest publikowany w taki sposób, w jaki robił to OpenSolaris.
Czy mogę zainstalować illumos na VPS?
Czasami, ale rzadko przy użyciu obrazów dostarczanych przez dostawcę. Zazwyczaj wymagany jest dostawca, który pozwala na podpięcie własnego pliku ISO i korzystanie z konsoli, a następnie należy sprawdzić, czy sterowniki wirtualnych dysków i sieci w drzewie illumos rozpoznają urządzenia hypervisora. OpenIndiana i Tribblix to typowe punkty wyjścia dla instalacji ogólnego przeznaczenia, natomiast SmartOS został zaprojektowany jako host hypervisora, a nie jako system gościa. Przed dokonaniem płatności należy przeprowadzić testy na lokalnej maszynie wirtualnej.
Czy warto uczyć się DTrace, jeśli używam tylko systemu Linux?
Model pracy jest przenośny, mimo że samo narzędzie w większości przypadków nie jest. Oracle wydało kod jądra DTrace na licencji GPLv2 w sierpniu 2017 roku i utrzymuje port dla Oracle Linux, jednak nigdy nie został on włączony do głównej linii jądra (mainline), a śledzenie (tracing) w systemie Linux opiera się w praktyce na eBPF. Język, którego używa bpftrace, został zaprojektowany tak, aby przypominał język D z DTrace, więc sondy (probes), predykaty i agregacje oznaczają to samo w obu przypadkach. Nauka sposobu myślenia charakterystycznego dla DTrace sprawia, że skrypty bpftrace są zrozumiałe przy pierwszym podejściu.