訳:
内川 喜章 <yoshiaki@kt.rim.or.jp>
、
杉村 貴士 <sugimura@jp.FreeBSD.org>
、
福間 康弘 <yasuf@big.or.jp>
、
1997 年 11 月 10 日 - 1999 年 5 月 8 日
12.1. | FreeBSD は Linux より多くのスワップ領域を消費するのはなぜですか? | ||||||
実際にはそうではありません。 FreeBSD は Linux よりもスワップを多く使っているように見えるだけです。 この点における FreeBSD と Linux の主な違いは、 FreeBSD はより多くのメインメモリを有効利用できるようにするため、 完全にアイドルになったものやメインメモリ上の使われなくなったページを、 スワップにあらかじめ積極的に移動しているということです。 Linux では、 最後の手段としてページをスワップに移動させるだけという傾向があります。 このスワップの使い方は、 メインメモリをより効果的に使用することによってバランスが保たれています。 FreeBSD はこのような状況では先手策を取りますが、 システムが本当に空き状態の時に、 理由も無くページをスワップしようと決めることはないということに注意してください。 したがって、 夜中に使わずにおいたシステムが朝起きたとき、 すべてページアウトされているということはないのです。 | |||||||
12.2. | ほとんどプログラムは実行されていないのに、 どうして top(1) は非常に少ない free memory を報告するのでしょうか? | ||||||
簡単に言えば、free memory
とは無駄になっているメモリのことだからです。
プログラムが確保しているメモリ以外のすべてのメモリは、
FreeBSD カーネル内でディスクキャッシュとして利用されます。
この値は top(1) において
| |||||||
12.3. | FreeBSD の実行フォーマットの a.out、ELF とはどのようなものですか? また、a.out、ELF を使う理由は何でしょう? | ||||||
FreeBSD が何故 ELF フォーマットを利用しているのかを理解するためには、 まず UNIXにおいて現在「優勢」な 3 種類の実行フォーマットについて いくらか知っておく必要があります。 注記:FreeBSD 3.x より前の FreeBSD では a.out フォーマットが使われていました。
FreeBSD は伝統的な立場をとり、数多くの世代の BSD
のリリースで試され、実証されてきた
a.out(5)
フォーマットを伝統的に使用しています。
いつかは FreeBSD システムでネイティブ
ELF バイナリを作り、
実行することができるようになるかもしれませんが、
初期の頃 FreeBSD
では ELF
をデフォルトのフォーマットに変更するという動きは
ありませんでした。なぜでしょうか?
ところで Linux においては、
ELF への苦痛をともなった変更は、
その時に FreeBSD の場合は、共有ライブラリのメカニズムは Sun の SunOS 形式の共有ライブラリの メカニズムに極めて近いものになっていて、 非常に使いやすいものになっています。 しかしながら、FreeBSD では 3.0 から ELF バイナリをデフォルトのフォーマットとして公式にサポートしています。 a.out 実行フォーマットはよいものを私達に提供してくれているものの、 私たちの使っているコンパイラの作者である GNU の人々は a.out フォーマットのサポートをやめてしまったのでした。 このことは、 私たちに別バージョンのコンパイラとリンカを保守することを余儀なくされることとなり、 最新の GNU 開発の努力による恩恵から遠ざかることになります。 その上、ISO C++ の、 とくにコンストラクタやデストラクタがらみの要求もあって、今後の FreeBSD のリリースでネイティブの ELF のサポートされる方向へと話が進んでいます。 | |||||||
12.4. | それにしても、なぜそんなに多くのフォーマットがあるのですか? | ||||||
もうおぼろげになってしまった暗い過去に、単純なハードウェアがありました。 この単純なハードウェアは、単純で小さなシステムをサポートしていました。 a.out はこの単純なシステム (PDP-11) での作業を行なうバイナリとして完全に適したものだったのです。 人々はこの単純なシステムから UNIX を移植する際に、a.out フォーマットをそのまま使いました。というのは Motorola 68k、VAXen、 といったアーキテクチャへの UNIX の初期の移植ではこれで十分だったからです。 やがてある聡明なエンジニアが、 ソフトウェアでちょっとしたトリックを使うことを決めました。 彼はいくつかのゲートを削り取って CPU のコアをより速く走らせることができたのです。 これは新しい種類のハードウェア (今日では RISC として知られています) で動いたのです。 a.out はこのハードウェアには適していなかったので、 このハードウェア上で多くのフォーマットが、 限定された単純な a.out フォーマットでのものよりもより良いパフォーマンスを出すことを目指して開発されたのです。 COFF、ECOFF、 そしていくつかの有名でないフォーマットが ELF が標準になる前に開発され、 それらの限界が探求されたのです。
さらに、プログラムサイズは巨大になり、
ディスク (および物理メモリ) は依然として相対的に小さかったため、
共用ライブラリのコンセプトが誕生しました。
また、VM システムはより複雑なものになりました。
これらの個々の進歩は a.out フォーマットを使用して遂げられましたが、
その有用性は新しい機能とともにどんどん広がってきました。
これらに加え、実行時に必要なものを動的にロードする、
または初期化コードの実行後にプログラムの一部を破棄し、
コアメモリおよびスワップ空間を節約するという要望が高まりました。
プログラミング言語はさらに複雑になり、
しかし時が経つにつれ、FreeBSD
のビルドツールの元となったツール群 (特にアセンブラとローダ) と
FreeBSD のビルドツール群は異なった進化の経路をたどりました。
FreeBSD のツリーでは、共有ライブラリが追加され、
バグフィックスも行われました。
もともとのツール群を作成した GNU の人たちは、プログラムを書き直し、
クロスコンパイラのサポート、
異なるフォーマットを任意に取り込む機能などを追加していきました。
多くの人々が FreeBSD
をターゲットとしたクロスコンパイラの構築を試みましたが、
FreeBSD の使っている ELF は a.out に比べてより表現力があり、 ベースのシステムに対してより幅広い拡張性を提供できます。 ELF 用のツールはよりよく保守されています。 また多くの人にとって重要なクロスコンパイルもサポートしています。 ELF の実行速度は、ほんの少し a.out より遅いかもしれませんが、 実際に速度の差をはかるのは困難でしょう。 ELF と a.out の間には、ページマッピング、 初期化コードの処理など多くの違いがありますが、 とりたてて重要なものはありません。しかし違いがあるのは確かです。ほどなく、 GENERIC カーネルから a.out のサポートが外されます。 a.out のプログラムを実行する必要性がなくなれば、 最終的に a.out のサポートはカーネルから削除されます。 | |||||||
12.5. | シンボリックリンクの許可属性を
| ||||||
シンボリックリンクは許可属性を持ちません。
また chmod(1) のデフォルト動作は、
シンボリックリンクをたどってリンク先のファイルの許可属性を変更するようになっていません。
そのため、
しかしこの場合、
この場合、「 警告:
「
後ろにスラッシュをつけると、
chmod(1) はシンボリックリンク
「 | |||||||
12.6. | ログイン名がいまだに 8 文字に制限されているのはなぜですか? | ||||||
しかし、FreeBSD 3.0 以降では 16 文字となり、 多くのユーティリティのハードコードされた名前の長さの問題も解決されます。 実際にはシステムのあまりに多くの部分を修正するために、 3.0 になるまでは変更が行われませんでした。
それ以前のバージョンでは、これらの問題が起こった場合に、
問題を自分自身で発見し、解決できることに絶対的な自信がある場合は
| |||||||
12.7. | FreeBSD 上で DOS のバイナリを動かすことはできますか? | ||||||
はい、FreeBSD 3.0 からは、 統合と改良が重ねられた BSDI の doscmd DOS エミュレーションサブシステムを使ってできるようになりました。 今なお続けられているこの努力に興味を持って参加していただけるなら、 FreeBSD-emulation メーリングリスト へメールを送ってください。 FreeBSD 3.0 以前のシステムでは、 pcemu という巧妙なユーティリティが FreeBSD Ports Collection にあり、 8088 のエミュレーションと DOS のテキストモードアプリケーションを動かすに十分な BIOS サービスを行ないます。これは X ウィンドウシステムが必要です (XFree86 として提供されています)。 | |||||||
12.8. | どこで無料の FreeBSD のアカウントを取得できますか? | ||||||
FreeBSD はいずれのサーバーにもアクセスを開放していませんが、 Unix システムへの自由なアクセスを提供しているところがあります。 費用はまちまちで、限定されたサービスが利用できます。 M-Net としても知られる Arbornet, Inc は 1983 年から Unix システムへのアクセスを提供しています。 System III が動作する Altos に始まり、1991 年には BSD/OS に移行しました。2000 年 6 月には、再び FreeBSD に 移行しています。M-Net には SSH または telnet 経由で アクセスすることができ、FreeBSD ソフトウェア一式が 利用できるようになっています。ただし、ネットワーク接続は 会員と、非営利組織として運営されているシステムに寄付をする 後援者に制限されています。また、M-Net は掲示板システムと 双方向チャットも提供しています。 Grex は、 掲示板システムと双方向チャットソフトウェアが同じであることも含め、 M-Net とよく似たサイトを提供しています。しかし、 マシンは Sun 4M で、SunOS が動作しています。 | |||||||
12.9. | 「sup」 とは何で、 どのようにして使うものなのでしょうか? | ||||||
SUP とは、ソフトウェアアップデートプロトコル (Software Update Protocol) で カーネギーメロン大学 (CMU) で開発ツリーの同期のために開発されました。 私たちの中心開発ツリーをリモートサイトで同期させるために使っていました。 SUP はバンド幅を浪費しますので、今は使っていません。 ソースコードのアップデートの現在のおすすめの方法は FreeBSD ハンドブックの「CVSup」にあります。 | |||||||
12.10. | FreeBSD をクールに使うには? FreeBSD を動かす時に温度測定を行なった人はいますか? Linux は dos よりも温度が下がるということは知っていますが、FreeBSD についてはこのようなことに触れたものを見たことはありません。 実際熱くなっているように見えます。 | ||||||
いいえ。 私たちは 250 マイクログラムの LSD-25 をあらかじめ与えておいたボランティアに対する、 目隠し味覚テストを大量に行なっています。 35% のボランティアは FreeBSD はオレンジのような味がすると言っているのに対し、 Linux は紫煙のような味わいがあると言っている人もいます。 両方のグループとも温度の不一致については何も触れていません。 この調査で、非常に多くのボランティアがテストを行なった部屋から不思議そうに出てきて、 このようなおかしな結果を示したことに私たちは当惑させられました。 私たちは、ほとんどのボランティアは Apple にいて彼らの最新の「引っかいて匂いをかぐ」GUI を使っているのではないかと考えています。 私たちは奇妙な古い仕事をしているのでしょう! 真面目に言うと、FreeBSD や Linux は共に 「HLT」 (停止) 命令をシステムのアイドル (idle) 時に使い、 エネルギーの消費を押えていますので熱の発生も少なくなります。 また、APM (advanced power management) を設定してあるなら FreeBSD は CPU をローパワーモードにすることができます。 | |||||||
12.11. | 誰かが私のメモリカードをひっかいているのですか?? FreeBSDでカーネルのコンパイルをしている時、 メモリから引っかいているような奇妙な音が聞こえるようなことはあるのでしょうか? コンパイルをしている時 (あるいは起動時にフロッピドライブを認識した後の短い間など)、 奇妙な引っかくような音がメモリカードのあたりから聞こえてきます。 | ||||||
その通り! BSD の文書には良く、デーモン (daemon) という言葉が出てきます。 ほとんどの人は知らないのですが、 デーモンとは、あなたのコンピュータを依り代とする、 純粋で非物質的な存在のことです。 メモリから聞こえるひっかくような音は、 さまざまあるシステム管理タスクの扱いをいかに最善なものにするか、 といったことを決めるときにデーモンたちが交わす、 かん高いささやき声なのです。
この雑音が聞こえたとき、DOS から
「 | |||||||
12.12. | "MFC" とはどういう意味ですか | ||||||
MFC とは、 「CURRENT との合流 (Merged From -CURRENT)」の頭文字をとったものです。 CVS ログで -CURRENT から -STABLE ブランチへの合流を示します。 | |||||||
12.13. | "BSD" とはどういう意味ですか? | ||||||
この言葉は、仲間うちだけに分かる隠語で何とかという意味です。
文字どおりに訳すことはできませんが、
BSD の訳は「F1 のレーシングチーム」か「ペンギンはおいしいスナック」、
あるいは「俺たちゃ
Linux より洒落は利いてるぜ」とかそのへんだと言っておけばおっけーでしょう。
冗談はさておき、BSD とは、Berkeley CSRG (コンピュータシステム評議会) が彼らの UNIX の配布形態の名前として当時選んだ "Berkeley Software Distribution" の略です。 | |||||||
12.14. | リポジトリ・コピー (repo-copy) とは一体何のことでしょう? | ||||||
repo-copy (「repository copy」 の略) とは、 CVS リポジトリの中で直接ファイルをコピーすることを示す用語です。 repo-copy を行なわない場合を考えます。
リポジトリの中の異なる場所にファイルをコピーしたり、
移動したりする必要性が生じると、コミッターは
ファイルを新しい場所に置くために この方法の欠点は、ファイルの変更履歴
(たとえば CVS ログのエントリ) が新しい場所にコピーされないことです。
FreeBSD プロジェクトではこの変更履歴をとても有用なものだと考えているため、
前述の方法の代わりにリポジトリコピーが良く用いられます。
この操作は | |||||||
12.15. | なんでバイク小屋 (bikeshed) の色にまで気を使わなければいけないんですか? | ||||||
一言で言ってしまえば、そうすべきではありません。 もう少し詳しく説明しましょう。 たとえば、あなたがバイク小屋を建てる技術を持っていたとします。 しかしそれは、塗ろうとしている色が気に入らないからと言って、 他人がバイク小屋を建てようとしているのを止めて良い理由にはなりませんよね。 これは、自分の行動について十分な理解を持っているなら、 あなたは細かな機能すべてにわたって議論する必要はないことを示す比喩です。 ある変更によって産み出されるノイズの総量は、 その変更の複雑さに反比例するのだと言っている人達もいます。 さらに詳しく、完全な回答を紹介しましょう。 Poul-Henning Kamp は、 「sleep(1) は分数の秒数を引数として取るべきか」という 非常に長い議論の後で、 「A bike shed (any colour will do) on greener grass...」 というタイトルの長文を投稿しました。 関係のある部分だけを以下に掲載します。
| |||||||
12.16. | ひとつの電球を取り替えるのに、何人の FreeBSD ハッカーが必要? | ||||||
1,172人です。
Nik Clayton |
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。