Solarisからillumosへ、分岐が生き残った理由
SunがSolarisで開発したZFSとDTraceは、Oracleによる2010年の買収後もillumosの分岐で受け継がれました。Solarisの公開と停止の経緯を年代順に解説します。
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 は、BSD(Berkeley Software Distribution)を起源としています。BSD は、Sun の設立前に Bill Joy が開発に携わっていた大学 Unix 系統です。もう 1 つの 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 を、SVR4 をベースとする新しいマーケティング名のシステム Solaris 2 に置き換えると発表しました。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 月に初めて利用可能になりました。実行中のカーネルとユーザープロセスを、再コンパイルせず、監視対象のプロセスを再起動せずに計測できます。有効化していない probe のコストはゼロです。スクリプトが要求した場合にだけ計測処理が組み込まれるため、管理者は本番マシンでも安心して使用できました。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 日に発表されました。ボリュームマネージャーとファイルシステムを 1 つの層に統合したため、読み取り時にすべてのブロックのチェックサムを検証し、冗長コピーから破損したブロックを修復できます。書き込みは copy on write です。ブロックをその場で上書きしないため、書き込み途中でクラッシュしても古いデータが保持され、書き込み途中のファイルシステムが残ることはありません。スナップショットのコストはほとんどありません。スナップショットは、後続の書き込みで変更されなかったブロックの集合にすぎないためです。ZFS は Solaris 10 の初回リリースには含まれていませんでした。2006 年 6 月の Solaris 10 6/06 update でリリースされました。
Zones が 3 つ目の要素でした。1 つのカーネル上に、複数の分離されたユーザー空間を用意します。各ユーザー空間には、独自の root ファイルシステム、プロセステーブル、ネットワーク設定があります。Zones は 2004 年 2 月の Solaris 10 beta build に登場し、正式リリースに含まれました。FreeBSD は別の方向から先に同じ考えに到達しており、jails と Docker コンテナの比較は、カーネルレベルの分離が実際に何を意味するのかを理解する最も明確な方法です。Zones は現在も illumos で利用でき、少なくとも以下の 1 つのディストリビューションの基盤になっています。
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 です。そのため、ZFS on Linux は kernel source tree に統合されず、kernel の外部にある kernel module としてビルドされます。また、mainline kernel に含まれていません。この先の話で最も重要なのは、どの open license の下で公開するかという決定です。open source licensing の歴史では、企業がそのような決定をする理由を説明します。
Oracle が Sun を買収した後の経緯
Oracle は 2009 年 4 月 20 日、Sun を 74 億米ドルで買収すると発表しました。Sun の現金と負債を差し引いた買収額は 56 億米ドルでした。この買収は 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 が当初策定した charter に基づき、コミュニティの管理を Oracle に戻すことを決議しました。これにより、理事会は解散しました。
Oracle Solaris 11 は 2011 年 11 月 9 日にリリースされました。2017 年 9 月 2 日、Oracle は Solaris チームの大半を解雇しました。Oracle Solaris 11.4 は 2018 年 8 月 28 日にリリースされ、2026 年 7 月時点でも、support repository の更新を受ける現行リリースです。Oracle が 11.4 の lifetime support policy を最後に改訂したのは 2024 年 1 月です。この改訂では、Premier Support を 2031 年まで継続し、Extended Support を 2034 年から 2037 年まで延長しました。したがって Solaris は、公開されたサポート終了日を持ち、2018 年から現行であり続けている、サポート対象の商用製品です。
illumos の始まりと、fork と呼ばれる理由
2010 年 8 月 3 日、メモが流出する 10 日前に Garrett D'Amore が illumos を発表しました。この名前は、光を意味するラテン語の illum と、operating system を意味する OS を組み合わせたものです。プロジェクトでは、最初の文字だけを大文字にした 1 語として表記します。
対象は OS/Net で、通常は ON と表記されます。これは、kernel と主要な system utility をまとめた統合体です。OpenSolaris は、完全にオープンだったことはありません。Sun の外部では誰も再ビルドできない closed binary として提供される部分が複数ありました。C library (libc_i18n) 内の internationalisation code、NFS lock manager、cryptographic framework、LSI host bus adapter 用の mpt driver などの driver、一部の SPARC platform code が含まれます。ソースから build できない operating system は保守できないため、これらの置き換えがプロジェクトの最初の作業になりました。
D'Amore は fork という語の使用に慎重でした。彼は「OS/Net の追跡方法を理由に、現時点では fork ではない」と書き、Oracle の tree に追従し、変更を upstream に戻せる downstream repository について説明しました。その 10 日後、upstream は公開を停止しました。追跡対象がなくなったため、illumos は必然的に fork になりました。core tree である illumos-gate は 2026 年 10 月時点で 23,000 件を超える commit に達しており、現在も commit を受け入れています。
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 は同じ基盤を storage appliance に使用していました。これは illumos の母体となった commercial line です。
- Tribblix は Peter Tribble が保守する小規模なディストリビューションです。詳細は以下で説明します。
- DilOS は illumos kernel の上に Debian の package tooling を配置します。
現在の illumos システムのインストール
Tribblix が実用的な例となるのは、小規模で、公開ドキュメントがあり、現在もリリースされているためです。x86 向けの Milestone 41 は 2026 年 8 月 5 日に公開されました。SPARC 系列は 2026 年 9 月 23 日に Milestone 35 へ移行しました。これは、Milestone 34 のオペレーティングシステム上に gcc 10 などの新しいパッケージを追加した合成リリースです。ダウンロードする SPARC 用のインストール ISO は、現在も Milestone 34 です。プロジェクトは、自身を最新のコンポーネントを備えたレトロスタイルとして説明しています。また、より新しいパッケージシステムへ移行せず、Solaris が使用していた SVR4 パッケージ形式を維持しています。
インストールは 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 の利用経験がある場合、ここが最初に分かりにくい点です。ソフトウェアセットは overlay と呼ばれ、同じ行で名前を指定できます。
./live_install.sh -G c1t0d0 develop desktopインストール後に使用するパッケージツールは zap です。overlay を操作し、依存関係を自動的に処理します。
zap refresh
zap install-overlay develop
zap update-overlay -aこれらは Tribblix が公開しているコマンドです。管理下にある物理ハードウェアまたはハイパーバイザー上で実行します。VPS のコントロールパネルでワンクリックのイメージとして Tribblix を利用できるわけではありません。illumos システムの中では SmartOS が例外です。Joyent から SmartOS を引き継いだ MNX は、自社のクラウドコントロールパネルで「Linux、FreeBSD、SmartOS のいずれか」を選択できます(2026 年 10 月 12 日に確認)。それ以外では、プロバイダーのイメージ一覧に illumos イメージがあることはまれです。この空白が、2026 年における illumos のデプロイの実情です。
ZFS と DTrace が Solaris より長く残った理由
ZFS はソースコードが公開されると、ほぼすぐに Solaris を離れました。Pawel Jakub Dawidek が FreeBSD へ移植し、2008 年の FreeBSD 7.0 以降、システムの一部として提供されています。Linux 向けのネイティブ ZFS の開発は 2008 年に始まり、2013 年に最初の安定版がリリースされました。2010 年から 2013 年にかけて、illumos は ZFS ソースのリファレンスコピーを保持していました。Oracle のツリーは非公開で、他のすべての移植版は取り込む元を必要としていたためです。これが fork の具体的な価値です。fork がなければ、各移植版には統合の基準となる共通の祖先がありませんでした。
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 が最後に公開したバージョンである pool version 28 で停止し、placeholder version 5000 の下で名前付き feature flag を使う方式へ移行しました。これにより、プールは単一の番号ではなく、使用している機能を示します。Oracle は、ソースコードを非公開にしたまま独自のバージョン番号を増やし続けました。一方で version 28 を超えて作成されたプールは、もう一方の系統では import できません。どこで実行するかを選ぶ場合は、FreeBSD と Linux での OpenZFS の動作の違いで、2 つのホスト間で実際に何が異なるかを確認できます。
DTrace の移行先は、より少数でした。2009 年 1 月の FreeBSD 7.1 までに標準機能となり、Apple は Mac OS X 10.5 Leopard に追加しました。Oracle は 2017 年 8 月に DTrace の kernel code を GPLv2 で公開しました。この変更は 2018 年 2 月に広く知られるようになり、Linux に対するライセンス上の障壁を取り除きました。ただし、mainline kernel には統合されていません。実際の Linux tracing は eBPF 上で動作しており、bpftrace は DTrace の D に意図的に近い scripting language を提供します。
重要なのは Solaris 固有の話ではなく、一般的なパターンです。Sun は、他の人々がコピーを保持し、開発を続けられるライセンスで ZFS と DTrace を公開しました。開発費を負担していた企業が活動を停止しても、コードはすでに他のツリーと他の開発者の手元にあったため、開発は続きました。一方、非公開のままだった Solaris の部分は、その企業とともに失われました。illumos が書き直さなければならなかった closed binary もその一部です。これが open source 化によって変わる点であり、Linux ディストリビューションが相互に派生する仕組みも同じ原理に基づいています。
VPS で illumos を実行すべきか
ほとんどの場合、答えは「いいえ」です。上記の内容も、試すことを推奨するものではありません。illumos が対応するハードウェアの範囲は限られています。ドライバーの多くは Sun がサポートしていたものと、その後に小規模なコミュニティが作成したものだからです。ほとんどの VPS プロバイダーが提供するイメージは Linux と BSD だけです。例外は MNX です。MNX は Joyent から SmartOS を引き継ぎ、自社クラウドで Linux や FreeBSD とともに SmartOS を提供しています。それ以外では、通常、カスタムイメージを許可するプロバイダーに自分で ISO をアップロードし、仮想ディスクとネットワークデバイスが認識されるかを確認する必要があります。サードパーティーソフトウェアは、ディストリビューション独自のパッケージセットから導入するか、自分でコンパイルします。
illumos を実行する実際の理由もあります。維持しなければならない Solaris ワークロード、すでに運用している zones 環境、またはソースコードを読むことへの関心などです。上記のディストリビューションは保守されており、メーリングリストで質問にも回答を得られます。ただし、新しいサーバーの標準的な選択肢にすることとは別の話です。
ZFS を目的にこのページを読んでいるなら、ZFS を使うために illumos は必要ありません。OpenZFS を Linux または FreeBSD で実行してください。これらの環境ではパッケージ化、文書化、導入が広く行われています。同じ系統の BSD をサーバーで使うことを検討している場合は、サーバープラットフォームとしての Linux と FreeBSD の実用的な比較で、日常の運用で何が変わるかを説明しています。illumos はこれらのツールの起源であり、その出自を知ると動作の多くを理解できます。特に、zpool と zfs が 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 年以降にソースを公開していないため、2010 年以降の illumos コードに Oracle 由来のものはありません。
Linux はなぜ ZFS をカーネルに含められないのですか?
ライセンスの互換性がないためです。ZFS は CDDL でライセンスされており、Free Software Foundation は CDDL を GPL と互換性のない free software license に分類しています。この非互換性は 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 日にリリースされ、2026 年 7 月時点でも current release として support repository updates が提供されています。2024 年 1 月に 11.4 向けとして最後に改訂された Oracle の lifetime support policy では、Premier Support は 2031 年まで、Extended Support は 2037 年まで提供されます。Oracle は 2017 年 9 月 2 日に Solaris teams の大半を解雇しました。その後の 11.4 には、新しい major version ではなく support repository updates が提供されています。OpenSolaris のような形で full source が公開されているわけではありません。
VPS に illumos をインストールできますか?
場合によりますが、provider の image list からインストールできることはまれです。SmartOS を保守している MNX は、自社の cloud control panel から SmartOS を提供しています。それ以外では通常、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 を最初から読みやすくなります。