Debian GNU Hurdに関するFrequently Asked Questions(日本語訳)

この文章は、Debian GNU Hurdを語り、インストールし、使用し、コンパイルし、 開発をする上で、使用者を悩ませる問題についての答えとなるべく作成されまし た。Debian GNU Hurdに関して、何らかの助けを求める前に、必ずこの文章を読 んでください。

Debian GNU Hurdは現在開発中であり、stableなヴァージョンは未だリリースさ れていません。以下のことに留意してください。未だ完成していない部分が沢山 あります。バグを見つけるかもしれません。システムがクラッシュするかもしれ ません。しかし、言い換えれば、様々なレベルにおいて、貢献をする余地がある ということでもあります。つまり、HurdやMachを適切であるように開発し、アプ リケーションを移植し、ドキュメントを記述し、そして最も重要なこととして、 Userとしてのフィードバックをすることができるということです。

このドキュメントには記述されていない質問があり、記述の必要があると考えた 場合には、それを、可能であれば回答とともに、提出してください。

                                                     Neal H Walfield
						     neal@cs.uml.edu
[訳注]
日本語訳に関する意見がある場合には、翻訳者に提出するようにお願いします。
		       日本語訳: mihi~star <mihi@childstar.club.ne.jp>

Table Of Contents


1 一般的な事柄について

1.1 マルチサーバ・マイクロカーネルとは何でしょうか。

{NHW} マイクロカーネルとは、カーネルの大きさとは何の関係もありません。実 際には、カーネルが提供する機能のことを意味しています。一般的には、プロセ ス同士が交信するインタフェイスや、ハードウェアと通信するための方法の組み 合せであると言えるでしょう。 次に、``ソフトウェア・ドライバー''、と呼ぶのを私は好むのですが、がサーバ としてユーザ・スペース上に実装されます。わかりやすい例としては、TCP/IPの スタックや、ext2ファイル・システムや、NFSのサーバが挙げられます。 Hurdの場合においては、ユーザは、モノリシック・カーネルの場合には用いるこ とができなかった、カーネルの機能そのものを用いることができます。サーバが、 ユーザ・スペースにおいて、ユーザが開始したとおりに動作するためです。 ユーザは、例えばftpファイル・システムを、自分のhomeディレクトリにおいて マウントすることができるようになります。

Hurdの設計理念については、以下から入手できるThomas BushnellのBSG's paper ``Towards a new strategy on OS design''を読んでください。

	http://www.gnu.org/software/hurd/hurd-paper.html

1.2 Hurdとは、どのような意味を持っているのでしょうか。

{NHW} Hurdという名称は、``Hird of Unix Replacing Daemons.''を意味してい ます。逆にHirdという名称は、``Hurd of Interfaces Representing Depth.''を 意味しています。

カーネルの話をする場合には、``Mach''という言葉を固有名詞として用います。 例えば、``the GNU Machカーネルは、ヴァージョン2.0.xのthe Linuxカーネルの デヴァイス・ドライバを使用している''といったようにです。

サーバの話をする場合には、``The Hurd''を用います。例えば、``ext2ファイル・ システムの機能は、the Hurdによって提供されているのであって、Machによって 提供されているわけではない''といったようにです。``HURD''、``The HURD''、 又は``hurd''と呼ぶのは、間違いであることに注意してください。

オペレーティング・システムの概念としての表現には、``GNU Hurd''を用います。 例えば、``現在のところ、DebianはGNU Hurdの唯一の配布物である''といったよ うにです。

また、``Debian GNU Hurd''という呼び方もあります。これは、Debianの開発者 達によって作成された配布物を意味しています。例えば、``laptopでは何を使っ てる?もちろん、Debian GNU Hurdさ''といったように用います。

フランス語を用いている人は、``le Hurd''という呼び方をする傾向があります。 これは、頭文字を大文字にした男性単数名詞です。

1.3 どのようなメイリングリストがありますか。

{NHW} 主要なメイリングリストとしては、以下の4つが挙げられます。

通常のマナーに基づいて、講読してください。

1.4 どこにバグ・レポートを送ればいいのでしょうか。

{NHW} Debianのバグ追跡システムを使用してください。バグ追跡システムについ ては、 http://www.debian.org/Bugs/ に詳細な情報があります。

1.5 TODOリスト(未だ未完である事柄のリスト)はありますか。

{NHW} はい。実際のところ、いくつかのものがあります。

1.6 次のリリースは何時ですか。

{NHW} 誰にもわかりません。しかしながら、the Hurdが現在においても動作可能 なものであることは確実です。我々の力になってください。

1.7 `/usr'が、`.'へのシンボリック・リンクになっているのは何故ですか。

{MB} `/'と`/usr'が区別されているのは、歴史的な経緯を理由としています。 Unixのシステムが2つの磁気テープから起動されていた頃には、root用の小さな テープと、user用の大きなテープが用いられていたのです。今日では、通常これ らの2つの領域のために2つのパーティションを用いています。しかし、Hurdにお いては、これらの歴史的な無意味な区別は廃止されることになりました。私達は、 shadowファイル・システムと呼ばれる、より柔軟な解決方を見出しました。ただ し、残念なことに、shadowファイル・システムは現在のところ実装されていませ ん。

2 インストールについて

2.1 どこでDebian GNU Hurdを入手すればいいのでしょうか。

{NHW} GNU Hurdは公式なDebianのunstable配布物の一部であるため、localの Debianミラー・サイトにおいてバイナリ配布物を見出すことができるでしょう。 ただし、残念なことにハックが必要で、ソース・コードから簡単にオート・コン パイルすることができない幾つかの重要なパッケージもあります。それらは、以 下において見つけることができるでしょう。

	ftp://alpha.gnu.org/pub/hurd/debian.

インストールが終了すれば、/etc/apt/sources.listsに以下の例のような行を加 えることによって、aptがそれらのアーカイブを使用するように指定することが できます。

	deb ftp://alpha.gnu.org/pub/gnu/hurd/debian unstable main
	deb http://http.us.debian.org/debian unstable main

全てのパッケージをダウンロードするには、非常に長い時間がかかります。 (1ギガバイトを超えるファイルがあります。)Philip Charles氏がDebian GNU HurdのCD-ROMイメージを作成しています。以下のサイトに、取り扱っている 者のリストがあります。

	http://www.debian.org/ports/hurd/hurd-cd

2.2 どのようにして、Debian GNU Hurdをインストールすればいいのでしょ うか。

{NHW} 以下のインストールの手引を読んでみてください。最新の手引は以下にあ ります。

	http://web.walfield.org/papers/hurd-installation-guide/

2.3 どのようなハードウェアがサポートされていますか。

{NHW} 現在のところ、GNU HurdはIA32アーキテクチャ上でのみ動作します。しか しながら、他のアーキテクチャに対しての移植は難しくはないでしょう。ソース・ コードは、常に移植性を視野に入れて書かれています。

ドライバに関しては、GNU Machは、Linux 2.0.xカーネルからのドライバ副群を 用いています。比較的完全に近いハードウェアの互換性のガイドは以下にありま す。

	http://www.urbanophile.com/arenn/hacking/hurd/hurd-hardware.html

問題が生じるとすれば、おおよそ以下のようなものでしょう。

前者の場合には、デヴァイスを取り除くか、BIOSを操作することによって、 Hurdを起動することができます。後者の場合には、GNU Machがカーネルのローダ ブル・モジュールをサポートしていないため、新たなカーネルをコンパイルし、 実際に必要としているデヴァイス・ドライバのみを使用するようにします。

2.4 GNU Hurdのパーティションとしては、どのようなパーティション形式を 用いれば用いればいいのでしょうか。

{MB} ext2ファイル・システムを使用してください。或いは、BSD形式のufsを用 いることも可能です。ただし、ext2fsのパーティションの形式番号には0x63 (GNU HURD)ではなく、0x83(Linuxと同じ値です)を用いてください。 Thomas氏が0x63を用いてはいけない理由を説明しています。

	将来、GNU Hurdファイル・システムと呼ばれるであろう、新たなファイ
	ル・システム形式が用いられるようになるかもしれませんし、その際に
	は、このパーティション形式番号を用いるのがいい、ということになる
	かもしれません。

又、Roland氏が説明したこととは別に、当該番号をext2fsに用いるのは常に誤り です。

2.5 それぞれのパーティションは、どのように呼ばれますか。

{MB,NHW} 当然の質問ですね。このFAQの項目を1つだけに減らせと言われたら、 この質問を選んだでしょう。割り当ては非常に簡単な法則に従っていますが、通 常の割り当ての慣習とは異なる部分が幾つかあることを憶えておく必要があるで しょう。

まず、Hurdに関しては、ディスクがSCSIディスクであるならば、SCSIデヴァイス 番号を知っている必要があります。また、IDEディスクであるならば、ディスク がどのコントローラの、マスター側とスレイブ側のどちらに繋がれているかを知っ ている必要があります。Hurdは、BSD形式の割り当て方法を用いています。それ ぞれのディスクは、各々の物理的な位置に基いた番号を0から割り当てられます。 この割り当て法則は、Linuxにおけるものとも極めて類似しています。この場合 には、プライマリ・コントローラのマスター側は`hda'と呼ばれ、スレイブ側は `hdb'と呼ばれいます。セカンダリ・コントローラについては、マスター側とス レイブ側は、それぞれ`hdc'、`hdd'と呼ばれます。Hurdに関しては、`hda'は `hd0'となり、`hdb'は`hd1'と呼ばれることになります。他のデヴァイスも同様 です。

Hurdにおいては、BSDと同じく、パーティションは`スライス'と呼ばれ、1から始 まる番号を割り振られます。ですので、特定のパーティションを指定する際には、 ディスクの名称に`s'とパーティション番号を付加します。この方法も、`s'を付 加することを除けば、Linuxと類似しています。例えば、`hda1'は`hd0s1'になり ます。

ブート・ローダに使用されるGRUBは、全く異なった命名法を用います。Grubはディ スクをBIOSから検知し、それぞれのディスクを順番に行列に附加します。それぞ れのディスクとパーティションは、0から始まる行列によって特定されます。そ の書式は`hd (<disk>, <partition>)'という形式に従います。例えば、`hd (0, 1)'は、BIOSによって最初に検知されるディスクの、2つめのパーティション を指定しています。現在のGrubは、タブ・キーによる補完機能を有しているので、 推測に苦労することもないでしょう。

2.6 1GBより大きなパーティションをMountできますか。

{MB} 現在の所不可能です。それ程難しいことではありませんが、ファイルシス テム・サーバが、全てのstoreをメモリにマップしないように変更を加える必要 があります。大きなファイルを用いるには、幾つかのインタフェイスを変更する 必要があります。これは、前者に比べて多少難しいかもしれませんが可能です。

2.7 どの程度のスワップ領域を用意すればいいのでしょうか。

{NHW} 一般的に、沢山です。スワップ領域が不足してしまうと、Machはpanicし ます。私が使用しているマシンについては、最低でも128MBのRAMと256MBのスワッ プ領域を用意するようにしています。

2.8 LinuxとHurdとの間で、スワップ領域を共有することはできますか。

{NHW} 可能です。デフォルトのページャは、Linuxのスワップ領域を認識し、優 先的に用いるようになっています。また、rawパーティションにスワップしよう とする場合もあります。つまり、Linuxのスワップ領域が見つからない場合に、 そうなる場合があるということです。ですので、気をつけるようにしてください。

2.9 ``Operation not permitted error''になるのは何故でしょうか。

{MB} Hurdが使用するファイル・システムのownerを``Hurd''にするのを忘れてい ないでしょうか。Hurdは、トランスレータを設定するにあたって、inodeの附加 的な情報を使用します。この操作を行うには、パーティションが``owned by the Hurd''の状態になっている必要があります。他のオペレーティング・システ ムからext2ファイル・システムを作成する際には、通常`mke2fs'を実行する際に、 `-o hurd'を引数として与えることによって、このようにすることができます。 (Hurdによって作成されたファイル・システムは、自動的にこのオプションを用 いるようになっています。)また、このオプションを付けわすれた場合には、 `e2os'スクリプトを用いることができます。

2.10 `native-install'が終了した後で、ここののよよううににタイプしなけ ればならなくなったのは何故でしょうか。特に、rebootするには `rreebboooott'とタイプしなければなりませんでした。

{MB} おもしろいですね。インストールの際に用いられた`/tmp/console'にある rescue `term'サーバの他に、他の`term'サーバが開始し、キーボードからの入 力を横取りしていたのでしょう。rebootした後は、`term'サーバが一つだけにな るので、この問題はなくなります。`tar'がトランスレータを取り扱うことがで きてるなら、この問題は起らないかもしれません……。インストールの際に、こ の問題を経験しなかったとしても、突発的にこのバグに出くわさないようにすぐ にrebootした方がいいでしょう。

3 セットアップについて。

3.1 スワップ領域を追加するにはどうしたらいいでしょうか。

{MB} スワップ領域は、ページング・ファイルとも呼ばれます。通常は、Linuxの 場合と同じように、`/etc/fstab'にスワップ用のパーティションを追加するだけ で足りるでしょう。Linux用のスワップ領域を使用することが可能ですし、 HurdはLinuxの(両方のヴァージョンの)スワップ・シグネチャを優先します。 Hurdは、他のrawなディスク領域にスワップし、内容を上書きしようとすること があります。注意してください。

特定のファイルにスワップしようとする場合や、Linuxのスワップ・シグネチャ が最初にチェックされることを確実にしたい場合には、`/boot/serbers.boot'ファ イルを編集する必要があります。書式として、パーティションのデヴァイス・ファ イルの名称に加えて、ext2fsパーティション内のファイルの名称が用いることが できます。それぞれには、スペースと`$(add-raw-paging-file)'、 `$(add-linux-paging-file)'又は`$(add-paging-file)'のうちの一つが続きます。 最初のオプションをパーティションやファイルに対して用いた場合には、スワッ プ・シグネチャや他のデータは顧みられません。第2のオプションを用いた場合 には、セーフティー・チェックがあり、Linuxのスワップシグネチャがあるファ イルのみが使用されます。第3のオプションを用いた場合には、最初にスワップ・ シグネチャが探され、失敗した場合にはrawなページングを行います。このオプ ションは、`/etc/fstab'におけるデフォルトのエントリでもあります。

3.2 ネットワークやループバック・デヴァイスを設定するにはどうしたらい いでしょうか。

{MB} 前者については、GNU Machがネットワーク・カードを認識していることを 確認してください。また、`pfinet'を設定する必要があるでしょう。文書は以下 にあります。

	http://www.debian.org/ports/hurd/hurd-doc-server#pfinet

`/etc/resolv.conf'や`/etc/hosts'を設定するのを忘れないようにしてください。

当然、これらの設定が必要になるのは、インストール用のスクリプトが自動的に 行わない場合にだけです。

3.3 `serverboot'に引数を渡すにはどうすればいいのでしょうか。

{MB} (例えば、GRUBのコマンドラインとして)カーネルに対して渡すと、自動 的に`serverboot'に対して引き渡されます。

3.4 GNU/Linuxの`e2fsck'を、Hurdのパーティションに対して用いることは 可能でしょうか。

{MB} はい。ただし、`e2fprogs-1.05'よりも新しいものを使用してください。 `e2fsck -V'によって確認することができます。

{NHW} このユーティリティはトランスレータのことを考えて設計されていないの で、Hurdのパーティションに対してデフラグを試みないでください。

3.5 パイプが動作しないのは何故でしょうか。

{MB} `settrans -fgc /servers/socket/1 /hurd/pflocal'としてみてください。

4 使用方について

4.1 ドキュメントはどこにありますか。

{NHW} Hurdのそれぞれのtranslatorに関するman pageや、info nodeすらありま せん。ドキュメントはバイナリ・ファイルの中に埋め込まれており、任意のコマ ンドに対して`--help'を引数として渡すことによって得られます。例えば、

	# /hurd/ext2fs --help

とすれば、ext2fs translatorがどのようなオプションを取るかが表示されます。

4.2 トランスレータとは、どのようなものでしょうか。

{MB} トランスレータに関する文書が以下にあります。

	http://www.debian.org/ports/hurd/hurd-doc-translator

以上の文書を読んで、それより高度な質問はメイリングリストに対して行ってく ださい。

4.3 ログインシェルとは何でしょうか。

{MB} Hurdには、not-loggedというユーザに関しての概念があります。当該ユー ザは、user id及びgroup idを有していません。Hurdは、uidとgidの組を取り扱 うことができますが、可能性の一つとして空の組もその中に含まれているために このようなことが起ります。この場合には、Hurdのファイルシステムはアクセス を禁止する代わりに、証明を有しないユーザの特権を決定する第4のパーミッショ ン・トリプレット(rwxのことです)を提供しています。これはファイル毎に設 定されるべきものですが、デフォルトの状態では`other'パーミッション・トリ プレットが用いられます。

Hurdのログインシェルは、uid及びgid無しに実行されます。このシェルは、ユー ザのファイルに対するアクセスを規制し、第4のパーミッション・トリプレット を使用又は変更し、パスワードファイルに記述がある`login'ユーザのログイン シェルを`/bin/loginpr'に変更するため、通常のログインプロンプトを実装して います。

4.4 non-USのキーボードを用いるには、どうすればいいのでしょうか。

{NHW} 以下を見てください。

	ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/keymap.tar.gz

4.5 コンソールをカラーにするにはどうすればいいのでしょうか。

{NHW} Debianに含まれているGNU Machを使用しているのでしたら、ターミナルに `mach-color'を設定することができます。つまり、以下のようにします。

	# export TERM=mach-color

4.6 仮想コンソールを使用するには、どうすればいいのですか。

{NHW} 現在のところ、仮想コンソールはサポートされていません。しかし、 `screen'コマンドを用いることができます。こちらの方が、更に自由度が高いと 思います。

Kalle Olavi Niemitalo <tosi@ees2.oulu.fi> 氏が、coloertextに関しての作業 を始めました。彼の目的は、/dev/kbdデヴァイスを読み取ることによってユーザ・ スペースで動作する、コンソールを解析するための高機能なプログラムを提供す ることです。以下を見てください。

	http://stekt.oulu.fi/~tosi/

{MB} 以下に、screenプログラムにLinuxの仮想ターミナルに似た動作をさせるた めに役立つ、~/.screenrcに追加するオプションがあります。

	bindkey ^[O0 select 0
	bindkey ^[O1 select 1
	bindkey ^[O2 select 2
	bindkey ^[O3 select 3
	bindkey ^[O4 select 4
	bindkey ^[O5 select 5
	bindkey ^[O6 select 6
	bindkey ^[O7 select 7
	bindkey ^[O8 select 8
	bindkey ^[O9 select 9
	# 残念なことに、Machはカーソル・キーに関しての修飾子を無視します。
	# これは、修正することも可能ですが、今のところ仮想コンソールを前
	# 後するために、別のキーを使用しています。
	# ^[,は[ALT]と","です。
	# ^[.は[ALT]と"."です。
	bindkey ^[, prev
	bindkey ^[. next

4.7 Xはどのような状態でしょうか。

{MB} 動きます!全てのDebian ftpミラー・サイトにおいて、パッケージを入手 できます。一部はv3サーバとしても動作する、XFree86 4.0.2が入手可能です。 これらのパッケージの使用方の説明は、メイリングリストのアーカイブで読めま す。(link follow later)

4.8 Xが動かないのですが、なぜでしょうか。

{MB} `export LD_LIBRARY_PATH=/usr/X11R6/lib'としてみてください。これは、 linkerに関しての問題です。Hurdのシステムは`RPATH'を必要とするのですが、 一方において、Debianはこれを避ける確実な基準を持っています。セキュリティ 上の理由で、suidバイナリに関しては、これを切っていないことに注意してくだ さい。

4.9 `2'及び`3'という見なれないpidは何でしょうか。

{MB} 2はカーネルであり、3はデフォルトのページャです。また、4はルート・ファ イルシステムです。

4.10 `ps aux'とすると奇妙な出力が出るのですが、何故でしょうか。

{MB} `ps Aux'としてみてください。

4.11 killしたいハングしたプロセスがあるのですが、`ps'もハングしていま す。どうすればいいのでしょうか。

{MB} psに割り込みをかけて、`-M'オプションを渡してください。

{NHW} デフォルトの状態では、`ps'はprocサーバ及びプロセス(のメッセージ・ ポート)自体から情報を収集します。プロセスがハングしている場合には、メッ セージ・ポートに対して反応することが不可能であるため、psは待ち続けること になります。`-M'オプションは、`ps'に対してメッセージ・ポートの使用を必要 とする情報を収集しないように伝えます。

4.12 どこに……

{MB} `fdisk'及び`dmsg'は、今のところ移植されていません。

`free'の代わりには、`vmstat'と`vminfo'を用いてください。

カーネルのメッセージについては、`/dev/klog'ディレクトリを見てください。 一旦読んだ後には消えてしまうことに注意してください。

{NHW} ``ifcofig''は存在しません。

	# /hurd/pfinet --help

を見てください。

dhcpに関しては、hurd/trans/pump.cを見てください。これは、Hurdのための dhcpクライアントの原始的な部分です。

4.13 `/proc'ファイル・システムはありますか?

{MB} いいえ。ただし将来的には、それを必要とするプログラムのためのエミュ レーションができるかもしれません。空の`/proc'ディレクトリを見て不思議に 思うかもしれませんが、それはDebian GNU/Linuxのパッケージ(特に `base-files')の名残りです。

現存のハードウェア・デヴァイスは、devproveユーティリティを用いることによっ て調べることができます。

4.14 何故、`df'コマンドが適切に動作しないのでしょうか。

{NHW} 調査するファイル・システムを指定する必要があります。例えば、

	# df /

といったようにです。

4.15 translatorを開始しようとしたのですが、停止してしまうだけです。ど うすればいいのでしょうか。

{NHW} settransコマンドに、`-ap'フラグを引き渡してみてください。デフォル トの状態では、setttransコマンドは静的なtranslatorを設定するだけであり、 コンソールには出力が表示されません。しかし、`-ap'を使用すると動的又は静 的なtranslatorが設定されます。このようにすることにより、トランスレータが 即座に起動し、stderrがターミナルに出力されるようになります。

ついでながら、最大の問題は静的なトランスレータに対して、相対パスを引き渡 すことでしょう。静的なトランスレータを設定する際には、トランスレータのカ レントの動作ディレクトリを予め知ることはできません。

5 トラブル・シューティング

5.1 BIOSのAPMサポートがディスク・ドライブを停止させた後に、Hurdによっ て再開始することができないのですが、何が悪いのでしょうか。

{MB} 残念なことですが、現在のヴァージョンのGNU Machにおいては、APMはサポー トされていません。BIOSの設定のAPMの項目をdisableしてください。

5.2 `default pager'、`paging'、`pager request'について述べている、こ れらの表示は何なのでしょうか。

{MB}デフォルトのページャは、仮想メモリのアロケートを取り扱います。メモリ の不足が原因で、ページャが新たなメモリ・ページをアロケートすることができ なかった場合には、何らかの深刻な自体が発生するかもしれません。以上のうち のどれかについて述べているエラーを受けた際は、更にメモリが必要である(そ の場合にはスワップを確認してください)か、メモリのリークを発見したという ことです。

5.3 不必要(gratuitous)なエラーとは何でしょうか。

{MB} これは`strerror(EGRATUITOUS)'を起源とするものです。glibcのドキュメ ントを読めば、この種のエラー・コードには意味がないことがわかるでしょう。 しかし、これがあてはまらない場合もあります。ただし、そういうものを受け取 るのは、何か深刻な事柄が起った場合だけです。Thomas氏が以下のように説明し ています。

	更に正確に言えば、公式には`EGRATUITOUS'はサーバが不可能又はプロ
	トコルに反した形式で応答したということを意味しています。Hurdに関
	しては、幾つかの場合に`EGRATUITOUS'を返す個所がありますが、多分
	その代わりのものを選択する必要があるのでしょう。

このエラー・メッセージを再現することができるのでしたら、報告してください。

5.4 ``/dev/hd0s1: MOUNTED READ-ONLY; MUST USE `fsysopts--writable'''という表示は、何を意味しているのですか。

{NHW} この表示は、/dev/hd0s1が正しく(cleanに)umountされなかった、とい うことを意味しています。Hurdは、起動の際に/etc/fstabに記述があるそれぞれ のパーティションに対して``fsck -p''を実行します。このパーティションの記 述を付け加えるのもいいかもしれません。もし、パーティションが正常であるこ とが確実であると考えているのでしたら、/homeを管理しているtranslatorが read-onlyモードからread/writeモードに移行するように、

	# fsysopts /home --writable

と実行することもできます。このコマンドは、ファイル・システムに対して送ら れるのであって、store(例えば、/dev/hd0s1)に対して送られるのではないこ とに注意してください。

5.5 Hurdがクラッシュした際には、GNU Machが自動的に再起動してしまいま す。エラーを書き留めることができるように、停止させることはできま せんか。

{MB} initに対して`-H'オプションを引き渡すと(ブート・コマンドラインに対 して附加します)、`init'によって、リブートする代わりにカーネル・デバッガ を実行するようにMachに対して伝えられます。デバッガ・プロンプト(`db>')に おいては、`reboot'とタイプすることによって、何時でもシステムを再起動する ことができます。

6 移植について

6.1 どのようなプログラムが移植されていますか。

{NHW} 沢山です。Debianのアーカイブを見てください。しかし、移植する必要が ない沢山のプログラムもあります。そのようなプログラムはコンパイルされない でしょう。

6.2 移植は簡単でしょうか。

{NHW} Hurdは可能な限り慣習に従ったオペレーティング・システムとなるように 設計されているので、アプリケーションがPOSIX互換であれば、Hurdへの移植は 比較的簡単なものとなるでしょう。

プログラマが犯す最も一般的な過ちは、MAXPATHLEN及びPATH_MAXが設定されてい ると仮定してしまうことです。殆どのオペレーティング・システムについては、 これらの値は数千のものとなっています。一方、Hurdにおいては最大値の制限は ありません。それ故、この値も設定されていません。この場合には、upstreamの 作者に対して、メモリに動的にallocateするような変更を加えるためのパッチを 送るのが良いでしょう。

6.3 何か、私にできることはありますか。

{NHW} Jeff Baileyによって、Debianの全てのパッケージのコンパイルが試みら れています。以下を見れば、既に行われたことと、何をすべきかがわかるでしょ う。

	http://people.debian.org/~jbailey/oasis/group/Debian/index.html

7 コンパイルについて

7.1 どこでソース・コードを入手すればいいのでしょうか。

{NHW} ソース・コードは、以下のCVSにあります。

	:pserver:anoncvs@subversions.gnu.org:/cvs

anonymousのアクセスについては、userとして`anoncvs'をパスワード無しで用い てください。関連した3つのモジュールがあります。`hurd'、`mach'及び`mig'で す。

http://subversion.gnu.org/ において、webインタフェイスを用いることも可能 です。

最新のDebianパッケージのソース・コードを入手するには、Debianのミラー・サ イトを見てください。

7.2 クロス・コンパイルをすることはできますか。

{NHW} 可能です。Debian GNU/LinuxをIA32アーキテクチャ上で動作させていれば、 低機能なものですが、非常に簡単にクロス・コンパイラを使用することができま す。必要なことは、gcc-i386-gnu及びmig-i386-gnuというDebianパッケージをイ ンストールすることだけです。configureを実行する際に、toolsディレクトリを 特定してください。

	# MIG=/usr/bin/i386-gnu-mig CC=/usr/bin/i386-gnu-gcc \
	  ../src/hurd/configure ...

他の配布物を使用している場合には、更に面倒になるでしょう。クロス・コンパ イルに関するHOW-TOを以下から入手することができます。

	http://hurddocs.sourceforge.net/howto/cross.html

Farid Hajji <farid.hajji@ob.kamp.net> 氏も、彼自身の経験を発表しています。

	http://lists.debian.org/debian-hurd-0012/msg00062.html

7.3 何か、一般的な助言はありますか。

{NHW} ええ。ソース・ツリー内における構築は、テストされていません。以下を 試してみてください。

	# ../src/hurd/configure ...

8 開発について

8.1 ディレクトリを`read()'することができるのは何故でしょうか。

{MB} Hurdにおいては、ディレクトリは単なるファイルの一つでしかなく、何ら 特別なものではないことを理解することが重要です。これは、トランスレータが ディレクトリとしての外見を持つと同時にファイルとして存在するという、トラ ンスレータの概念と適合しています。

8.2 OSKit-Machとは何でしょうか。

{NHW} Machには二つのヴァージョンがあります。GNU MachとOSKit-Machです。前 者はLinux 2.0.xからのドライバを使用していますが、後者は the University of UtahのOSKitを使用しています。全てが順調に進めば、OSKit-Machが安定化し、 公式のカーネルとなるでしょう。OSKitについては、以下に更なる情報がありま す。

	http://www.cs.utah.edu/flux/oskit

8.3 ドキュメントはどこにありますか。

{NHW} Machカーネルについて記述された幾つかのドキュメントがあります。それ らに記述されている情報は、現在においても殆ど適切であり、ハッカー予備軍の 必読書であると言えるでしょう。これらのドキュメントは、以下にあります。

	http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html

Hurdに関するドキュメントは、全く不十分です。原始的なドキュメントとして、 ``The GNU Hurd''がHurdのソース・コードのdocディレクトリにあります。

	# info hurd

とすれば、このドキュメントを読むことができます。 最も信頼できるドキュメントは、当然、ソース・コードです。しかし、更なるド キュメント化を歓迎しないというわけではありません。ソース・コードを読み始 める前に、<hurd>/doc/navigatingを見てください。

[訳注] http://members.fortunecity.com/childstar/ に``The GNU Hurd Reference Manual''の日本語訳があります。

8.4 自分が書いたソース・コードがPOSIX互換であることを確認するには、 どうすればいいのでしょうか。

{NHW} 残念なことに、IEEEからPOSIX標準規格書を購入する必要があります。 POSIXの上位互換規格の一つであるThe Single Unix Specification version 2は、 Internet上でfreeなものとして入手可能です。以下を見てください。

	http://www.unix-systems.org/online.html

8.5 誰にパッチを送ればいいのでしょうか。

{NHW} それらがHurd、Mach又はMIGに関するものであれば、bug-hurdメイリング リストにunidiff形式のパッチを送ってください。例えば、

	# diff -urN hurd-orig hurd

とします。 他のパッケージに関するものである場合には、DebianのBTSを用いると良いでしょ う。この場合には、debian-hurdメイリングリストにバグを報告することを忘れ ないでください。


回答者は以下の通りです。