代替OS (PC用)

(2004.10.11ページを分離、新規作成。)

(2005.10.16更新、2006.6.15更新。)

PCで動くフリーのOSをいろいろ試してみる。PCで動く、ということで、多くの組み込みOSは対象から除く。試せないし。

サブページ

OS開発の方向性

Haiku BeOS風

AROS AmigaOS 3.1互換OS.

MINIX 3 マイクロカーネルUNIX.

Plan 9

Debian GNU/Hurd

別セクション

Linuxディストリビューションあれこれ

FreeBSD FreeBSDの派生ディストリビューションや, ZFSについてもこちら。

いろいろなOS

@ その他のBSD系

いずれも、カリフォルニア大学バークレー校 (UCB) で開発された4.4BSD Lite をベースに開発されている。

NetBSD

配布サイト:
The NetBSD Project
ライセンス:
修正BSDライセンス

大変移植性に優れたUNIX OS。非常に多くのプラットフォームをサポートしている。Platforms Supported by NetBSD

OpenBSD

配布サイト:
OpenBSD
ライセンス:
修正BSDライセンス

徹底してセキュリティにこだわったUNIX OS。

@ OpenSolaris

(2008.3.10 追加。)

Sun Microsystems社のUNIX OS、Solarisをオープンソース化したもの。バイナリ版はSolaris Express。

(2011.8) Sun MicrosystemsはOracleに買収され,SolarisもOracleのプロダクトになりました。その後、OracleはOpenSolarisのソース公開を終了しました。

コミュニティベースの活動は illumos に引き継がれています。illumosはOSカーネルで、デスクトップ環境などを加えたディストリビューションとしては、例えば OpenIndiana があります。

@ Syllable

Syllable - News

AtheOS (開発終了) から派生したOS。ライセンスはGPL, ホーム向け、GUI付き。POSIX互換を目指しているから、UNIX OS + GUIという組み合わせ。

libcにglibcを採用し、UNIX (POSIX) との互換性は高い。

GUIは独自。Xウィンドウでもないかな?

ブートローダはGRUB。

独自のWebブラウザを持つ。

glibc 2.4を採用。

@ Inferno

(2005.10.16)

ユーザーモードOS。ホストOSの上で仮想的なOSとなる。位置づけとしてはJava VMに近い。ホストOSとしては、Windows, UNIX OS (Solaris, UnixWare, Linux, FreeBSD, HP-UX, Irix), MacOS X, Plan9が利用できる。

配布サイト:
Inferno
ライセンス:
Lucent Public License (OSI certified), 商用ライセンスのデュアルライセンス

インストールCD-ROMイメージがダウンロードできる。ブータブルCDではない。

Windows XPにインストールしてみた。インストールは、CD-ROMをマウントして、install/setup.exe を実行する。インストール後の大きさは141Mバイト。

emuコマンド(<インストール先>/NT/386/binにある)にインストール先ディレクトリをオプションとして付けて実行する。

emu -rf:\inferno

シェルが起動する(プロンプトは';')。/dis/wm/wm でウィンドウが開く。

(2005.10.16)

@ L4

(2005.6.11 この節を追加。)

L4は非常に小さなマイクロカーネル。システムコールは次のものしかない。APIとしては、これらを利用したサポート関数がいろいろ加わるが、それでも非常に少ない。

L4 eXperimental Kernel Version X.2 Revision 6 (June 8, 2005)

#include <l4/kip.h>
void * KernelInterface (Word& ApiVersion, ApiFlags, KernelId)
#include <l4/thread.h>
ThreadId ExchangeRegisters (
    ThreadId dest, 
    Word control, sp, ip, flags, UserDefinedHandle, 
    ThreadId pager,
    Word& old_control, old_sp, old_ip, old_flags, old_UserDefinedHandle, 
    ThreadId& old_pager)
Word ThreadControl (ThreadId dest, SpaceSpecifier, Scheduler, Pager, 
    void* UtcbLocation)
#include <l4/schedule.h>
Clock SystemClock ()
void ThreadSwitch (ThreadId dest)
Word Schedule (ThreadId dest, 
    Word TimeControl, ProcessorControl, prio, PreemptionControl, 
    Word& old_TimeControl)
#include <l4/ipc.h>
MsgTag Ipc (ThreadId to, FromSpecifier, Word Timeouts, ThreadId& from)
MsgTag Lipc (ThreadId to, FromSpecifier, Word Timeouts, ThreadId& from)
#include <l4/space.h>
void Unmap (Word control)
Word SpaceControl (ThreadId SpaceSpecifier,
    Word control, 
    Fpage KernelInterfacePageArea, UtcbArea, 
    ThreadId Redirector, 
    Word& old_Control)
#include <l4/misc.h>
Word ProcessorControl (Word ProcessorNo, InternalFrequency, ExternalFrequency, voltage)
Word MemoryControl (Word control, Word& attributes[4])

L4カーネルだけだとあまりに小さいので、その上でファイルシステムサーバなど各種サーバ群を動かす。例えば、L4Linuxは、L4カーネル上でL4Envサーバを動かし、さらにその上にユーザモードLinuxを動かしている。

配布サイト:
L4Linux
ライセンス:
L4は?、L4Env はGPLv2

(クリックすると拡大します)

@ Mona OS

ひげぽん氏が中心となって開発している、C++で書かれたマイクロカーネルOS。標準のシェルは Scheme (Lisp) ベース。

配布サイト:
MonaOS - Free Operating System
ライセンス
MIT/X ライセンス

@ es オペレーティングシステム

(2007.10.24追加、2007.11.29更新。)

任天堂が研究用に開発しているOS。

スライドなどを見ると、

  • マイクロカーネル
  • プロセス間呼び出しは、IDLを定義し、オブジェクトのメソッドに対するRPCで行う。(単なる関数呼び出しではない。)
  • カーネルのAPIもIDLで定義する。
という感じ。

Squeak が es 上で動く。

es-demo 0.1.0 を qemuで動かしてみました。アーカイブをダウンロード、展開して、

$ qemu -hda hdd.img -serial stdio -soundhw sb16

起動中のメッセージを見ると、PCIバス、PS2マウス、Sound Blasterなどを認識しています。ファイルシステムはFAT32のようです。バイナリの形式はELFか。シェルで入力待ちになります。

squeak とタイプすると、Squeak 3.7 が起動します。エミュレータなので動きがモッサリしていますが、きちんと動いています。素晴らしい。

(クリックすると拡大します。)

@ FreeDOS

配布サイト:
FreeDOS | The FreeDOS Project
ライセンス:
GPL

MS-DOS互換のフリーOS。

@ ReactOS

(2008.3.10 追加。)

Windowsのバイナリ互換を目指すフリーOS。アプリケーションとドライバの両方の互換性を確保しようとしている。

ユーザランドのほうはWineをそのまま利用しているみたい。

@ Amoeba

(2005.10.15)

配布サイト:
Distributed Operating System Amoeba - Fireball Software Distribution
ライセンス:
BSD

分散OS。ただし、開発は終了している。

ISOイメージがダウンロードできるが、CD-ROMからはブートできない。CD-ROMをマウントしてfloppiesディレクトリの各ファイルをFDに書き込んで、FDからブートする。

@ JNode

(2008.3.11 追加。)

ほとんどすべてをJavaで作ったOS。カーネルの一部に若干、アセンブラが含まれるらしい。

サイトのスクリーンショットを見るとJavaプログラムがそのまま動くようだったので、試してみました。

JNode バージョン0.2.6 を QEMU 0.9.0 で動かしました。結果は、コンソールでは起動できるものの、GUIモードにはできませんでした。

外部リンク

Nishi Tokyo Diary(2004-09-03)
Linuxディストリビューションの欠点比較。Debian、Fedora、Gentooのダメな点を列挙。結構、当を得てる。
Benchmarking BSD and Linux
Linuxカーネル2.4, 2.6, OpenBSD 3.4, FreeBSD 5.1, NetBSD 1.6.1のスケーラビリティ・性能調査。2003年10月現在。