Solaris та illumos: як живе fork Solaris
Solaris відкрив ZFS і DTrace, але після придбання Sun Oracle закрила код. Дізнайтеся, як fork illumos зберіг ці технології доступними сьогодні.
Що таке Solaris та illumos
Solaris та illumos — це дві гілки одного дерева вихідного коду Unix. Sun Microsystems розробила Solaris і у 2005 році опублікувала більшу частину його вихідного коду. У 2010 році Oracle придбала Sun і припинила публікувати цей код. Тому розробники за межами Oracle продовжили розвивати відкритий код під новою назвою: illumos. У 2026 році сама операційна система є нішевою. Але рівень зберігання даних і вбудований у нього інструмент трасування такими не є. Саме тому ця історія варта вашої уваги.
Якщо ви використовуєте ZFS у Linux або FreeBSD, то працюєте з кодом, написаним у Sun для Solaris. Цей код пережив саму компанію, лінійку продуктів і суперечку щодо ліцензії. У цій публікації описано, як це сталося, із перевіреними датами.
Звідки походить Solaris: BSD, System V і SVR4
Sun Microsystems заснували 24 February 1982 року Scott McNealy, Andy Bechtolsheim, Vinod Khosla і Bill Joy. Її операційна система SunOS походила від BSD (Berkeley Software Distribution) — університетської гілки Unix, над якою Bill Joy працював до заснування Sun. Іншою гілкою Unix була комерційна система AT&T System V. Саме ці дві гілки утворюють розгалуження, описане в дереві сімейства Unix, яке завершується Linux, а Sun протягом десяти років залишалася на боці BSD.
У 1987 Sun і AT&T оголосили спільний проєкт з об’єднання BSD, System V і Xenix в один випуск: UNIX System V Release 4, який зазвичай позначають як SVR4. 4 September 1991 року Sun оголосила, що SunOS 4 буде замінено системою на основі SVR4 під новою маркетинговою назвою Solaris 2. Solaris 2.0 випустили в June 1992 року лише для апаратного забезпечення SPARC. Sun змінила бік у розгалуженні Unix, і клієнтам довелося портувати своє програмне забезпечення.
Стара назва не зникла. Ядро зберегло нумерацію SunOS: Solaris 2.6 працювала на SunOS 5.6, а Oracle Solaris 11.4 досі повідомляє про себе як SunOS 5.11. Виконайте uname -a на машині з illumos у 2026 році — першим надрукованим словом усе ще буде SunOS, оскільки illumos успадкувала цю назву разом із кодом.
Що представила Solaris 10 у 2005 році
Solaris 10 випущено 31 January 2005. У цьому контексті це важливо, оскільки все, що пережило компанію, увійшло до цього випуску або з’явилося в одному з його оновлень.
DTrace написали в Sun Bryan Cantrill, Mike Shapiro та Adam Leventhal. Вперше він став доступним у November 2003. DTrace інструментує запущене ядро та запущені процеси користувача без повторної компіляції та перезапуску процесу, за яким ви спостерігаєте. Неактивований probe не створює накладних витрат, оскільки інструментування додається лише тоді, коли цього вимагає скрипт. Саме тому адміністратори погоджувалися використовувати DTrace на production-серверах. DTrace отримав головну нагороду The Wall Street Journal's 2006 Technology Innovation Awards і нагороду USENIX STUG (Software Tools User Group) у 2008 році.
ZFS спроєктували в Sun Jeff Bonwick, Bill Moore та Matthew Ahrens. Про нього оголосили 14 September 2004. ZFS об’єднав volume manager і filesystem в один рівень. Саме це дає змогу перевіряти checksum кожного блока під час читання та відновлювати пошкоджений блок із резервної копії. Запис виконується за принципом copy on write: блок ніколи не перезаписується на місці. Тому збій посеред операції запису залишає старі дані непошкодженими, а не створює частково записану файлову систему. Створення snapshot майже не потребує ресурсів, оскільки snapshot — це просто набір блоків, яких не торкнулися наступні операції запису. До початкового випуску Solaris 10 ZFS не входив. Він з’явився в оновленні Solaris 10 6/06 у June 2006.
Zones були третьою складовою. Zone надає одному ядру кілька ізольованих просторів користувача. Кожен із них має власну root filesystem, таблицю процесів і мережеву конфігурацію. Zones з’явилися в beta-збірці Solaris 10 у February 2004 і увійшли до повного випуску. FreeBSD раніше прийшла до тієї самої ідеї іншим шляхом, а порівняння між jail і Docker containers досі є найзрозумілішим способом побачити, що насправді означає ізоляція на рівні ядра. Zones і сьогодні використовуються в illumos та є основою принаймні одного дистрибутива нижче.
Чому Sun відкрила вихідний код Solaris
Sun подала CDDL (Common Development and Distribution License) до OSI (Open Source Initiative) 1 грудня 2004 року, а OSI схвалила її 14 січня 2005 року. CDDL базується на версії 1.1 MPL (Mozilla Public License). Її copyleft діє на рівні окремого файлу: файл із вихідним кодом за CDDL має залишатися під CDDL, але бінарний файл, зібраний із нього, можна поєднувати з кодом на інших умовах.
Першим вийшов DTrace. Його вихідний код опублікували за CDDL 25 січня 2005 року на щойно запущеному сайті opensolaris.org — за шість днів до релізу самої Solaris 10. Основний обсяг системного коду Solaris опублікували 14 червня 2005 року. ZFS інтегрували в основну гілку розробки Solaris 31 жовтня 2005 року, а розробники OpenSolaris отримали його у build 27 16 листопада 2005 року. OpenSolaris також стала дистрибутивом, який можна було встановити: версія 2008.05 вийшла 5 травня 2008 року як live CD, а версія 2009.06 — 1 червня 2009 року з підтримкою SPARC.
Вибір ліцензії й досі визначає, що можна запускати сьогодні. Free Software Foundation класифікує CDDL як ліцензію вільного програмного забезпечення, несумісну з GPL (GNU General Public License); ця несумісність успадкована від MPL 1.1. Ядро Linux поширюється за GPLv2. Тому ZFS on Linux збирається як kernel module поза деревом вихідного коду ядра, а не інтегрується в нього, і тому його немає в mainline kernel. Рішення опублікувати код за будь-якою відкритою ліцензією має найбільше значення для подальшої частини цієї історії, а історія ліцензування open source пояснює, чому компанія взагалі могла на це піти.
Що сталося після придбання Sun компанією Oracle
20 April 2009 Oracle оголосила про придбання Sun за US$7.4 billion, або за US$5.6 billion з урахуванням грошових коштів і боргу Sun. Угоду завершили 27 January 2010.
13 August 2010 внутрішню службову записку Oracle, написану Mike Shapiro, Bill Nesheim і Chris Armes, поширили всередині компанії, після чого її зміст став відомим за межами компанії. У ній безпосередньо викладали нову політику: "We will no longer distribute source code for the entirety of the Solaris operating system in real-time while it is developed, on a nightly basis." Вона виключала подальші community builds: "We will not release any other binary distributions, such as nightly or bi-weekly builds of Solaris binaries, or an OpenSolaris 2010.05 or later distribution." Випуски open source відтепер мали виходити після випуску готових продуктів: "We will distribute updates to approved CDDL or other open source-licensed code following full releases of our enterprise Solaris operating system."
23 August 2010 OpenSolaris Governing Board ухвалила резолюцію, у якій зафіксувала, що Oracle не призначила liaison до board і 13 August оголосила про припинення партнерства з розробки. Board проголосувала за повернення контролю над спільнотою Oracle відповідно до charter, який спочатку підготувала Sun. Це рішення розпускало board.
Oracle Solaris 11 випустили 9 November 2011. 2 September 2017 Oracle звільнила більшість працівників Solaris teams. Oracle Solaris 11.4 випустили 28 August 2018. У July 2026 це все ще був поточний release, для якого публікували оновлення support repository. Коли Oracle востаннє переглядала політику lifetime support для 11.4, у January 2024, вона зберегла Premier Support до 2031 року та продовжила Extended Support з 2034 до 2037 року. Отже, Solaris є комерційним продуктом із підтримкою та опублікованою кінцевою датою підтримки. Поточний release залишається незмінним із 2018 року.
Як почався illumos і чому його називають форком
3 August 2010 року, за десять днів до витоку меморандуму, Garrett D'Amore оголосив про illumos. Назва поєднує illum — латинське слово «світло» — і OS, скорочення від operating system. У назві проєкту це одне слово, у якому лише перша літера велика.
Метою був OS/Net, який зазвичай записують як ON: консолідація, що містить ядро та основні системні утиліти. OpenSolaris ніколи не був повністю відкритим. Деякі компоненти постачалися як закриті бінарні файли, які ніхто за межами Sun не міг зібрати повторно. До них належали код інтернаціоналізації в бібліотеці C (libc_i18n), менеджер блокувань NFS, криптографічна платформа, драйвери на кшталт драйвера mpt для host bus adapter LSI, а також частина коду для платформ SPARC. Першим завданням проєкту була їхня заміна. Операційну систему, яку неможливо зібрати з вихідного коду, неможливо належно підтримувати.
D'Amore обережно використовував слово fork. «Сьогодні ми не є форком через спосіб, у який відстежуємо OS/Net», — написав він. Він описував downstream-репозиторій, який мав стежити за деревом Oracle і передавати зміни назад до upstream. Через десять днів upstream припинив публікацію. illumos став форком, оскільки відстежувати більше не було чого. Станом на October 2026 основне дерево illumos-gate містить понад 23,000 комітів і досі приймає нові.
Які дистрибутиви походять від illumos
illumos не встановлюють як окрему систему. Це основне дерево коду, на базі якого дистрибутиви створюють придатну до використання систему. Нижче наведено дистрибутиви, які досі випускаються.
- OpenIndiana офіційно запустили 14 September 2010 у JISC Centre в London. Це найближчий нащадок старого настільного та серверного дистрибутива OpenSolaris. Це rolling release під назвою Hipster. Знімок 2026.04 опубліковано 5 May 2026.
- OmniOS — серверний дистрибутив, який тепер підтримує спільнота під назвою OmniOS CE, після того як його початковий постачальник припинив роботу над ним.
- SmartOS — платформа hypervisor, побудована на zones. Її створила Joyent. У April 2022 компанія оголосила, що SmartOS і Triton переходять до MNX Solutions з 1 May 2022.
- NexentaStor використовував ту саму основу для storage appliances. Саме з цієї комерційної лінійки походить illumos.
- Tribblix — невеликий дистрибутив, який підтримує Peter Tribble, описаний нижче.
- DilOS додає інструменти керування пакетами Debian поверх ядра illumos.
Як сьогодні виглядає встановлення системи illumos
Tribblix є корисним прикладом, оскільки це невелика система, її документація доступна публічно, і для неї досі випускають релізи. Milestone 41 для x86 опубліковано 5 August 2026. Гілка SPARC перейшла на Milestone 35 23 September 2026. Це синтетичний реліз, який додає новіші пакети, зокрема gcc 10, поверх операційної системи Milestone 34; ISO-образ для встановлення на SPARC, який ви завантажуєте, усе ще має версію Milestone 34. Проєкт описує себе як retro style із сучасними компонентами. Він зберіг формат пакетів SVR4, який використовувала Solaris, замість переходу на новішу систему пакетів.
Встановлення запускається з live image. Завантажте ISO, увійдіть як користувач jack із паролем jack, перейдіть до root і запустіть інсталятор для дискового пристрою. Саме цю команду наводить власна документація проєкту зі встановлення:
./live_install.sh -G c1t0d0Прапорець -G записує схему розділів EFI (extensible firmware interface), а -b натомість вибирає застарілу схему MBR (master boot record). Назви дисків відповідають угоді Solaris cXtYdZ, а не /dev/sda. Якщо ви працювали з Linux, саме це спочатку здасться незвичним. Набори програм називаються overlays. Їх можна вказати в тому самому рядку:
./live_install.sh -G c1t0d0 develop desktopПісля встановлення використовується пакетний інструмент zap. Він працює з overlays і сам опрацьовує залежності:
zap refresh
zap install-overlay develop
zap update-overlay -aЦе команди, які публікує Tribblix. Вони запускаються на обладнанні або гіпервізорі, яким ви керуєте. У панелі керування VPS ви не знайдете їх за одною кнопкою для створення image. Саме такий реальний стан розгортання illumos у 2026 році.
Чому ZFS і DTrace пережили Solaris
ZFS покинув Solaris майже одразу після публікації вихідного коду. Pawel Jakub Dawidek портував його на FreeBSD, де він є частиною системи з FreeBSD 7.0 у 2008 році. Робота над нативною версією ZFS для Linux почалася у 2008 році, а перший стабільний випуск з’явився у 2013 році. У період з 2010 до 2013 року illumos містив еталонну копію вихідного коду ZFS, оскільки дерево Oracle було закритим, а кожному іншому порту було потрібне спільне джерело для отримання змін. У цьому і полягає практична цінність форка: без нього порти не мали б спільного предка, з яким можна було б синхронізувати зміни.
Проєкт OpenZFS оголосили 17 вересня 2013 року для координації цих портів. Серед його засновників був Matt Ahrens, один із початкових авторів ZFS. OpenZFS 2.0 випустили 30 листопада 2020 року. У примітках до випуску результат описано прямо: «Проєкт ZFS on Linux перейменовано на OpenZFS! Тепер Linux і FreeBSD підтримуються з одного репозиторію, тому всі функції OpenZFS доступні на обох платформах». FreeBSD 13.0 відмовилася від власної копії, похідної від illumos, і перейшла на це спільне дерево.
Дві гілки ZFS розійшлися на рівні формату диска. Відкрита гілка зупинилася на версії пулу 28, останній версії, опублікованій Sun, а потім перейшла до іменованих feature flags під заглушкою версії 5000. Тому пул оголошує, які функції він використовує, замість одного номера версії. Oracle продовжила збільшувати власні номери версій у закритому вихідному коді. Пул, створений після версії 28 на одній стороні, не можна імпортувати на іншій. Якщо ви обираєте, де запускати ZFS, у матеріалі як OpenZFS працює у FreeBSD порівняно з Linux описано фактичні відмінності між цими двома хостами.
DTrace пройшов коротший шлях. До версії 7.1 у січні 2009 року він став стандартною частиною FreeBSD, а Apple додала його до Mac OS X 10.5 Leopard. У серпні 2017 року Oracle випустила код ядра DTrace під GPLv2. Цю зміну широко помітили в лютому 2018 року, і вона усунула ліцензійний бар’єр для Linux. До основного ядра Linux цей код так і не потрапив. На практиці трасування в Linux працює на eBPF, а bpftrace надає йому мову сценаріїв, навмисно близьку до D DTrace.
Загальний висновок стосується не лише Solaris. Sun опублікувала ZFS і DTrace за ліцензією, яка дозволяла іншим зберігати копію коду та продовжувати роботу над ним. Коли компанія, що фінансувала цю роботу, припинила її, розробка продовжилася, оскільки код уже перебував в інших деревах і в руках інших розробників. Частини Solaris, які ніколи не були відкриті, зокрема закриті бінарні компоненти, які illumos довелося переписати, зникли разом із компанією. Саме це змінює відкриття вихідного коду. Це також той самий механізм, завдяки якому дистрибутиви Linux походять один від одного.
Чи варто запускати illumos на VPS?
Для майже всіх відповідь — ні, і наведене вище не є рекомендацією спробувати. illumos підтримує вузький спектр обладнання, оскільки його набір драйверів складається з того, що підтримувала Sun, а також із драйверів, які згодом розробила невелика спільнота. VPS-провайдери публікують образи Linux і BSD, тому встановлення illumos зазвичай означає завантаження власного ISO до провайдера, який дозволяє використовувати власні образи, а потім перевірку, чи розпізнано віртуальний диск і мережеві пристрої. Стороннє програмне забезпечення надходить із власного набору пакетів дистрибутива або компілюється вашим компілятором.
Є реальні причини запускати illumos: робоче навантаження Solaris, яке потрібно зберегти, уже наявне розгортання zones або інтерес до читання вихідного коду. Перелічені вище дистрибутиви підтримуються, а їхні списки розсилки відповідають на запитання. Це не те саме, що вибрати illumos за замовчуванням для нового сервера.
Якщо ви прийшли сюди через ZFS, для його використання illumos не потрібен. Запускайте OpenZFS на Linux або FreeBSD, де він доступний у пакетах, має документацію та широко використовується. Якщо ви розглядаєте BSD із цього самого сімейства для сервера, практичне порівняння Linux і FreeBSD як серверних платформ описує відмінності в повсякденній експлуатації. illumos — це джерело походження цих інструментів, і знання про нього багато пояснює в їхній поведінці, починаючи з того, чому zpool і zfs зовсім не схожі на решту стека сховищ Linux.
FAQ
Чи є illumos тим самим, що й OpenSolaris?
Ні. OpenSolaris був проєктом і дистрибутивом Sun, який перейшов до Oracle, а Oracle припинила його розвиток у 2010. illumos — окремий проєкт, про який оголосили 3 August 2010. Його створено на основі останнього опублікованого вихідного коду ядра OpenSolaris — консолідації OS/Net. Першим завданням було замінити закриті бінарні компоненти, з якими постачався OpenSolaris, зокрема libc_i18n, NFS lock manager, cryptographic framework і кілька драйверів. Після 2010 код illumos не походить від Oracle, оскільки Oracle припинила його публікувати.
Чому Linux не може включити ZFS до свого ядра?
Ліцензії несумісні. ZFS поширюється за CDDL. Free Software Foundation вважає CDDL ліцензією вільного програмного забезпечення, несумісною з GPL. Цю несумісність CDDL успадкувала від MPL 1.1. Ядро Linux поширюється за GPLv2. Практичний результат полягає в тому, що OpenZFS on Linux постачається як зовнішній kernel module. Зазвичай його збирає DKMS для кожного встановленого ядра або його надає пакет із попередньо зібраним модулем. Модуль працює добре, але його потрібно перебудовувати для кожного нового ядра. Тому він може відставати від свіжого kernel release на кілька днів або тижнів.
Чи досі підтримується Oracle Solaris?
Так. Oracle Solaris 11.4 випустили 28 August 2018. У July 2026 це все ще був поточний release, який отримував оновлення support repository. Згідно з політикою Oracle щодо строку підтримки, востаннє переглянутою для 11.4 у January 2024, Premier Support діє до 2031, а Extended Support — до 2037. Oracle звільнила більшість команд Solaris 2 September 2017. Відтоді 11.4 отримує оновлення support repository, а не нову major version. Повний вихідний код не публікується так, як його публікував OpenSolaris.
Чи можна встановити illumos на VPS?
Іноді, але рідко через список образів провайдера. Зазвичай потрібен провайдер, який дозволяє підключити custom ISO і скористатися консоллю. Після цього потрібно перевірити, чи розпізнають драйвери в дереві illumos для virtual disk і мережі пристрої гіпервізора. OpenIndiana і Tribblix зазвичай використовують як відправну точку для встановлення загального призначення. SmartOS призначений для роботи як hypervisor host, а не як guest. Перед оплатою перевірте систему в локальній virtual machine.
Чи варто вивчати DTrace, якщо я використовую лише Linux?
Модель переноситься, хоча сам інструмент здебільшого — ні. Oracle випустила код ядра DTrace за GPLv2 у August 2017 і підтримує port для Oracle Linux. Проте його так і не об’єднали з mainline kernel. На практиці трасування в Linux працює на eBPF. Мову bpftrace спроєктували так, щоб вона була схожою на D у DTrace. Тому probes, predicates і aggregations в обох системах означають те саме. Розуміння підходу DTrace допомагає одразу читати скрипти bpftrace.