MINIX

MINIX（ミニックス）とは、1987年にオランダ・アムステルダム自由大学（蘭: Vrije Universiteit Amsterdam）の教授であるアンドリュー・タネンバウムが、オペレーティングシステム(OS) の教育用に執筆した著書、『Operating Systems: Design and Implementation』の中で例として開発した、Unix系のオペレーティングシステム (OS) である。Minixの名は"mini-Unix"から。 UNIXのソースコードがAT&Tのライセンス問題により非公開になったため、OSの教材用にUNIX version 7の互換システムを再設計したものである。UNIX互換だが AT&T のコードは1行も使用していないので、AT&Tのライセンスには縛られない。機能上の新しさはないが、マイクロカーネル構造を採用するなど、モダンな洗練が行われている。元々はIBM PCをターゲットとして開発されたが、その後Atari、Amiga、Macintosh、SPARCをはじめ、日本においてはNEC PC-9800シリーズにも移植された。Minix は、Monix という名称から変更されたものである。 2014年9月の3.3.0を最後にリリースは途絶えており、作者のアンドリュー・タネンバウムも同年に大学を去っていることから、2023年には開発が事実上終了していると報じられている。 初期のバージョンは非常にコンパクトであり、フロッピーディスク単体での運用もできた。2005年にリリースされたMINIX 3では動作にハードディスクを要するものの、割り込みハンドラ、プロセススケジューラ、プロセス間通信機能などを含むマイクロカーネル本体のソースコードは4000行弱に抑えられている。 1987年のリリース当初からすべてのコードは公開されていたがオープンソースではなかった。これは出版社であるPrentice Hall の意向と、タネンバウム自身による「MINIXはあくまで教育用のホビーであり、実用が目的ではない」という考えによる。とりわけ特徴的なのは、MINIXには仮想記憶が実装されていなかったことである。 なお、ライセンスは2000年に変更されて、過去のソースコードも含めてBSDライセンスが採用されるようになった。また、バージョン 3.2.0 からはNetBSDとの親和性を深め、コンパイラ、ブートローダー、ユーザーランドの置き換えを順次進めている。 MINIXの「実用を目的としない」というポリシーに対し、ニュースグループ comp.os.minix において、MINIXを実用に耐えるOSにしようという試みが提示された。しかし、タネンバウムは機能を追加することに否定的だったため、リーナス・トーバルズは新たにOSを作ることを決断し、1991年10月にはついにLinux version 0.02がリリースされるに至った。 これに対し、タネンバウムはLinuxの設計に対する批判を展開し、論争が起こった（アンドリュー・タネンバウムとリーナス・トーバルズの議論）。 結果として、後発のLinuxやFreeBSDの方が広く普及することとなったが、MINIXのソースコードはコンパクトで初学者にも読みやすく、教材としての目的は十分に達しているといえる。 タネンバウムは、アムステルダム自由大学で、MINIXを彼の教科書『オペレーティングシステム: 設計と実装』（1987年）で示されている原理を例示するために作成した。 おおよそ12,000行で構成されたCによって書かれたMINIX 1.0のカーネル、メモリマネージャ、ファイルシステムのソースコードは教科書の中に印刷されていた。Prentice Hallはまた、MINIXのソースコードとバイナリをリファレンスマニュアル付きでフロッピーディスクに収めリリースした。MINIX 1はSeventh Edition UNIXとシステムコールの互換性がある。 タネンバウムは当初、MINIXをIBM PCとIBM PC/ATマイクロコンピュータに互換性を持つように開発していた。 MINIX 1.5は1991年にリリースされ、IBM PS/2マイクロチャンネルシステムへのサポートを含み、Motorola 68000とSPARCのアーキテクチャに移植された。MINIX 1.5は、Atari ST、Commodore Amiga、Apple Macintosh、Sun SPARCstationの各プラットフォームをサポートする。また、非公式のポートとして、Intel 386（32ビットプロテクトモード）とNational Semiconductor NS32532、ARM、Inmos transputerプロセッサーに対するものがあった。 68-kベースのアーキテクチャへの需要の衰退により、1997年にリリースされたMINIX 2.0はx86とSPARCへのみ提供された。MINIX 2.0はタネンバウムのテキストの第2版の主題であり、Albert Woodhullとともに開発され、テキストに同梱されたCD-ROMに収録された。MINIX 2.0はPOSIX.1に準拠し、32ビットモードの386プロセッサをサポートしたほか、MINIX 1.5に含まれたAmoebaネットワークのプロトコルを、TCP/IPスタックで置き換えた。 Minix-vmdは、アムステルダム自由大学の研究者によって作成されたIA-32プロセッサ用のMINIX 2のバリアントで、仮想メモリとX Window Systemのサポートを追加した。 MINIX 3は、2005年10月24日、タネンバウムよってACMシンポジウムにおいてアナウンスされた。このOSは、依然としてタネンバウムとWoodhullのテキストで用いられていたが、これは「限られたリソースのシステムや組み込みコンピュータ、また高い信頼性を要求するアプリケーションで使える」ことを目指して包括的に再設計された。また、デスクトップ環境のEDEがオプションのパッケージとして利用可能となっている。 MINIX 3は、現在IA-32とARMアーキテクチャのシステムをサポートしている。OSはLive CDのフォーマットで提供され、これはコンピュータにインストールすることなしに試すことができる。また、様々なバージョンの仮想化システム（Bochs、QEMU、VMware、VirtualBox、Virtual PCを含む）にも対応している。 バージョン3.1.5は2009年11月5日にリリースされ、X11、emacs、vi、cc、gcc、perl、python、bash、zsh、ftp、ssh、telnet、pineなど400を超えるUNIXのユーティリティプログラムを利用することができる。X11の追加により、このバージョンはテキストのみのシステムからの移行を示す。多くの場合、実行中のプロセスに影響を与えることなく、クラッシュしたドライバを自動的に再起動することができる。このようにMINIXは自己修復機能を持ち、高い信頼性を必要とするアプリケーションでも使用することができる。MINIX3はまた、仮想メモリ管理をサポートしており、これはデスクトップOSとしての利用に適している。 バージョン3.2.0では、ユーザーランドの大部分がNetBSDのものに置換され、pkgsrcのサポートが追加された。これは、MINIXで利用できるソフトウェアの数を増加させた。また、Clangは以前のコンパイラを置き換え、GNUデバッガであるGDBが移植された。 続くMINIX 3.3.0は、2014年9月にリリースされ、ARMがサポートされた。 2016年1月にはMinix 3.4.0RC(リリース候補)が利用可能になったが、MINIX 3.4.0の安定版リリースはまだ発表されていない。 MINIXは、C、C++、FORTRAN、Modula-2、Pascal、Perl、PythonやTclなどを含むプログラミング言語をサポートしている。また、MINIX 3の開発コミュニティは2016年のMINIXCon 2016に50人以上が出席するなど、いまでも活動中の状態である。 2015年以降のすべてのIntelチップセットは、Intel Management Engine (英語版) のソフトウェアコンポーネントとして内部的にMinix 3を実行している。 MINIXの最初の開発時には、そのライセンスは比較的自由であった。ライセンス料は他のオペレーティングシステムに比べて非常に少額(69ドル)であった。タネンバウムはMINIXを学生ができるだけアクセスしやすくすることを望んだが、彼の出版社は自由にコピーできる素材(ソースコードなど)を提供したくなかったため、わずかな料金を要する制限的ライセンス(タネンバウムの本の価格に含まれている)が妥協案として適用された。これにより、MINIXを自由に配布されるソフトウェアシステムの基礎として使用できなくなった。 1990年代初頭にLinuxや386BSDのようなフリーでオープンソースのUnixライクなオペレーティングシステムが利用できるようになると、多くのボランティアのソフトウェア開発者たちはMINIXを放棄してこれらのオペレーティングシステムを支持した。2000年4月、MINIX 2はパーミッシブ・ライセンス(BSDライセンス)のもとでフリーでオープンソースのソフトウェアとなったが、この時点までに他のオペレーティングシステムがその能力を超えており、主に学生やホビイストのためのオペレーティングシステムであり続けた。