SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor

Solarisからillumosへ、今も残る分岐の理由

SunがSolarisに組み込んだZFSとDTraceは、Oracleによる買収後も消えませんでした。ソース公開の停止からillumosが生まれ、現在も両系統を動かせる理由を日付とともに解説します。

Solaris と illumos とは

Solaris と illumos は、1 つの Unix ソースツリーから分岐した 2 つの系統です。Sun Microsystems は Solaris を開発し、2005 年にソースコードの大部分を公開しました。Oracle は 2010 年に Sun を買収し、そのソースコードの公開を停止しました。そこで Oracle 外部の開発者たちは、公開されたコードを新しい名前で引き継ぎました。それが illumos です。2026 年現在、オペレーティングシステム自体はニッチな存在です。しかし、そこに組み込まれたストレージ層とトレーシングツールは、そうではありません。だからこそ、この歴史を知る価値があります。

Linux または FreeBSD で ZFS を実行している場合、それは Sun が Solaris 向けに作成したコードを実行していることになります。そのコードは、Sun という企業、製品系列、そしてライセンスをめぐる争いが終わった後も残りました。この記事では、その経緯を日付を確認しながら説明します。

Solaris の起源: BSD、System V、SVR4

Sun Microsystems は、Scott McNealy、Andy Bechtolsheim、Vinod Khosla、Bill Joy により 1982 年 2 月 24 日に設立されました。同社のオペレーティングシステム SunOS は、Sun の設立前から Bill Joy が開発に携わっていた大学系 Unix である BSD(Berkeley Software Distribution)を基にしていました。もう一方の Unix 系統は、商用に販売された AT&T の System V です。この 2 つの系統が、Linux で終わる Unix の系統図で説明した分岐です。Sun はその後 10 年間、BSD 側に位置していました。

1987 年、Sun と AT&T は BSD、System V、Xenix を 1 つのリリースに統合する共同プロジェクトを発表しました。これが UNIX System V Release 4 で、通常は SVR4 と表記されます。1991 年 9 月 4 日、Sun は SunOS 4 を、Solaris 2 という新しいマーケティング名の SVR4 派生システムに置き換えると発表しました。Solaris 2.0 は 1992 年 6 月にリリースされ、SPARC ハードウェアのみをサポートしました。Sun は Unix の分岐における立場を変えたため、顧客はソフトウェアを移植する必要がありました。

旧称はなくなりませんでした。カーネルは SunOS の番号体系を維持したため、Solaris 2.6 は SunOS 5.6 を実行し、Oracle Solaris 11.4 も SunOS 5.11 として報告します。2026 年に illumos マシンで uname -a を実行すると、出力される最初の単語は今も SunOS です。これは illumos がコードとともにこの名前も引き継いだためです。

2005 年に Solaris 10 が導入したもの

Solaris 10 は 2005 年 1 月 31 日にリリースされました。ここで重要なのは、会社が存続していた時期の成果がすべてこのリリース、またはその更新版に含まれていたためです。

DTrace は Sun で Bryan Cantrill、Mike Shapiro、Adam Leventhal が開発し、2003 年 11 月に初めて利用可能になりました。実行中の kernel と user process を、再コンパイルせず、監視対象の process を再起動せずに計測できます。有効化していない probe のコストはゼロです。script が要求した時点でだけ計測処理が組み込まれるため、管理者は本番マシンでも利用できました。DTrace は The Wall Street Journal の 2006 Technology Innovation Awards で最優秀賞を受賞し、2008 年には USENIX STUG (Software Tools User Group) award も受賞しました。

ZFS は Sun で Jeff Bonwick、Bill Moore、Matthew Ahrens が設計し、2004 年 9 月 14 日に発表されました。volume manager と filesystem を 1 つの層に統合したため、読み取り時にすべての block の checksum を検証し、冗長コピーから破損した block を修復できます。書き込みは copy on write です。block をその場で上書きしないため、書き込み中にクラッシュしても、書き込み途中の filesystem ではなく以前のデータが保持されます。snapshot のコストはほぼゼロです。snapshot は、後続の書き込みで変更されなかった block の集合にすぎないためです。ZFS は Solaris 10 の初回リリースには含まれませんでした。2006 年 6 月の Solaris 10 6/06 update でリリースされました。

Zones が 3 つ目の要素でした。1 つの kernel 上に、複数の分離された user space を提供します。各 user space は独自の root filesystem、process table、network configuration を持ちます。Zones は 2004 年 2 月の Solaris 10 beta build に登場し、正式リリースに含まれました。FreeBSD は別の方向から先に同じ考えに到達しており、jails と Docker container の比較は、kernel レベルの分離が実際にどのようなものかを理解する最も明確な方法です。Zones は現在も illumos で利用されており、以下で扱う少なくとも 1 つの distribution の基盤になっています。

Sun が Solaris のソースコードを公開した理由

Sun は 2004 年 12 月 1 日に CDDL (Common Development and Distribution License) を OSI (Open Source Initiative) に提出し、OSI は 2005 年 1 月 14 日に承認しました。CDDL は MPL (Mozilla Public License) version 1.1 を基にしています。そのコピーレフトは個々のファイル単位で適用されます。CDDL のソースファイルは CDDL のまま維持する必要がありますが、そのファイルからビルドしたバイナリは、別の条件のコードと組み合わせることができます。

最初に公開されたのは DTrace でした。ソースコードは CDDL の下で 2005 年 1 月 25 日に、新たに開設された opensolaris.org で公開されました。これは Solaris 10 自体がリリースされる 6 日前でした。Solaris システムコードの大部分は、2005 年 6 月 14 日に続いて公開されました。ZFS は 2005 年 10 月 31 日に Solaris のメイン開発トランクへ統合され、2005 年 11 月 16 日には build 27 として OpenSolaris の開発者に提供されました。OpenSolaris はインストール可能なディストリビューションにもなりました。2008.05 は 2008 年 5 月 5 日に live CD として登場し、2009.06 は 2009 年 6 月 1 日に SPARC サポート付きで登場しました。

ライセンスの選択は、現在実行できるものにも影響します。Free Software Foundation は、CDDL を GPL (GNU General Public License) と互換性のない free software license に分類しています。この非互換性は MPL 1.1 から受け継がれたものです。Linux kernel は GPLv2 です。そのため、Linux 上の ZFS は kernel source tree の外部にある kernel module としてビルドされ、kernel source tree に統合されていません。また、mainline kernel に含まれていません。この先の説明で最も重要なのは、いずれかの open license の下で公開するという決定です。オープンソースライセンスの歴史では、企業がそのような決定をする理由を説明します。

Oracle が Sun を買収して起きたこと

Oracle は 2009 年 4 月 20 日、Sun を 74 億 US$ で買収すると発表しました。Sun の現金と負債を差し引いた買収額は 56 億 US$ でした。この買収は 2010 年 1 月 27 日に完了しました。

2010 年 8 月 13 日、Mike Shapiro、Bill Nesheim、Chris Armes が作成した Oracle 内部向けメモが社内で回覧された後、流出しました。メモには、新しい方針が明記されていました。「開発中の Solaris オペレーティングシステム全体のソースコードを、毎晩、リアルタイムで配布することは、今後行いません」。コミュニティ向けのビルドも打ち切られました。「Solaris バイナリの nightly ビルドや bi-weekly ビルド、または OpenSolaris 2010.05 以降のディストリビューションなど、その他のバイナリ配布物はリリースしません」。今後のオープンソースリリースは、製品のリリースに続く形になりました。「承認済みの CDDL またはその他のオープンソースライセンス対象コードの更新は、エンタープライズ向け Solaris オペレーティングシステムの正式リリース後に配布します」。

2010 年 8 月 23 日、OpenSolaris Governing Board は決議を可決しました。この決議では、Oracle が理事会との連絡担当者を任命していないことと、8 月 13 日に開発パートナーシップの終了を発表したことが記録されました。理事会は、Sun が当初作成した憲章に基づき、コミュニティの管理権を Oracle に戻すことを決議しました。これにより、理事会は解散しました。

Oracle Solaris 11 は 2011 年 11 月 9 日にリリースされました。2017 年 9 月 2 日、Oracle は Solaris チームの大半をレイオフしました。Oracle Solaris 11.4 は 2018 年 8 月 28 日にリリースされ、現在も最新リリースです。Oracle の lifetime support ポリシーでは、11.4 の Premier Support は 2031 年 11 月まで、Extended Support は 2037 年 11 月まで提供されます。したがって Solaris は、公開されたサポート終了日を持つ、サポート対象の商用製品です。2018 年から現在まで、同じリリースが現行版となっています。

illumos の始まりと、フォークと呼ばれる理由

2010 年 8 月 3 日、メモがリークする 10 日前に、Garrett D'Amore は illumos を発表しました。名前はラテン語で光を意味する illum と、オペレーティングシステムを意味する OS を組み合わせたものです。プロジェクトでは、先頭の文字だけを大文字にした 1 語として表記します。

対象は OS/Net、通常は ON と表記される統合ツリーでした。ここにはカーネルと中核システムユーティリティが含まれます。OpenSolaris は完全にオープンではありませんでした。Sun の外部では誰も再ビルドできないクローズドバイナリとして、複数の部分が提供されていました。これには、C ライブラリ(libc_i18n)内部の国際化コード、NFS ロックマネージャー、暗号フレームワーク、LSI ホストバスアダプター用の mpt ドライバーなどのドライバー、一部の SPARC プラットフォームコードが含まれます。ソースからビルドできないオペレーティングシステムは保守できないため、これらの置き換えがプロジェクトの最初の仕事になりました。

D'Amore は、フォークという言葉の扱いに慎重でした。「OS/Net の追跡方法を理由に、現時点ではフォークではありません」と彼は書いています。Oracle のツリーに追従し、変更を上流へ戻せるダウンストリームリポジトリを説明したものです。10 日後、上流は公開を停止しました。追跡する対象がなくなったため、illumos は必然的にフォークになりました。中核ツリーである illumos-gate は 2026 年 8 月時点で 23,000 件を超えるコミットに達しており、現在もコミットを受け入れています。

illumos から派生したディストリビューション

illumos はインストールするものではありません。illumos は中核となるソースツリーであり、ディストリビューションがその上に実用的なシステムを構築します。現在もリリースされているものは次のとおりです。

  • OpenIndiana は 14 September 2010 に London の JISC Centre で正式に開始されました。旧 OpenSolaris のデスクトップおよびサーバーディストリビューションに最も近い後継です。Hipster という rolling release であり、2026.04 snapshot は 5 May 2026 に公開されました。
  • OmniOS はサーバーディストリビューションです。元のベンダーが開発を停止した後、現在はコミュニティが OmniOS CE として保守しています。
  • SmartOS は zones を基盤とする hypervisor platform です。Joyent が開発し、2022 年 4 月に SmartOS と Triton を MNX Solutions に移管すると発表しました。移管の効力発生日は 1 May 2022 です。
  • NexentaStor は同じ基盤をストレージアプライアンスに使用していました。これは illumos の母体となった commercial line です。
  • Tribblix は小規模なディストリビューションで、以下で説明する Peter Tribble が保守しています。
  • DilOS は illumos kernel の上に Debian の package tooling を配置します。

現在の illumos システムのインストール

Tribblix は、規模が小さく、公開ドキュメントがあり、現在もリリースされているため、実例として有用です。x86 向けの Milestone 41 は 5 August 2026 に公開され、SPARC 系列は 21 April 2026 に Milestone 34 に到達しました。このプロジェクトは、自らを現代的なコンポーネントを備えたレトロスタイルと説明しており、新しいパッケージシステムへ移行せず、Solaris が使用していた SVR4 パッケージ形式を維持しています。

インストールは live image から実行します。ISO を起動し、ユーザー jack としてパスワード jack でログインし、root になって、ディスクデバイスに対してインストーラーを実行します。プロジェクトのインストールドキュメントには、次のコマンドが記載されています。

./live_install.sh -G c1t0d0

-G フラグは EFI (extensible firmware interface) パーティションレイアウトを書き込みます。-b は代わりに legacy MBR (master boot record) レイアウトを選択します。ディスク名には /dev/sda ではなく Solaris の cXtYdZ 規則を使用します。Linux の経験者にとって、ここが最初に分かりにくい点です。ソフトウェアセットは overlay と呼ばれ、同じ行で名前を指定できます。

./live_install.sh -G c1t0d0 develop desktop

インストール後に使用するパッケージツールは zap です。overlay を処理するため、依存関係は自動的に解決されます。

zap refresh
zap install-overlay develop
zap update-overlay -a

これらは Tribblix が公開しているコマンドです。管理下にあるハードウェアまたはハイパーバイザー上で実行します。VPS のコントロールパネルにあるワンクリックイメージのように提供されるものではありません。この隔たりが、2026 年における illumos のデプロイ状況を率直に示しています。

ZFS と DTrace が Solaris より長く存続した理由

ZFS はソースコードが公開されると、ほぼすぐに Solaris から分岐しました。Pawel Jakub Dawidek が FreeBSD に移植し、2008 年の FreeBSD 7.0 以降、システムの一部になっています。Linux 向けのネイティブ ZFS 開発は 2008 年に始まり、2013 年に最初の安定版がリリースされました。2010 年から 2013 年にかけては、illumos が ZFS ソースの基準となるコピーを保持していました。Oracle のツリーは非公開で、他のすべての移植版には参照元が必要だったためです。これがフォークの具体的な価値です。フォークがなければ、各移植版にはマージ対象となる共通の祖先がありませんでした。

OpenZFS プロジェクトは、これらの移植版を調整するため、2013 年 9 月 17 日に発表されました。創設者には、ZFS の原作者の 1 人である Matt Ahrens も含まれていました。OpenZFS 2.0 は 2020 年 11 月 30 日にリリースされ、リリースノートには結果が明確に記されています。「ZFS on Linux プロジェクトは OpenZFS に改称されました。Linux と FreeBSD は、現在では同じリポジトリからサポートされています。これにより、OpenZFS のすべての機能を両方のプラットフォームで利用できます。」FreeBSD 13.0 では、独自に保持していた illumos 由来のコピーを廃止し、共有ツリーへ移行しました。

2 つの ZFS 系統は、ディスク上の形式で分岐しています。オープンな系統は、Sun が公開した最後のバージョンであるプールバージョン 28 で止まり、その後はプレースホルダーのバージョン 5000 の下で名前付き機能フラグへ移行しました。これにより、プールは単一の番号ではなく、使用している機能を通知します。Oracle は、非公開のソースコードのまま独自のバージョン番号を増やし続けました。一方でバージョン 28 より新しいプールを作成すると、もう一方ではインポートできません。実行環境を選ぶ場合は、FreeBSD と Linux での OpenZFS の動作の違いで、2 つのホスト間で実際に異なる点を確認できます。

DTrace の移植先は、より少数でした。2009 年 1 月の FreeBSD 7.1 までには標準機能となり、Apple は Mac OS X 10.5 Leopard に追加しました。Oracle は 2017 年 8 月に DTrace のカーネルコードを GPLv2 で公開しました。この変更は 2018 年 2 月に広く知られるようになり、Linux でのライセンス上の障壁を取り除きました。ただし、メインラインカーネルにマージされることはありませんでした。実際の Linux トレーシングは eBPF 上で動作しており、bpftrace には DTrace の D に意図的に近いスクリプト言語が用意されています。

重要なのは Solaris 固有の話ではなく、一般的なパターンです。Sun は、他の人がコピーを保持し、開発を継続できるライセンスで ZFS と DTrace を公開しました。開発費を負担していた企業が撤退しても、コードはすでに他のツリーと他の開発者の手元にあったため、開発は続きました。illumos が書き直さなければならなかった非公開バイナリを含め、公開されなかった Solaris の部分は企業とともに失われました。これがオープンソース化によって変わる点であり、Linux ディストリビューションが互いに派生する仕組みも同じ原理に基づいています。

VPS で illumos を実行すべきですか?

ほとんどの場合、答えは「いいえ」です。上記の内容も、試すことを推奨するものではありません。illumos が対応するハードウェアの範囲は限られています。利用できるドライバーは、Sun が対応していたものと、その後に小規模なコミュニティが作成したものに限られるためです。VPS プロバイダーは Linux と BSD のイメージを提供しているため、通常、illumos をインストールするには、カスタムイメージを許可するプロバイダーへ独自の ISO をアップロードし、仮想ディスクとネットワークデバイスが認識されるか確認する必要があります。サードパーティーソフトウェアは、ディストリビューション独自のパッケージセットから導入するか、自分でコンパイルします。

illumos を実行する実際の理由もあります。維持し続ける必要がある Solaris ワークロード、すでに運用している zones 環境、またはソースコードを読むことへの関心などです。上記のディストリビューションは保守されており、メーリングリストでも質問に回答してもらえます。ただし、新しいサーバーで標準的に選択することとは別の話です。

ZFS を目的にこのページを読んでいる場合、ZFS を利用するために illumos は必要ありません。OpenZFS を Linux または FreeBSD で実行してください。これらの環境ではパッケージ化され、ドキュメントが整備され、広く導入されています。同じ系統の BSD をサーバーで利用するか検討している場合は、サーバープラットフォームとしての Linux と FreeBSD の実用的な比較で、日常の運用で変わる点を確認できます。illumos はこれらのツールの起源です。その来歴を知ると、動作の多くを理解しやすくなります。まず、zpoolzfs の操作感が Linux の他のストレージスタックとまったく異なる理由も分かります。

FAQ

illumos は OpenSolaris と同じものですか?

いいえ。OpenSolaris は Sun のプロジェクトおよびディストリビューションで、Oracle が引き継ぎましたが、Oracle は 2010 年に終了させました。illumos は、2010 年 8 月 3 日に発表された別のプロジェクトです。最後に公開された OpenSolaris のコアソースである OS/Net consolidation を基に構築されています。最初の課題は、OpenSolaris がリリース時に含めていたクローズドなバイナリコンポーネントを置き換えることでした。これには libc_i18n、NFS lock manager、cryptographic framework、複数のドライバーが含まれます。Oracle は 2010 年以降、ソースの公開を停止したため、それ以降の illumos コードに Oracle 由来のものはありません。

Linux はなぜ ZFS をカーネルに含められないのですか?

ライセンスの互換性がないためです。ZFS は CDDL でライセンスされており、Free Software Foundation はこれを GPL と互換性のない free software license に分類しています。この非互換性は、CDDL が MPL 1.1 から引き継いだものです。Linux kernel は GPLv2 です。そのため実際には、Linux 上の OpenZFS は out of tree kernel module として提供されます。通常は、インストールする各 kernel に対して DKMS でビルドするか、ビルド済みの module package を使用します。正常に動作しますが、新しい kernel ごとに module を再ビルドする必要があるため、新しい kernel release への対応が数日から数週間遅れることがあります。

Oracle Solaris は現在もサポートされていますか?

はい。Oracle Solaris 11.4 は 2018 年 8 月 28 日にリリースされ、現在のリリースです。Oracle の lifetime support policy では、Premier Support は 2031 年 11 月まで、Extended Support は 2037 年 11 月まで提供されます。Oracle は 2017 年 9 月 2 日に Solaris チームの大半を解雇しました。以降、11.4 には新しい major version ではなく、support repository の更新が提供されています。OpenSolaris のような形で完全なソースが公開されているわけではありません。

VPS に illumos をインストールできますか?

場合によっては可能ですが、provider の image list から選べることはほとんどありません。通常は、custom ISO を接続でき、console を使用できる provider が必要です。そのうえで、illumos tree に含まれる virtual disk と network driver が、hypervisor のデバイスを認識することを確認します。一般用途のインストールでは、OpenIndiana と Tribblix が通常の出発点です。SmartOS は guest ではなく hypervisor host として設計されています。料金を支払う前に、ローカルの virtual machine でテストしてください。

Linux しか使用しない場合でも、DTrace を学ぶ価値はありますか?

ツール自体はほとんど移植されていませんが、考え方は応用できます。Oracle は 2017 年 8 月に DTrace の kernel code を GPLv2 で公開し、Oracle Linux 用の port を保守しています。しかし、mainline kernel に統合されたことはありません。Linux の tracing は実際には eBPF で行われます。bpftrace が使用する言語は、DTrace の D に似た構文になるよう設計されています。そのため、probes、predicates、aggregations はどちらでも同じ意味を持ちます。DTrace の考え方を学ぶと、bpftrace scripts を初見でも読みやすくなります。

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