SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor

Solaris a illumos: historia powstania forka systemu

Poznaj historię przejścia z Solaris na illumos po zamknięciu kodu przez Oracle. Dowiedz się, dlaczego technologie ZFS oraz DTrace przetrwały dzięki tej społecznościowej inicjatywie.

Czym są Solaris i illumos

Solaris oraz illumos to dwie gałęzie tego samego drzewa źródłowego Unix. Firma Sun Microsystems stworzyła system Solaris i w 2005 roku opublikowała większość jego kodu źródłowego. Oracle przejęło Sun w 2010 roku i zaprzestało publikacji kodu, dlatego programiści spoza Oracle kontynuowali rozwój otwartego oprogramowania pod nową nazwą: illumos. Sam system operacyjny w 2026 roku jest rozwiązaniem niszowym. Warstwa pamięci masowej oraz wbudowane w niego narzędzie do śledzenia procesów takie nie są i właśnie dlatego warto poznać tę historię.

Używając ZFS na systemach Linux lub FreeBSD, korzystasz z kodu napisanego w firmie Sun dla systemu Solaris, który przetrwał samą firmę, linię produktów oraz spory licencyjne. Ten 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. Jej 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. Uruchomienie uname -a na maszynie z systemem illumos w 2026 roku spowoduje wyświetlenie jako pierwszego słowa 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 z dorobku 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 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 The Wall Street Journal's 2006 Technology Innovation Awards 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 i 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 nienaruszonym stanie, 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ł dostarczony 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 są obecnie wykorzystywane 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. Licencja CDDL bazuje na wersji 1.1 licencji MPL (Mozilla Public License). Jej mechanizm copyleft działa na poziomie pojedynczego pliku: plik źródłowy na licencji CDDL musi pozostać na tej licencji, jednak skompilowany 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 samego 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 rozwiązanie to trafiło w buildzie 27, 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 zadebiutowała 1 czerwca 2009 roku, oferując wsparcie dla architektury SPARC.

Wybór licencji determinuje możliwości uruchomieniowe w dniu dzisiejszym. Free Software Foundation klasyfikuje CDDL jako licencję wolnego oprogramowania, która jest niekompatybilna z licencją GPL (GNU General Public License), co stanowi dziedzictwo 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 scalonym, i dlatego nie znajduje się w głównym nurcie jądra (mainline). Decyzja o publikacji na dowolnej otwartej licencji jest najważniejszym punktem 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

Firma Oracle ogłosiła 20 kwietnia 2009 roku zamiar przejęcia Sun za kwotę 7,4 miliarda USD, co po odliczeniu gotówki i długu Sun wyniosło 5,6 miliarda USD netto. Transakcja została sfinalizowana 27 stycznia 2010 roku.

13 sierpnia 2010 roku wewnątrz Oracle rozpowszechniono, a następnie ujawniono notatkę autorstwa Mike'a Shapiro, Billa Nesheima i Chrisa Armesa. Dokument wprost określał nową politykę: „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 binariów Solarisa, ani dystrybucji OpenSolaris 2010.05 lub nowszych”. Wydania open source miały odtąd następować po wydaniu produktów komercyjnych: „Będziemy udostępniać aktualizacje zatwierdzonego 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 przekazanie kontroli nad społecznością z powrotem do 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 pozostaje aktualnym wydaniem. Zgodnie z polityką wsparcia technicznego Oracle, Premier Support dla wersji 11.4 obowiązuje do listopada 2031 roku, a Extended Support do listopada 2037 roku. Solaris jest zatem wspieranym produktem komercyjnym z określoną 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 słowo illum (światło) z OS (system operacyjny), a projekt zapisuje ją jako jedno słowo z wielką literą tylko na początku.

Celem był OS/Net, zazwyczaj 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ę utrzymywać.

D'Amore zachował ostrożność w używaniu słowa fork. „Dzisiaj 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ć zmiany. illumos stał się forkiem z konieczności, ponieważ nie było już czego śledzić. Główne drzewo, illumos-gate, przekroczyło 23000 commitów w sierpniu 2026 roku i nadal jest rozwijane.

Które dystrybucje wywodzą się z illumos

illumos nie jest systemem przeznaczonym do bezpośredniej instalacji. Stanowi on główne drzewo kodu, na bazie którego tworzone są gotowe dystrybucje. Poniżej wymieniono te, które są obecnie wydawane.

  • OpenIndiana została oficjalnie uruchomiona 14 września 2010 roku w JISC Centre w Londynie i jest najbliższym potomkiem dawnej dystrybucji OpenSolaris w wersji desktopowej i serwerowej. Jest to system 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 zakończył prace nad projektem.
  • SmartOS to platforma hypervisora oparta na technologii 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ę do budowy urządzeń 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 stale rozwijany. Milestone 41 dla architektury x86 został wydany 5 sierpnia 2026 roku, a linia SPARC osiągnęła Milestone 34 w dniu 21 kwietnia 2026 roku. Projekt określa się jako system w stylu retro z nowoczesnymi komponentami i zachował format pakietów SVR4 używany w Solaris, zamiast przechodzić na nowszy system zarządzania pakietami.

Instalacja odbywa się z obrazu typu live. Należy uruchomić system z pliku 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 c1t0d0

Flaga -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 systemu Linux. Zestawy oprogramowania nazywane są nakładkami (overlays) i można je wskazać w tym samym wierszu:

./live_install.sh -G c1t0d0 develop desktop

Po instalacji narzędziem do obsługi pakietów 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 -a

Są 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 rozbieżność stanowi uczciwy obraz stanu wdrożeń illumos w 2026 roku.

Dlaczego ZFS i DTrace przetrwały Solaris

ZFS opuścił Solaris niemal natychmiast po publikacji kodu źródłowego. Pawel Jakub Dawidek przeniósł go na FreeBSD, gdzie od 2008 roku i wersji FreeBSD 7.0 stanowi część systemu. Prace nad natywnym ZFS dla Linux rozpoczęły się w 2008 roku, a pierwsze stabilne wydanie ukazało się w 2013 roku. W latach 2010–2013 projekt illumos utrzymywał referencyjną kopię źródeł ZFS, ponieważ drzewo Oracle zostało zamknięte, a wszystkie inne porty potrzebowały wspólnego źródła. 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 udostępnia wszystkie funkcje OpenZFS na obu platformach”. Wersja FreeBSD 13.0 porzuciła własną kopię wywodzącą się z illumos i przeszła na to współdzielone 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 pod numerem zastępczym 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. Jeśli wybierasz środowisko uruchomieniowe, sposób działania OpenZFS na FreeBSD w porównaniu z Linux omawia rzeczywiste różnice między tymi systemami.

DTrace przebył krótszą drogę. W styczniu 2009 roku był już standardem we FreeBSD 7.1, 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 – zmiana ta została szerzej zauważona w lutym 2018 roku i usunęła barierę licencyjną dla Linux. Kod nigdy nie został scalony z główną linią jądra. Śledzenie w Linux opiera się w praktyce na eBPF, a bpftrace dostarcza język skryptowy celowo zbliżony do języka D z DTrace.

Ten wzorzec ma znaczenie ogólne, nie tylko w kontekście Solaris. Sun opublikowało 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 Solaris, które nigdy nie zostały otwarte, w tym zamknięte pliki binarne, które illumos musiał napisać od nowa, zniknęły wraz z firmą. To właśnie zmienia otwarcie źródeł i jest to ten sam mechanizm, który stoi za sposobem, w jaki dystrybucje Linux wywodzą się jedna od drugiej.

Czy warto uruchamiać illumos na VPS?

Dla większości użytkowników odpowiedź brzmi: nie, a powyższe treści nie stanowią rekomendacji do takich działań. System illumos wspiera ograniczony zakres sprzętu, ponieważ jego zestaw sterowników bazuje na rozwiązaniach wspieranych przez Sun oraz tych, które zostały stworzone 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 własnych repozytoriów dystrybucji lub musi zostać skompilowane samodzielnie.

Istnieją uzasadnione powody, by korzystać z tego systemu: utrzymanie działającego obciążenia typu Solaris, obsługa istniejącego wdrożenia typu 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ślnego systemu dla nowego serwera.

Jeśli powodem zainteresowania jest ZFS, nie ma potrzeby instalowania illumos. Wystarczy uruchomić OpenZFS na systemie Linux lub FreeBSD, gdzie jest on spakietowany, udokumentowany i powszechnie 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. System 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 różnią się od 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 szeregu 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 GPLv2. W praktyce oznacza to, że OpenZFS na systemie Linux jest dostarczany jako moduł jądra spoza głównego drzewa (out of tree), zazwyczaj budowany przez DKMS dla każdego instalowanego jądra lub jako gotowy pakiet modułów. Rozwiązanie to działa poprawnie, jednak moduł musi być przebudowywany przy każdej aktualizacji jądra, co może powodować kilkudniowe lub kilkutygodniowe opóźnienia względem wydań nowych wersji jądra.

Czy Oracle Solaris jest nadal wspierany?

Tak. Oracle Solaris 11.4 został wydany 28 sierpnia 2018 roku i jest obecnie używaną wersją. Zgodnie z polityką wsparcia Oracle, Premier Support obowiązuje do listopada 2031 roku, a Extended Support do listopada 2037 roku. Oracle zwolniło większość zespołów pracujących nad Solarisem 2 września 2017 roku, a od tego czasu wersja 11.4 otrzymuje jedynie aktualizacje z repozytorium wsparcia, zamiast nowych wydań głównych. 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, choć rzadko przy użyciu obrazów z listy dostawcy. Zazwyczaj wymagany jest dostawca umożliwiający podpięcie własnego pliku ISO i korzystanie z konsoli, a następnie sprawdzenie, czy wirtualny dysk i sterowniki sieciowe 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 udostępnił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łównego nurtu 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 już przy pierwszym kontakcie.

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