Previous Next Table of Contents

2. 定義と概要

2.1 Hurd とは何ですか?

GNU Hurd は、 GNU プロジェクトによって UNIX カーネルに取って換わるものとして開発されたものです。 Hurd は Mach マイクロカーネル上で実行されるサーバの集合であり、 これらのサーバ群が、 ファイル・システム、 ネットワーク・プロトコル、 ファイル・アクセス制御、 さらに、 UNIX カーネルやその類似カーネル (例えば、Linux) によって実装される他の機能を実装しています。

2.2 「Hurd」という言葉は何を表しているのですか?

「Hurd」は "Hird of Unix-Replacing Daemons" の略です。 一方、 「Hird」は "Hurd of Interfaces Representing Depth" の略です。

Thomas Bushnell 曰く: 「これは私の知る限り、 相互に再帰的に参照しあう一対の頭字語によって名前を付けられた最初のソフトウェアである」

2.3 Linux や 386/BSD が既にあるにもかかわらず、なぜわざわざ新しい OS を書くのですか?

1つには、 Linux や BSD のスケーラビリティは良くないということがあります。 ハードウェアの設計者たちは、 性能を向上させるためにますますマルチプロセッサ・マシンの方向へシフトしています。 その一方で、 標準の UNIX カーネルはマルチプロセッサに対するサポートをあまり提供していません。 これに対して Hurd は、 CMU の Mach 3.0 マイクロカーネル上で動作するものです。 Mach は、 まさにマルチプロセッサ・マシン用に設計されたものであり、 その可搬性(ポータビリティ)は、 うまく Hurd にも引き継がれているはずです。

さらに、 Hurd は通常の UNIX よりもかなり柔軟かつ堅牢なものになるでしょう。 UNIX カーネルが提供する機能は、 そのようなことが可能な場合には常に、 非特権空間の方へ移動されてきました。 ひとたび非特権空間の方へ移動してしまえば、 これらの機能に取って換わるカスタム・バージョンを開発したい人は誰でも、 実際にそのような開発を行うことができます。 ユーザは、 そのようなことをしてみたいのであれば、 独自のファイル・システム、 独自の `exec' サーバ、 独自のネットワーク・プロトコルを開発して使うことができるようになります。 しかも、 このようなことすべてを、 他のユーザの邪魔になることなく行うことができます。

今では Linux カーネルも変更されて、 ユーザ・レベルのファイル・システムが使えるようになりました。 人々が実際にこのような機能を使うようになるであろうという証拠があるわけです。 しかし、 このようなことは行うのは Hurd の方がはるかに簡単です。 なぜなら、 Hurd はそのほとんど全体がユーザ空間で実行されますし、 さまざまなサーバがこのような変更を想定して設計されているからです。

2.4 Mach 3.0/4.0 とは何ですか?

Mach 4.0 は Mach 3.0を機能拡張したバージョンであり、 ユタ大学(University of Utah)の人々によって開発されたものです。 彼らは別のフリーなオペレーティング・システムに取り組んでおり、 その一部分として、 機能拡張され、 より柔軟になったバージョンの Mach が含まれているのです。 Hurd は Mach 4.0 に移行しましたが、 これは良い選択でした。 Mach 4.0 は 3.0 と比較するとビルドするのがはるかに簡単だからです。

後の質問の回答に示される Hurd のページ、 あるいは、 以下に示す Mach Project や Flux のホームページをブラウズすれば、 Mach に関するさらに詳しい情報を見つけることができます。

詳細については、 The Mach Project Home PageThe Mach 4 Project を参照してください。

2.5 マイクロカーネルとは何ですか?

マイクロカーネルとは、 すべての「現実の」オペレーティング・システムが共通して提供する機能、 例えば、 メモリ管理、 プロセス間通信、 プロセス、 その他もろもろの機能を提供するものです。 したがって、 より解説調の言葉を使うとすれば、 最大公約数カーネルということになるかもしれません。 残念ながら、 これらの機能にアクセスするために使われるシステム・コールと、 よく知られていて人々がいつも念頭に浮かべる UNIX のシステム・コールというものとの間には、 明確な関係はほとんどありません。 "fork"、 "wait"、 "sleep" のようなシステム・コールはありませんし、 SIGHUP もありません。 このようなものは一切存在しないのです。 このような事情が、 例えば GNU Emacs を Mach へ移植するような作業を多少困難にしています。

2.6 GNU Hurd はどのようにマイクロカーネルを使っていますか?

マイクロカーネルを有用なものとするための1つの方法は、 それに UNIX カーネルをエミュレートさせることです。 こうすると、 UNIX プログラムは (それらプログラムの認識では) POSIX のシステム・コールや機能を利用することができるわけですが、 実際には、 それらのプログラムはマイクロカーネルのシステム・コールや機能を利用しているのです。

こういうことを実現するための一番単純な方法は、 通常の UNIX カーネルを持ってきて、 その中を調べ、 マシン固有な部分を切り出すことです。 UNIX カーネルがマシン固有な仕組みを利用しているところがあれば、 そのコードをすべて Mach マイクロカーネルへの呼び出しに置き換えます。 こうして出来上がる模造カーネルを Mach のマシン上で実行すれば、 外見も振る舞いも(GNU Emacs にとってすら) UNIX と同じように見えるような何かが手に入るわけです。 このように実装された UNIX カーネルは実際には非常に規模の大きい Mach プログラムに過ぎないということに注意してください (このようなプログラムを、 シングル・サーバと呼びます)。

これに対して Hurd では、 巨大な UNIX カーネルを、 デーモンとして実行されるいくつかの Mach プログラムに分割します。 C ライブラリの中で提供されている機能と協調することにより、 これらのデーモンは、 POSIX のシステム・コールや機能をすべて提供します。 外部から見れば、 これらは1つの標準的な UNIX カーネルのように見えます。 実際的には、 Linux に移植することのできるプログラムはすべて Hurd にも移植することができるであろう、 ということをこれは意味しています。

もちろん、 ユーザが独自のデーモンを実行したいのであれば、 そうすることも可能です....

2.7 Hurd を Linux の上で実行することはできますか?

ことによるとできるかもしれません。 現在のところ、 Linux はマイクロカーネルではありません。 ですから、 現時点における適切な回答は「できません」ということです。 その一方で、 このようなアイディアをサポートする人々もいます。 実際に問うべきことは、 「Linux はマイクロカーネルに成りえるか」 ということですが、 そのような問いはこのドキュメントの対象外です。 この点に関するより詳しい情報については、 Linux FAQ を調べて、 このような質問をするのに適切なメイリング・リストかニュースグループを探すべきでしょう。

Apple/Open Group's MkLinux を見てみると面白いかもしれません。 これは Mach(マイクロカーネル)をベースとする Linux です。

2.8 さらに詳しい情報はどこから手に入りますか?

FSF の GNU Hurd Information のページ、 Unofficial GNU Hurd Page、 および、 Trent Fisher's Hurd Page (彼はこのページを GNU のサイトに移行中です) をチェックしてください。 また、 以下のメイリング・リストに参加したり質問を送ってみたりするのもよいかもしれません。

debian-hurd@lists.debian.org

これは、 GNU/Hurd の Debian リリースのディスカッション・リストです。 Debian のディストリビューションに関するコメントや質問はここに送ってください。 このリストへの参加要求は、 debian-hurd-request@lists.debian.org に送ってください。

help-hurd@gnu.org

これは、 GNU Hurd カーネルのディスカッション・リストです。 GNU Hurd カーネルに関するコメントや質問はここに送ってください。 このリストへの参加要求は、 help-hurd-request@gnu.org に送ってください。

bug-hurd@gnu.org

これは GNU Hurd のバグに関するリストです。 GNU Hurd カーネルに関するバグ・レポートはここに送ってください。 このリストへの参加要求は、 bug-hurd-request@gnu.org に送ってください。

hurd-announce@gnu.org

GNU Hurd に関するアナウンスがここに送られます。 このリストへの参加要求は、 hurd-announce-request@gnu.org に送ってください。

2.9 こいつはカッコイイ!どうすれば手伝えますか?

参加するのに最もよい方法は、 上記のメイリング・リスト上でのディスカッションに参加することです。 もし、 Hurd ないしは Hurd の Debian ディストリビューションの何らかの部分で、 コーディング、 ポーティング、 ハッキングをすることに決めたら、 何に取り組むつもりなのかを書いてリストに送ってください。 そうすれば、 誰が何に取り組んでいるかを示す記録として残ることになります。


Previous Next Table of Contents