История Solaris и illumos: как выжил открытый код
Узнайте историю появления проекта illumos после закрытия исходного кода Solaris компанией Oracle. Разбор ключевых событий, сохранивших ZFS и DTrace для современных систем.
Что такое Solaris и illumos
Solaris и illumos — это две ветви одного исходного дерева Unix. Sun Microsystems создала Solaris и опубликовала большую часть её исходного кода в 2005 году. Oracle приобрела Sun в 2010 году и прекратила публикацию исходного кода, поэтому разработчики вне 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 получил главный приз на конкурсе Technology Innovation Awards газеты 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 стали третьим компонентом. Zone предоставляет одному ядру несколько изолированных пользовательских пространств, каждое из которых имеет собственную корневую файловую систему, таблицу процессов и конфигурацию сети. 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 года и остается актуальным релизом по сей день. Согласно политике долгосрочной поддержки Oracle, Premier Support для версии 11.4 действует до ноября 2031 года, а Extended Support — до ноября 2037 года. Таким образом, Solaris является поддерживаемым коммерческим продуктом с установленной датой окончания поддержки, работающим на версии, которая остается актуальной с 2018 года.
Как появился illumos и почему его называют форком
3 августа 2010 года, за десять дней до утечки служебной записки, Гарретт Д'Амор анонсировал проект illumos. Название объединяет латинское illum (свет) и OS (операционная система); проект пишет его как одно слово, где заглавной является только первая буква.
Целью был OS/Net, обычно обозначаемый как ON: консолидация, содержащая ядро и основные системные утилиты. OpenSolaris никогда не был полностью открытым. Некоторые компоненты поставлялись в виде закрытых бинарных файлов, которые никто вне Sun не мог пересобрать, включая код интернационализации в составе C library (libc_i18n), менеджер блокировок NFS, криптографический фреймворк, драйверы (например, mpt для хост-адаптеров LSI) и часть кода для платформы SPARC. Замена этих компонентов стала первой задачей проекта, так как операционную систему, которую нельзя собрать из исходного кода, невозможно поддерживать.
Д'Амор осторожно относился к термину «форк». «Сегодня мы не являемся форком из-за того, как мы отслеживаем OS/Net», — писал он, описывая downstream-репозиторий, который должен был следовать за деревом Oracle и иметь возможность возвращать изменения upstream. Десять дней спустя upstream перестал публиковать обновления. illumos стал форком по умолчанию, так как отслеживать стало нечего. Основное дерево, illumos-gate, по состоянию на август 2026 года прошло отметку в 23000 коммитов и продолжает пополняться.
Какие дистрибутивы основаны на illumos
illumos — это не операционная система для установки. Это базовое дерево исходного кода, на основе которого создаются готовые дистрибутивы. Ниже перечислены актуальные проекты.
- OpenIndiana была официально представлена 14 сентября 2010 года в центре JISC в Лондоне. Это наиболее близкий потомок классического дистрибутива 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 34 21 апреля 2026 года. Проект позиционирует себя как систему в ретро-стиле с современными компонентами; он сохранил формат пакетов 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, который работает с оверлеями, автоматически разрешая все зависимости:
zap refresh
zap install-overlay develop
zap update-overlay -aЭто команды, которые публикует Tribblix. Они выполняются на оборудовании или гипервизоре, который находится под вашим контролем. Вы не найдете их в образах «в один клик» в панелях управления VPS, и этот разрыв честно отражает текущее состояние развертывания 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, — и перешла на именованные функциональные флаги (feature flags) под версией-заглушкой 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, поэтому установка illumos обычно означает загрузку собственного ISO-образа провайдеру, который разрешает использование пользовательских образов, а затем проверку того, распознаются ли виртуальный диск и сетевые устройства. Стороннее программное обеспечение берется из собственного набора пакетов дистрибутива или компилируется самостоятельно.
Существуют реальные причины для его использования: рабочая нагрузка Solaris, которую необходимо поддерживать, развертывание зон, которое вы уже эксплуатируете, или интерес к изучению исходного кода. Перечисленные выше дистрибутивы поддерживаются, а их списки рассылки помогают в решении вопросов. Это не то же самое, что выбор по умолчанию для нового сервера.
Если вы пришли сюда ради ZFS, вам не нужен illumos. Используйте OpenZFS на Linux или FreeBSD, где она упакована, задокументирована и широко распространена. Если вы рассматриваете BSD как платформу для сервера, практическое сравнение Linux и FreeBSD в качестве серверной платформы охватывает изменения в повседневной эксплуатации. illumos — это история происхождения этих инструментов, и понимание их корней объясняет многое в их поведении, начиная с того, почему zpool и zfs совершенно не похожи на остальной стек хранения данных в Linux.
FAQ
Является ли illumos тем же самым, что и OpenSolaris?
Нет. OpenSolaris был проектом и дистрибутивом компании Sun, права на который перешли к Oracle, закрывшей его в 2010 году. 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 года и является текущим релизом. Согласно политике пожизненной поддержки Oracle, Premier Support действует до ноября 2031 года, а Extended Support — до ноября 2037 года. 2 сентября 2017 года Oracle сократила большую часть команд разработчиков Solaris, и с тех пор версия 11.4 получает обновления через репозитории поддержки, а не в виде новых мажорных версий. Полный исходный код не публикуется так, как это делалось в OpenSolaris.
Могу ли я установить illumos на VPS?
Иногда, но редко через список образов провайдера. Обычно вам нужен провайдер, позволяющий подключить собственный ISO-образ и использовать консоль, после чего необходимо убедиться, что виртуальный диск и сетевые драйверы в дереве illumos распознают устройства гипервизора. OpenIndiana и Tribblix являются стандартными отправными точками для установки общего назначения, а SmartOS спроектирована как хост для гипервизора, а не как гостевая система. Протестируйте всё в локальной виртуальной машине, прежде чем оплачивать услуги.
Стоит ли изучать DTrace, если я использую только Linux?
Концепция применима, даже если сам инструмент — нет. В августе 2017 года Oracle выпустила код ядра DTrace под лицензией GPLv2 и поддерживает порт для Oracle Linux, но он так и не был включен в основную ветку ядра, а трассировка в Linux на практике выполняется через eBPF. Язык, который использует bpftrace, был спроектирован так, чтобы напоминать язык D из DTrace, поэтому пробы (probes), предикаты и агрегации означают одно и то же в обоих случаях. Изучение логики работы DTrace позволяет читать скрипты bpftrace с первого раза.