SSD Nodes Learn Hosting plans →
Посібники Matt ConnorВід Matt Connor

Solaris та illumos: як форк пережив Oracle

Sun відкрила код Solaris у 2005 році, але після придбання компанії Oracle у 2010 році припинила публікацію. Дізнайтеся, як illumos зберіг ZFS і DTrace.

Що таке 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 була комерційна System V від AT&T. Ці дві гілки утворюють поділ, описаний у дереві родини 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 не створює витрат, оскільки instrumentation додається лише тоді, коли цього потребує script. Саме тому адміністратори погоджувалися використовувати 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 кожного block під час читання та відновлювати пошкоджений block із резервної копії. Запис виконується за принципом copy on write: block ніколи не перезаписується на місці. Тому збій посеред запису зберігає старі дані, а не залишає filesystem у частково записаному стані. Snapshots майже не потребують додаткового простору, оскільки snapshot — це просто набір block, яких не торкнулися наступні записи. ZFS не ввійшов до початкового випуску Solaris 10. Він з’явився в оновленні Solaris 10 6/06 у June 2006 року.

Zones були третьою складовою. Zone надає одному kernel кілька ізольованих user space, кожен із власним root filesystem, таблицею процесів і мережевою конфігурацією. Zones з’явилися у beta build Solaris 10 у February 2004 року та увійшли до повного випуску. FreeBSD раніше прийшов до тієї самої ідеї іншим шляхом, а порівняння між jail і Docker containers і досі є найзрозумілішим способом побачити, що насправді означає ізоляція на рівні kernel. Zones досі використовуються в illumos і є основою щонайменше одного дистрибутива нижче.

Чому Sun відкрила вихідний код Solaris

Sun подала CDDL (Common Development and Distribution License) до OSI (Open Source Initiative) 1 December 2004, а OSI схвалила її 14 January 2005. CDDL базується на версії 1.1 MPL (Mozilla Public License). Її copyleft діє на рівні окремого файлу: файл вихідного коду за CDDL має залишатися під CDDL, але двійковий файл, зібраний із нього, можна поєднувати з кодом на інших умовах.

Першим вийшов DTrace. Його вихідний код опублікували за CDDL 25 January 2005 на щойно запущеному сайті opensolaris.org, за шість днів до випуску Solaris 10. Основний масив системного коду Solaris опублікували 14 June 2005. ZFS інтегрували до основної гілки розробки Solaris 31 October 2005, а розробники OpenSolaris отримали його у build 27 16 November 2005. OpenSolaris також став дистрибутивом, який можна було встановити: 2008.05 вийшов 5 May 2008 як live CD, а 2009.06 — 1 June 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 пояснює, чому компанія взагалі могла його ухвалити.

Що сталося після придбання Oracle компанії Sun

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. Згодом її текст став публічним. У записці безпосередньо викладалася нова політика: «Ми більше не поширюватимемо вихідний код усієї операційної системи Solaris у режимі реального часу під час її розроблення, на щоденній основі». Подальші збірки для спільноти також виключалися: «Ми не випускатимемо жодних інших бінарних дистрибутивів, зокрема нічних або двотижневих збірок бінарних файлів Solaris, а також дистрибутиву OpenSolaris 2010.05 чи новіших версій». Натомість випуски з відкритим кодом мали виходити після релізів готових продуктів: «Ми поширюватимемо оновлення затвердженого коду під ліцензією CDDL або іншою ліцензією на відкрите програмне забезпечення після повних релізів нашої корпоративної операційної системи Solaris».

23 August 2010 року OpenSolaris Governing Board ухвалила резолюцію, у якій зафіксувала, що Oracle не призначила представника до ради та 13 August оголосила про завершення партнерства з розроблення. Рада проголосувала за повернення контролю над спільнотою Oracle відповідно до статуту, який спочатку підготувала Sun. Це рішення розпускало раду.

Oracle Solaris 11 випустили 9 November 2011 року. 2 September 2017 року Oracle звільнила більшість команд Solaris. Oracle Solaris 11.4 випустили 28 August 2018 року, і це досі поточний реліз. Відповідно до політики довічної підтримки Oracle, Premier Support для 11.4 діє до November 2031 року, а Extended Support — до November 2037 року. Отже, Solaris є комерційним продуктом із підтримкою та опублікованою кінцевою датою підтримки; поточним залишається реліз, випущений у 2018 році.

Як почався illumos і чому його називають форком

3 August 2010, за десять днів до витоку меморандуму, Garrett D'Amore оголосив про illumos. Назва поєднує illum — латинське слово «світло» — з OS, скороченням від operating system. Проєкт пише цю назву одним словом, лише з першою великою літерою.

Метою був OS/Net, який зазвичай записують як ON: консолідація, що містить ядро та основні системні утиліти. OpenSolaris ніколи не був повністю відкритим. Деякі компоненти постачалися як закриті бінарні файли, які ніхто за межами Sun не міг зібрати повторно. До них належали код інтернаціоналізації всередині C library (libc_i18n), менеджер блокувань NFS, криптографічний framework, драйвери на зразок mpt для host bus adapter від LSI, а також частина коду для платформ SPARC. Заміна цих компонентів була першим завданням проєкту, оскільки операційну систему, яку неможливо зібрати з вихідного коду, неможливо належно супроводжувати.

D'Amore обережно використовував слово fork. «Сьогодні ми не є fork через спосіб, у який відстежуємо OS/Net», — написав він, описуючи downstream-репозиторій, який мав стежити за деревом Oracle і міг передавати зміни upstream. Через десять днів upstream припинив публікувати зміни. illumos автоматично став fork, оскільки більше не залишилося нічого, за чим можна було стежити. Станом на August 2026 основне дерево illumos-gate містить понад 23,000 комітів і досі приймає нові.

Які дистрибутиви походять від illumos

illumos — це не те, що встановлюють. Це основне дерево коду, на базі якого дистрибутиви створюють придатну до використання систему. Нижче наведено дистрибутиви, які досі випускаються.

  • OpenIndiana офіційно запустили 14 September 2010 у JISC Centre в London. Це найближчий нащадок старого настільного та серверного дистрибутива OpenSolaris. Це rolling release під назвою Hipster. Snapshot 2026.04 опубліковано 5 May 2026.
  • OmniOS — серверний дистрибутив, який тепер підтримує спільнота під назвою OmniOS CE після того, як його початковий постачальник припинив роботу над ним.
  • SmartOS — платформа гіпервізора, побудована на 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 34 21 April 2026. Проєкт описує себе як retro style із сучасними компонентами. Він зберіг формат пакетів SVR4, який використовувала Solaris, замість переходу на новішу систему пакетів.

Встановлення запускається з live image. Ви завантажуєте ISO, входите як користувач jack із паролем jack, переходите до root і запускаєте installer для дискового пристрою. Власна документація проєкту з встановлення наводить таку команду:

./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. Вони запускаються на обладнанні або в hypervisor, яким ви керуєте. У панелі керування VPS ви не знайдете їх за кнопкою для розгортання готового образу. У 2026 році цей розрив є реальним станом розгортання illumos.

Чому ZFS і DTrace пережили Solaris

ZFS залишила Solaris майже одразу після публікації вихідного коду. Pawel Jakub Dawidek портував її на FreeBSD, де вона входить до складу системи з FreeBSD 7.0 у 2008 році. Робота над нативною ZFS для Linux розпочалася у 2008 році, а перший стабільний реліз з’явився у 2013 році. У період з 2010 до 2013 року illumos зберігала еталонну копію вихідного коду ZFS, оскільки дерево Oracle було закритим, а кожному іншому порту було потрібне спільне джерело для синхронізації. У цьому полягає практична цінність форка: без нього порти не мали б спільного предка, з яким можна було б їх об’єднувати.

Проєкт OpenZFS оголосили 17 September 2013 року для координації цих портів. Серед його засновників був Matt Ahrens, один із початкових авторів ZFS. OpenZFS 2.0 випустили 30 November 2020 року. У примітках до цього релізу результат сформульовано прямо: "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 відмовилася від власної копії, похідної від illumos, і перейшла на це спільне дерево.

Дві лінійки ZFS розійшлися на рівні формату диска. Відкрита лінійка зупинилася на версії пулу 28, останній версії, опублікованій Sun, і перейшла до іменованих прапорців функцій із версією-заповнювачем 5000. Тому пул оголошує, які функції він використовує, замість одного номера версії. Oracle продовжила збільшувати власні номери версій у закритому вихідному коді. Пул, створений після версії 28 в одній лінійці, не можна імпортувати в іншій. Якщо ви обираєте платформу для запуску, у матеріалі як OpenZFS працює у FreeBSD порівняно з Linux описано фактичні відмінності між цими двома хостами.

DTrace пройшла коротший шлях. До версії 7.1 у January 2009 року вона вже була стандартною для FreeBSD, а Apple додала її до Mac OS X 10.5 Leopard. У August 2017 року Oracle випустила код ядра DTrace за ліцензією GPLv2. Цю зміну широко помітили у February 2018 року, і вона усунула ліцензійний бар’єр для Linux. До основного дерева ядра DTrace так і не об’єднали. На практиці трасування в Linux працює на основі eBPF, а bpftrace надає йому мову сценаріїв, навмисно подібну до D DTrace.

Загальний висновок полягає не лише в історії Solaris. Sun опублікувала ZFS і DTrace за ліцензією, яка дозволяла іншим зберігати копії та продовжувати роботу над ними. Коли компанія, що фінансувала розробку, припинила роботу, розробка продовжилася, оскільки код уже перебував в інших деревах і в руках інших розробників. Компоненти Solaris, які так і не відкрили, зокрема закриті бінарні файли, які illumos довелося переписати, зникли разом із компанією. Саме це змінює відкриття вихідного коду. Цей самий механізм лежить в основі того, як дистрибутиви Linux походять один від одного.

Чи варто запускати illumos на VPS?

Для майже всіх відповідь — ні, і наведене вище не є рекомендацією спробувати. illumos підтримує вузький спектр обладнання, оскільки його набір драйверів охоплює те, що підтримувала Sun, а також те, що відтоді розробила невелика спільнота. VPS-провайдери публікують образи Linux і BSD, тому встановлення illumos зазвичай означає завантаження власного ISO до провайдера, який дозволяє користувацькі образи, а потім перевірку, чи розпізнано віртуальний диск і мережеві пристрої. Стороннє програмне забезпечення надходить із власного набору пакетів дистрибутива або компілюється власним компілятором.

Є вагомі причини запускати його: робоче навантаження 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, криптографічну інфраструктуру та кілька драйверів. Після 2010 код illumos не містить коду від Oracle, оскільки Oracle припинила його публікувати.

Чому Linux не може включити ZFS до свого ядра?

Ліцензії несумісні. ZFS поширюється за CDDL. Free Software Foundation вважає її ліцензією вільного програмного забезпечення, несумісною з GPL. Цю несумісність CDDL успадкувала від MPL 1.1. Ядро Linux поширюється за GPLv2. Тому OpenZFS у Linux постачається як зовнішній модуль ядра. Зазвичай DKMS збирає його для кожного встановленого ядра. Інший варіант — пакет із попередньо зібраним модулем. Модуль працює належно, але для кожного нового ядра його потрібно збирати повторно. Через це він може відставати від нового випуску ядра на кілька днів або тижнів.

Чи Oracle Solaris досі підтримується?

Так. Oracle Solaris 11.4 випущено 28 August 2018. Це поточний випуск. Premier Support діє до November 2031, а Extended Support — до November 2037 відповідно до політики Oracle щодо довгострокової підтримки. Oracle звільнила більшість команд Solaris 2 September 2017. Відтоді для 11.4 виходять оновлення репозиторію підтримки, але нової основної версії не випущено. Повний вихідний код не публікується так, як його публікував OpenSolaris.

Чи можна встановити illumos на VPS?

Іноді, але рідко з переліку образів провайдера. Зазвичай потрібен провайдер, який дає змогу підключити власний ISO та використовувати консоль. Після цього потрібно перевірити, чи драйвери в дереві illumos для віртуального диска та мережі розпізнають пристрої гіпервізора. OpenIndiana і Tribblix зазвичай використовують як початкові варіанти для встановлення загального призначення. SmartOS призначений для роботи як хост гіпервізора, а не як гостьова система. Перед оплатою перевірте систему в локальній віртуальній машині.

Чи варто вивчати DTrace, якщо я використовую лише Linux?

Модель переноситься, хоча сам інструмент здебільшого не переноситься. Oracle випустила код ядра DTrace за GPLv2 у August 2017 і підтримує порт для Oracle Linux. Проте його ніколи не інтегрували до mainline kernel. На практиці трасування в Linux працює на eBPF. Мову bpftrace розробили так, щоб вона була схожа на DTrace D. Тому probes, predicates та aggregations в обох системах означають те саме. Вивчення підходу DTrace допомагає одразу читати скрипти bpftrace.

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