SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor

История Solaris и illumos: как выжил открытый код

Узнайте, как после закрытия исходного кода Solaris компанией Oracle проект illumos сохранил технологии ZFS и DTrace. Разбор истории развития Unix систем с 1982 года.

Что такое 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 февраля 1982 года Скоттом Макнили, Энди Бехтольсхаймом, Винодом Хослой и Биллом Джоем. Её операционная система SunOS была основана на BSD (Berkeley Software Distribution) — университетской ветке Unix, над которой Билл Джой работал ещё до создания 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 сентября 1991 года Sun объявила, что SunOS 4 будет заменена системой на базе SVR4 под новым маркетинговым названием Solaris 2. Solaris 2.0 был выпущен в июне 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 января 2005 года. Это важно, так как всё, что пережило компанию, присутствовало в этом релизе или появилось в одном из его обновлений.

DTrace был написан в Sun Брайаном Кантриллом, Майком Шапиро и Адамом Левенталем и впервые стал доступен в ноябре 2003 года. Он выполняет инструментирование работающего ядра и пользовательских процессов без перекомпиляции и без перезапуска отслеживаемого процесса. Зонд, который вы не активировали, не потребляет ресурсов, так как инструментирование внедряется только тогда, когда его запрашивает скрипт. Именно поэтому администраторы были готовы использовать его на продуктивных машинах. DTrace получил главный приз на конкурсе технологических инноваций The Wall Street Journal в 2006 году и награду USENIX STUG (Software Tools User Group) в 2008 году.

ZFS была разработана в Sun Джеффом Бонвиком, Биллом Муром и Мэтью Аренсом и анонсирована 14 сентября 2004 года. Она объединила менеджер томов и файловую систему в один уровень, что позволяет проверять контрольную сумму каждого блока при чтении и восстанавливать поврежденный блок из избыточной копии. Запись выполняется методом copy-on-write: блок никогда не перезаписывается на месте, поэтому сбой во время записи оставляет старые данные нетронутыми, вместо того чтобы привести к повреждению файловой системы. Снимки (snapshots) практически бесплатны, так как снимок — это просто набор блоков, которые не были затронуты последующими записями. ZFS не вошла в первоначальный релиз Solaris 10. Она появилась в обновлении Solaris 10 6/06 в июне 2006 года.

Zones стали третьим компонентом. Зона предоставляет одному ядру несколько изолированных пространств пользователя, каждое из которых имеет свою корневую файловую систему, таблицу процессов и сетевую конфигурацию. Zones появились в бета-сборке Solaris 10 в феврале 2004 года и были включены в полноценный релиз. FreeBSD пришла к той же идее раньше, двигаясь с другой стороны, и сравнение между jails и Docker containers до сих пор остается самым наглядным способом понять, что такое изоляция на уровне ядра. Zones существуют в illumos по сей день и являются основой как минимум одного дистрибутива, описанного ниже.

Почему Sun открыла исходный код Solaris

Sun представила лицензию CDDL (Common Development and Distribution License) в организацию OSI (Open Source Initiative) 1 декабря 2004 года, и 14 января 2005 года OSI её одобрила. Лицензия 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 в сборке 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 в Linux собирается как модуль ядра вне дерева исходных кодов ядра, а не включается в него, и поэтому она отсутствует в основном дереве ядра. Решение опубликовать код под любой открытой лицензией — это то, что имеет наибольшее значение для остальной части этой истории, а история лицензирования открытого ПО объясняет, почему компания вообще пошла на такой шаг.

Что произошло после покупки Sun компанией Oracle

20 апреля 2009 года Oracle объявила о приобретении Sun за 7.4 миллиарда долларов США (или 5.6 миллиарда долларов США за вычетом денежных средств и долгов Sun). Сделка была завершена 27 января 2010 года.

13 августа 2010 года внутри компании распространилась, а затем была опубликована внутренняя служебная записка Oracle, написанная Майком Шапиро, Биллом Несхеймом и Крисом Армсом. В ней была прямо изложена новая политика: «Мы больше не будем распространять исходный код всей операционной системы Solaris в режиме реального времени по мере её разработки на ежедневной основе». В документе исключалась возможность дальнейших сборок сообществом: «Мы не будем выпускать никакие другие бинарные дистрибутивы, такие как ежедневные или двухнедельные сборки бинарных файлов Solaris, а также OpenSolaris 2010.05 или более поздние версии». Вместо этого релизы с открытым исходным кодом должны были следовать за выпуском коммерческих продуктов: «Мы будем распространять обновления для кода, лицензированного по CDDL или другим лицензиям с открытым кодом, после полноценных релизов нашей корпоративной операционной системы Solaris».

23 августа 2010 года Совет управляющих OpenSolaris принял резолюцию, в которой зафиксировал, что Oracle не назначила связного для работы с советом и объявила о прекращении партнерства по разработке 13 августа. Совет проголосовал за возвращение контроля над сообществом компании Oracle в соответствии с уставом, первоначально написанным Sun, что привело к роспуску совета.

Oracle Solaris 11 была выпущена 9 ноября 2011 года. 2 сентября 2017 года Oracle уволила большую часть команд, работавших над Solaris. Oracle Solaris 11.4 была выпущена 28 августа 2018 года и по состоянию на июль 2026 года оставалась актуальным релизом, получающим обновления через репозиторий поддержки. Когда Oracle в последний раз пересматривала свою политику долгосрочной поддержки для версии 11.4 в январе 2024 года, она продлила действие Premier Support до 2031 года, а Extended Support — с 2034 до 2037 года. Таким образом, Solaris является поддерживаемым коммерческим продуктом с установленной датой окончания поддержки, работающим на версии, которая остается актуальной с 2018 года.

Как зародилась illumos и почему её называют форком

3 августа 2010 года, за десять дней до утечки служебной записки, Гарретт Д'Амор анонсировал проект illumos. Название объединяет латинское illum (свет) и OS (операционная система); проект пишет его как одно слово с заглавной буквы.

Целью был OS/Net, обычно обозначаемый как ON: консолидация, содержащая ядро и основные системные утилиты. OpenSolaris никогда не был полностью открытым. Некоторые части поставлялись в виде закрытых бинарных файлов, которые никто за пределами Sun не мог собрать: код интернационализации в библиотеке C (libc_i18n), менеджер блокировок NFS, криптографический фреймворк, драйверы (например, mpt для адаптеров шины LSI) и часть кода для платформы SPARC. Замена этих компонентов стала первой задачей проекта, так как операционную систему, которую нельзя собрать из исходного кода, невозможно поддерживать.

Д'Амор осторожно относился к термину «форк». «На сегодняшний день мы не являемся форком из-за того, как мы отслеживаем OS/Net», — писал он, описывая downstream-репозиторий, который следовал бы за деревом Oracle и мог бы возвращать изменения upstream. Десять дней спустя upstream перестал публиковать обновления. illumos стала форком по умолчанию, так как отслеживать стало нечего. Основное дерево, illumos-gate, по состоянию на октябрь 2026 года преодолело отметку в 23000 коммитов и продолжает пополняться.

Какие дистрибутивы основаны на illumos

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

  • OpenIndiana была официально представлена 14 сентября 2010 года в JISC Centre в Лондоне. Это наиболее близкий потомок классического OpenSolaris для рабочих станций и серверов. Дистрибутив использует модель rolling release под названием Hipster; снапшот 2026.04 был выпущен 5 мая 2026 года.
  • OmniOS — серверный дистрибутив, который после прекращения поддержки со стороны первоначального вендора теперь развивается сообществом под названием OmniOS CE.
  • SmartOS — платформа гипервизора, построенная на базе зон (zones). Она была создана компанией Joyent, которая в апреле 2022 года объявила о передаче SmartOS и Triton компании MNX Solutions, начиная с 1 мая 2022 года.
  • NexentaStor использовала ту же базу для систем хранения данных; именно из этой коммерческой линейки вырос illumos.
  • Tribblix — компактный дистрибутив, поддерживаемый Питером Трибблом (Peter Tribble), описание которого приведено ниже.
  • DilOS использует инструментарий пакетов Debian поверх ядра illumos.

Как сегодня выглядит установка системы illumos

Tribblix — полезный пример, так как это компактный дистрибутив с открытой документацией, который продолжает выпускать релизы. Milestone 41 для x86 был опубликован 5 августа 2026 года. Линейка SPARC перешла на Milestone 35 23 сентября 2026 года — это синтетический релиз, который добавляет более новые пакеты, включая gcc 10, поверх операционной системы Milestone 34; загружаемый ISO-образ для SPARC по-прежнему относится к Milestone 34. Проект позиционирует себя как систему в стиле ретро с современными компонентами и сохранил формат пакетов SVR4, использовавшийся в Solaris, вместо перехода на более новую систему управления пакетами.

Установка выполняется из live-образа. Вы загружаете 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. Они работают на оборудовании или гипервизоре, который вы контролируете. Tribblix — это не тот дистрибутив, который можно найти в виде образа «в один клик» в панели управления VPS. SmartOS — исключение среди систем illumos: компания MNX, принявшая проект от Joyent, предлагает «выбор между Linux, FreeBSD или SmartOS» через собственную облачную панель управления (проверено 12 октября 2026 года). Помимо этого, образ illumos в списке доступных у провайдеров встречается редко, и этот пробел отражает реальное положение дел с развертыванием illumos в 2026 году.

Почему ZFS и DTrace пережили Solaris

ZFS покинула Solaris почти сразу после публикации исходного кода. Павел Якуб Давидек портировал её на FreeBSD, где она стала частью системы начиная с FreeBSD 7.0 в 2008 году. Работа над нативной ZFS для Linux началась в 2008 году, а первый стабильный релиз вышел в 2013 году. В период с 2010 по 2013 год illumos хранил эталонную копию исходного кода ZFS, так как дерево Oracle было закрыто, а всем остальным портам требовался источник для синхронизации. В этом заключается конкретная ценность форка: без него у портов не было бы общего предка для слияния.

Проект OpenZFS был анонсирован 17 сентября 2013 года для координации этих портов; одним из его основателей стал Мэтт Аренс, один из первоначальных авторов ZFS. OpenZFS 2.0 был выпущен 30 ноября 2020 года, и в примечаниях к релизу результат сформулирован прямо: «Проект ZFS on Linux переименован в OpenZFS! Теперь Linux и FreeBSD поддерживаются из одного репозитория, что делает все возможности OpenZFS доступными на обеих платформах». В FreeBSD 13.0 отказались от собственной копии, производной от illumos, и перешли на это общее дерево.

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

DTrace прошел более короткий путь. Он стал стандартом во FreeBSD к версии 7.1 в январе 2009 года, а Apple добавила его в Mac OS X 10.5 Leopard. Oracle выпустила код ядра DTrace под лицензией GPLv2 в августе 2017 года — изменение, которое широко обсуждалось в феврале 2018 года и устранило лицензионный барьер для Linux. В основную ветку ядра Linux он так и не был включен. Трассировка в Linux на практике работает на базе eBPF, а bpftrace предоставляет для неё язык сценариев, намеренно близкий к языку D в DTrace.

Этот паттерн — общий принцип, а не особенность Solaris. Sun опубликовала ZFS и DTrace под лицензией, которая позволяла другим людям сохранять копию и продолжать работу над ней. Когда компания, финансировавшая разработку, прекратила её, работа продолжилась, так как код уже находился в других деревьях и в других руках. Части Solaris, которые так и не были открыты, включая закрытые бинарные файлы, которые illumos пришлось переписывать, исчезли вместе с компанией. Именно это меняет открытие исходного кода, и тот же механизм лежит в основе того, как дистрибутивы Linux происходят друг от друга.

Стоит ли запускать illumos на VPS?

Почти для всех ответ — нет, и всё вышесказанное не является рекомендацией к использованию. illumos поддерживает ограниченный набор оборудования, так как его драйверы — это то, что поддерживала Sun, плюс то, что было написано небольшим сообществом с тех пор. Большинство VPS-провайдеров предоставляют только образы Linux и BSD. Исключением является MNX, которая взяла на себя развитие SmartOS от Joyent и предлагает SmartOS наряду с Linux и FreeBSD в своём облаке. В любом другом месте установка illumos обычно означает загрузку собственного ISO-образа провайдеру, который разрешает использование пользовательских образов, а затем проверку того, распознаются ли виртуальный диск и сетевые устройства. Стороннее программное обеспечение берется из собственного набора пакетов дистрибутива или собирается самостоятельно с помощью компилятора.

Существуют реальные причины для его использования: рабочая нагрузка Solaris, которую необходимо поддерживать, развертывание зон, которое вы уже эксплуатируете, или интерес к изучению исходного кода. Перечисленные выше дистрибутивы поддерживаются, а их списки рассылки помогают в решении вопросов. Это не то же самое, что выбор по умолчанию для нового сервера.

Если вы пришли сюда ради ZFS, вам не нужен illumos. Используйте OpenZFS на Linux или FreeBSD, где она упакована, задокументирована и широко применяется. Если вы рассматриваете BSD-сторону того же семейства для сервера, практическое сравнение Linux и FreeBSD в качестве серверной платформы охватывает изменения в повседневной эксплуатации. illumos — это история происхождения этих инструментов, и знание того, откуда они появились, объясняет многое в их поведении, начиная с того, почему zpool и zfs совсем не похожи на остальной стек хранения данных в Linux.

FAQ

Является ли illumos тем же самым, что и OpenSolaris?

Нет. OpenSolaris был проектом и дистрибутивом компании Sun, который перешел к Oracle, а в 2010 году Oracle закрыла его. illumos — это отдельный проект, анонсированный 3 августа 2010 года, построенный на основе последнего опубликованного исходного кода ядра OpenSolaris, консолидации OS/Net. Его первой задачей стала замена закрытых бинарных компонентов, которые поставлялись в составе OpenSolaris, включая libc_i18n, менеджер блокировок NFS, криптографический фреймворк и ряд драйверов. Никакой код illumos не поступал от Oracle после 2010 года, так как Oracle прекратила его публикацию.

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

Лицензии несовместимы. ZFS использует лицензию CDDL, которую Free Software Foundation классифицирует как лицензию свободного ПО, несовместимую с GPL; эта несовместимость досталась CDDL от MPL 1.1. Ядро Linux использует GPLv2. На практике это означает, что OpenZFS в Linux поставляется как внешний модуль ядра (out-of-tree), который обычно собирается через DKMS для каждого устанавливаемого ядра или поставляется в виде готового пакета модуля. Он работает стабильно, но модуль приходится пересобирать при каждом обновлении ядра, поэтому он может отставать от выхода новых версий ядра на несколько дней или недель.

Поддерживается ли Oracle Solaris до сих пор?

Да. Oracle Solaris 11.4 была выпущена 28 августа 2018 года и оставалась актуальным релизом, получающим обновления из репозитория поддержки, по состоянию на июль 2026 года. Согласно политике долгосрочной поддержки Oracle, в последний раз пересмотренной для версии 11.4 в январе 2024 года, Premier Support действует до 2031 года, а Extended Support — до 2037 года. 2 сентября 2017 года Oracle сократила большую часть команд Solaris, и с тех пор версия 11.4 получает лишь обновления из репозитория, а не новые мажорные версии. Полный исходный код не публикуется так, как это делалось в OpenSolaris.

Можно ли установить illumos на VPS?

Иногда можно, но редко через список образов провайдера. Компания MNX, поддерживающая SmartOS, предлагает SmartOS через собственную панель управления облаком. В остальных случаях обычно требуется провайдер, позволяющий подключить собственный ISO-образ и использовать консоль, после чего нужно убедиться, что виртуальный диск и сетевые драйверы в дереве illumos распознают устройства гипервизора. OpenIndiana и Tribblix — стандартные варианты для установки общего назначения, а SmartOS спроектирована как хост-гипервизор, а не как гостевая ОС для самостоятельной установки. Протестируйте систему на локальной виртуальной машине, прежде чем оплачивать услуги.

Стоит ли изучать DTrace, если я использую только Linux?

Концептуальная модель переносима, даже если сам инструмент в основном нет. В августе 2017 года Oracle выпустила код ядра DTrace под лицензией GPLv2 и поддерживает порт для Oracle Linux, но он так и не был включен в основную ветку ядра, а трассировка в Linux на практике работает на базе eBPF. Язык, который использует bpftrace, был разработан так, чтобы напоминать язык D в DTrace, поэтому пробы (probes), предикаты и агрегации означают одно и то же в обоих случаях. Изучение логики работы DTrace делает скрипты bpftrace понятными с первого прочтения.

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