diff --git a/ja_JP.eucJP/books/handbook/introduction/chapter.sgml b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml index 908141cc5f..df6e7135dd 100644 --- a/ja_JP.eucJP/books/handbook/introduction/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml @@ -1,726 +1,737 @@ はじめに FreeBSD は, Intel アーキテクチャ (x86) と DEC Alpha ベースの コンピュータシステムのための 4.4BSD-Lite2 をベースとしたオペレーティングシステムです. FreeBSD の概要については, FreeBSD とはをご覧ください. このプロジェクトの歴史については, FreeBSD 小史 をご覧ください. 最新のリリースについての記述は, 現在のリリースについてをご覧ください. FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, 資金の提供など) について興味があれば, FreeBSD への貢献 の章をご覧ください. FreeBSD とは 原作: 不明. 訳: &a.jp.tomo;. - FreeBSDはIntel社の (SXやDXも含めた) 386や486, Pentium - プロセッサ や DEC 社の Alpha といった CPU - アーキテクチャに基づくコンピュータシステム用としては + FreeBSD は, Intel 社の 386, Pentium ファミリに加え, + AMD 社や Cyrix 社の Intel 互換 CPU, + DEC 社の Alpha といった各 CPU アーキテクチャに + 基づくコンピュータシステム用として, 現在求めうる最高水準のオペレーティングシステムです. - AMD社やCyrix社のIntel互換CPUもサポートされています. FreeBSDは, - 以前は高価なコンピュータでしか利用できなかった多くの - 高度な機能を提供します. - FreeBSDには次のような機能があります: + FreeBSD は, 従来高価なコンピュータでしか利用できなかった + 多くの先進的な機能を提供します. + FreeBSD には次のような機能があります: - アプリケーションとユーザとの間で円滑かつ公平に - コンピュータを 共有することを保証する, - 優先度を動的に調節する機能を備えた + + 優先度を動的に調節する機能を備えることで + アプリケーションとユーザとの間で円滑かつ公平な + コンピュータ資源共有を実現し, + 特に高い負荷にも耐えることができる堅牢さを備えた プリエンプティブマルチタスキング. - 多くの人々が1つのFreeBSD - システムをさまざまな目的で同時に 使うことを可能にする - マルチユーザ アクセス. また, - プリンタやテープドライブのようなシステムの周辺機器も - すべてのユーザ間で適切に共有されます. + 多くの人々が 1 つの FreeBSD + システムをさまざまな目的で同時に使うことを可能にする + マルチユーザ アクセス. + これは例えば, プリンタやテープデバイスといった + システムの周辺機器が, そのシステムを利用する全てのユーザだけでなく + ネットワーク経由においても自然な形で共有され, + さらに重要なシステム資源の使い過ぎを防ぐために + 個々の資源に対する制限がユーザ単位, グループ単位で + 設定できる, というようなことを意味しています. + - SLIPやPPP, NFS, NISのサポートを含んだ完全な - TCP/IPネットワーキング. これによって, - FreeBSDマシンが商用サーバと同じように相互に運用でき, NFS - (リモートファイルアクセス) - や電子メールサービスのような極めて 重要な機能を提供します. - また, WWWやftp, ルーティング, ファイアウォール + SLIP や PPP, NFS, DHCP, NIS といった業界標準規格の + サポートを含んだ 堅固な TCP/IP ネットワーキング. + これによって, FreeBSD マシンが商用サーバと同じように相互に運用でき, + NFS(リモートファイルアクセス)や, 電子メールサービスのような + 極めて重要な機能を提供します. + また, WWW や ftp, ルーティング, ファイアウォール (セキュリティ) サービスを用いてインターネットと 接続できます. アプリケーション (あるいはユーザ) がお互いに干渉できない ようにするメモリ保護機能. アプリケーションがクラッシュしても, どのような場合でも 他のアプリケーションには影響を与えません. FreeBSD は 32ビット - のオペレーティングシステムであり, + のオペレーティングシステム(Alpha 版は + 64 ビット)であり, 最初からそのようにこつこつと設計されました. 業界標準であるX Windowシステム (X11R6) は, 普通のVGAカードやモニタでグラフィカルユーザ インタフェース (GUI) を提供し, すべてのソースコードも一緒に提供されます. - SCOやBSDI, NetBSD, Linux, 386BSD用に作られた多くの - プログラムにおけるバイナリ互換性. + Linux や SCO, SVR4, BSDI, NetBSD 用に作られた多くの + プログラムとのバイナリ互換性. - 何百もの すぐに実行可能な - アプリケーションが FreeBSDの ports や - packages コレクション で利用可能です. + 何千ものすぐに実行可能な + アプリケーションが FreeBSD の ports や + packages コレクションで利用可能です. ここに用意されているものは ネットを探し回る必要がありません インターネット上で入手可能な, 移植が容易な 何千ものアプリケーションを追加できます. FreeBSD は最も評判の よい商用の Unix システムとソースコードレベルで互換性があります. このため, ほとんどのアプリケーションは, もしあったとしてもほんの 少しの変更でコンパイルすることができます. デマンドページング 仮想メモリ とそれに “付随の VM/buffer キャッシュ”の設計は, 多くのメモリを要求する アプリケーションに対して効率よくメモリを 与えるようにする一方で, 他のユーザに対しても対話的な応答を維持します. - 共有ライブラリ - (MS-WindowsのDLLと同等のUnixの 機能) によって, - ディスクスペースとメモリを効果的に使用する - ことができます. + 複数の CPU を搭載したマシンにおける + SMP 機能のサポート(Intel 版のみ). + 完全な CC++, Fortranの 開発ツール. 進んだ研究や開発のための多くの他の言語も ports や packages コレクションで提供されています. システム全体の ソースコード が提供されているので, 要求に合わせて環境を最大限に適合させることができます. 真のオープンシステムが利用できるのですから, 所有権のある解決方法に 締めつけられ, ベンダのなすがままになる必要はありません. 膨大な量の オンラインドキュメント. もう書ききれません! FreeBSD はカリフォルニア大学バークレイ校のComputer Systems Research Group (CSRG) による4.4BSD-Lite2 リリースを基にしており, BSDシステムの開発の優れた伝統を守り続けています. CSRGによる素晴らしい活動に加えて, FreeBSDプロジェクトは何千時間もの時間を注ぎ込んで, 実際の使用の場において最大の性能と信頼性を 発揮するためにシステムのチューニングをおこなっています. 多くの大企業がPCオペレーティングシステムの分野で 実現しようと奮闘しているそのような機能や性能, 信頼性を FreeBSDは今すぐ提供できます! あなたの思いつく限りのアプリケーションは, 何でもFreeBSDで 実行できます. ソフトウェア開発から ファクトリオートメーション, 在庫制御から遠く離れた人工衛星の アンテナの方向調整まで; 商用UNIX製品でできることは, FreeBSDでも十分にできるのです! また, FreeBSDは世界中の研究センターや大学によって開発される 文字通り何千もの高品質で, たいていはほとんど無料で利用できる アプリケーションによる恩恵を得ることができます. 商用のアプリケーションも提供されており, 日々増え続けています. FreeBSDのソースコードは広く提供されているので, システムも特別なアプリケーションやプロジェクトに合わせて, いくらでもカスタマイズすることができます. これは 有名な商業ベンダから出ているほとんどのオペレーティング システムでは不可能なことです. 以下に現在FreeBSDを 使っている人々のアプリケーションの例をいくつか上げます: インターネットサービス: FreeBSDに組み込まれている 頑強なTCP/IP ネットワーキング機能は次のようなさまざまなインターネット サービスの理想的なプラットフォームになります: FTP サーバ - World Wide Web サーバ + World Wide Web サーバ(標準, もしくは安全な [SSL]) - Gopher サーバ + ファイアウォールと NAT("IP マスカレード")ゲートウェイ 電子メールサーバ - USENET ニュース - - - - 電子掲示板システム + USENET ニュースおよび電子掲示板システム さらにいろいろ... - まずは高価ではない386クラスのPCで始めておいて, - 仕事の成長に合わせてアップグレードできます. + FreeBSD を利用すれば, 小規模で安価な 386 クラスの + PC でも気軽に導入することができますし, + 事業の成長に合わせてアップグレードした + 4 つの Xeon プロセッサと RAID ストレージデバイスを + 備えたシステムでも, 全くそのまま使うことができるのです. + 教育: あなたは計算機科学または工学の学生ですか? オペレーティングシステムやコンピュータアーキテクチャ, ネットワーキングを学習するなら, FreeBSDを手に 経験するのが一番よい方法です. 自由に利用できるCADや数学, グラフィックデザインのパッケージもいくつもあり, コンピュータに関心を持った人が 他の人 の成果を 手に入れて利用するのにとても役に立ちます. 研究: システム全体のソースコードが利用できるため, FreeBSDはオペレーティングシステムの研究だけでなく, 計算機科学の他の部門においても優れたプラットフォームです. 自由に利用できるFreeBSDの特長は, オープンフォーラムで 議論される特別なライセンスの同意や制限について 心配することなく, 離れたグループでもアイディアや開発の共有に よる共同研究を可能にします. ネットワーキング: 新しいルータが必要? ネームサーバ (DNS) は? 内部のネットワークを人々から守る ファイアウォールは? FreeBSDはすみに眠っている使われていない386や486のPCを簡単に 洗練されたパケットフィルタリング機能を持つ高級なルータに 変えることができます. X Windowワークステーション: 自由に利用できるXFree86サーバやX Inside社から提供される 優れた商業サーバを使うことによって, 安価なX端末 としてFreeBSDを使うこともできます. X端末とは違ってFreeBSDは 多くのアプリケーションをローカルに走らせることもでき, 中心のサーバの負荷を軽減することも可能です. FreeBSDは“ディスクレス”でもブート可能であり, 個々のワークステーションを安価で, 容易に管理することさえ 可能にします. ソフトウェア開発: 基本的なFreeBSDシステムには 有名なGNUのC/C++コンパイラやデバッガ含んだ完全な開発ツールが ついてきます. FreeBSDはCDROMまたはanonymous ftpによってソース, バイナリとも 利用可能です. 詳しくは, FreeBSD の入手方法 を見てください. FreeBSD 小史 原作: &a.jkh;. 訳: &a.jp.masaki;, &a.jp.hino;. 19 December 1996. FreeBSD プロジェクトは 1993年の始めに “Unofficial 386BSD Patchkit” の最後の 3人のまとめ役によって, 部分的に patchkit から派生する形で開始 されました. ここでの 3人のまとめ役というのは, Nate Williams と, Rod Grimes と, 私 (Jordan K. Hubbard) です. 私たちのもともとの目標は, patchkit という仕組みではもう十分に解 決できなくなってしまった 386BSD の数多くの問題を修正するための, 386BSD の暫定的なスナップショットを作成することでした. こういった経緯を経てい るので, このプロジェクトの初期の頃の名前が “ 386BSD 0.5 ” や “386BSD 暫定版 (Interim)” であったということを覚えている人もいるでしょう. 386BSD は, Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成し たオペレーティングシステムです. 当時の 386BSD は, ほぼ一年にわたって放っ ておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) という ひどい状況に苦しんでいました. 作者の代わりに問題を修正し続けていた patchkit は日を追うごとに不快なまでに膨張してしまっていました. このよ うな状況に対して, このままではいけない, 何か行動を起こさなければ, とい うことで異議を唱えるものは私たちのなかにはいませんでした. そして私たち は挑戦することを決断し, 暫定的な“クリーンアップ”スナップショットを作 成することで Bill を手助けしようと決めたのです. しかし, この計画は唐突 に終了してしまいました. Bill Jolitz が, このプロジェクトに対する受け 入れ支持を取り下げることを突然決意し, なおかつこのプロジェクトの代わり に何をするのかを一切言明しなかったのです. たとえ Bill が支持してくれないとしても, われわれの目標には依然としてや る価値があると決心するのにさしたる時間はかかりませんでした. そこで David Greenman が考案した名称 “FreeBSD” を私たちのプロジェクトの名前 に採用し, 新たなスタートを切りました. この時点でのプロジェクトの初期目 標は, すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者 たちと相談して決められました. プロジェクトが実現に向けて軌道に乗ってき たことが明確になった時点で, 私は Walnut Creek CDROM 社に連絡してみまし た. CDROM を使って FreeBSD を配布することによって, インターネットに容 易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考 えたからです. Walnut Creek CDROM 社は FreeBSD を CD で配布するというア イデアを採用してくれたばかりか, 作業するためのマシンと高速なインターネッ ト回線を私たちのプロジェクトに提供してくれました. 当時は海のものとも山 のものともわからなかった私たちのプロジェクトに対して, Walnut Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで, FreeBSD は短期 間のうちにここまで大きく成長したのです. CDROM による最初の配布 (そしてネットでの, ベータ版ではない最初の一般向 け配布) は FreeBSD 1.0 で, 1993年 12月に公開されました. これは カリフォ ルニア大学バークレイ校の 4.3BSD-Lite (“Net/2”) を基とし, 386BSD や Free Software Foundation からも多くの部分を取り入れたものです. これは 初めて公開したものとしては十分に成功しました. 続けて 1994年 5月に FreeBSD 1.1 を公開し, 非常に大きな成功を収めました. この時期, あまり予想していなかった嵐が遠くから接近してきていました. バー クレイ Net/2 テープの法的な位置づけについて, Novell 社と カリフォルニア大学バークレイ校との間の長期にわたる 法廷論争において和解が成立したの です. 和解の内容は, Net/2 のかなりの部分が“権利つき (encumbered)”コー ドであり, それは Novell 社の所有物である, というバークレイ校側が譲歩し たものでした. なお, Novell 社はこれらの権利を裁判が始まる少し前に AT&T 社から買収していました. 和解における譲歩の見返りにバークレイ 校が得たのは, 4.4BSD-Lite が最終的に発表された時点で, 4.4BSD-Lite は権 利つきではないと公式に宣言されること, そしてすべての既存の Net/2 の利 用者が 4.4BSD-Lite の利用へと移行することが強く奨励されること, という Novell 社からの“ありがたき天からの恵み”でした. (訳注: 4.4BSD-Lite は その後 Novell 社のチェックを受けてから公開された.) FreeBSD も Net/2 を利 用していましたから, 1994年の 7月の終わりまでに Net/2 ベースの FreeBSD の出荷を停止するように言われました. ただし, このときの合意によって, 私 たちは締め切りまでに一回だけ最後の公開をすることを許されました. そして それは FreeBSD 1.1.5.1 となりました. それから FreeBSD プロジェクトは, まっさらでかなり不完全な 4.4BSD-Lite を基に, 文字どおり一から再度作り直すという, 難しくて大変な作業の準備を始めまし た. “Lite” バージョンは, 部分的には本当に軽くて, 中身がなかったので す. 起動し, 動作できるシステムを実際に作り上げるために必要となるプログ ラムコードのかなりの部分がバークレイ校 の CSRG (訳注: BSDを作っている グループ) によって (いろいろな法的要求のせいで) 削除されてしまっていた ということと, 4.4BSD の Intel アーキテクチャ対応が元々かなり不完全であっ たということがその理由です. この移行作業は結局 1994年の 11月までかかり ました. そしてその時点で FreeBSD 2.0 をネットと CDROM(12月末ごろ)を通じて公 開しました. これは, かなり粗削りなところが残っていたにもかかわらず, か なりの成功を収めました. そしてその後に, より信頼性が高く, そしてインス トールが簡単になった FreeBSD 2.0.5 が 1995年の 6月に公開されました. 私たちは 1996年の 8月に FreeBSD 2.1.5 を公開しました. この出来が非常に 良く, 特に業務で運用しているサイトや ISP での人気が高かったので, 私た ちは 2.1-STABLE 開発分流から更に公開をおこなうことにメリットがあると考 えました. それが FreeBSD 2.1.7.1 で, 2.1-STABLE 開発分流の最後を締めく くるものとして, 1997年の 2月に公開されました. 2.1-STABLE 開発分流 (RELENG_2_1_0) は現在, 保守のみをおこなう状態になっており, 今後は, セ キュリティの改善や他の何か重要なバグフィックスのみが - おこなわれるでしょ う. - - FreeBSD 2.2 の開発は, RELENG_2_2 開発分流として, 開発の本流 - (“-current”) から 1996年 11月に分岐し, そして 1997年 - 4月に最初の公開 (2.2.1) がおこなわれました. 2.2 - 開発分流からはさらに 97 年の夏と秋に公 開がおこなわれ, 98 年 7 - 月の終わりには最新版の 2.2.7 が登場しました. FreeBSD 3.0 - の初めての公式なリリースが 1998 年 10 月上旬に登場し, 2.2 - 開発分流からの最後のリリースである 2.2.8 が 1998 年 11 - 月に登場しまし た. - - 1999 年 1 月 20 日には, FreeBSD - の開発ツリーが再び分岐しました. 4.0-current と 3.x-stable - の分流です. 3.x-stable からは 3.1 が 1999 年 2 月 15 - 日にリリースされ, 3.2 は 1999 年 5 月 15日にリリースされました. - - 長期的な開発プロジェクトは 4.0-current 開発分流で続けられ, - スナップショットの CDROM (もちろん, ネットワーク上でも) - で公開されます. + おこなわれるでしょう. + + FreeBSD 2.2 の開発は, RELENG_2_2 開発ブランチとして, 開発の本流 + (“-current”) から 1996 年 11 月に分岐し, そして 1997 年 + 4 月に最初のリリース(2.2.1)が行なわれました. 2.2 + 開発ブランチからは, さらに 97 年の夏と秋にリリースが行なわれ, + 98 年 11 月に 2.2 開発ブランチの最終リリース(2.2.8)が + 行なわれています. 1998 年 10 月に FreeBSD 3.0 最初の公式リリースが + 行なわれ, 2.2 開発ブランチは開発の終了を迎えることになりました. + + + 1999 年 1 月 20 日には, FreeBSD の開発ツリーが + 4.0-current と 3.x-stable の各ブランチに再び分岐しました. + 3.x-stable からは 3.1 が 1999 年 2 月 15 日に, + 3.2 が 1999 年 5 月 15 日にリリースされました. + このブランチにおける現時点で最も新しいリリースは 3.3 で, + 1999 年 9 月 16 日にリリースされています. + + + 長期的な開発プロジェクトは 4.0-current 開発ブランチで続けられ, + 4.0 のスナップショットリリースが収録された CDROM + (もちろん, ネットワーク上でも)は, 開発の進行状況に応じて + 継続的に公開されています. FreeBSDプロジェクトの目的 原作: &a.jkh; 訳: &a.jp.kiroh; 24 September 1996. FreeBSD プロジェクトの目的は, いかなる用途にも使用でき, 何ら制限のない ソフトウェアを供給することです. 私たちの多くは, コード(そしてプロジェ クト)に対してかなりの投資をしてきており, これからも多少の無駄はあって も投資を続けて行くつもりです. ただ, 他の人達にも同じような負担をするよ うに主張しているわけではありません. FreeBSD に興味を持っている一人の残 らず全ての人々に, 目的を限定しないでコードを提供すること. これが, 私たちの最初のそして最大の “任務” であると信じています. そうすれば, コード は可能な限り広く使われ, 最大の恩恵をもたらすことができるでしょう. これ が, 私たちが熱烈に支持しているフリーソフトウェアの 最も基本的な目的であ ると, 私は信じています. 私たちのソースツリーに含まれるソースのうち, - GNU一般公有使用許諾(GPL)ま - たはGNUライブラリ一般公有使用許諾(LGPL) - に従っているものについては, 多 少制限が科されています. ただし, + GNU 一般公有使用許諾(GPL)または GNU ライブラリ一般公有使用許諾(LGPL) + に従っているものについては, 多少制限が課せられています. ただし, ソースコードへのアクセスの保証という, 一般の制限とはいわば逆の制限(訳注1)です. - ただしGPLソフトウェアを商用で - 利用する場合, さらに複雑になるのは避けられません. - そのため, それらのソ フトウェアを, より制限の少ない BSD - 著作権に従ったソフトウェアで置き換える事が合理的であるときには, - 我々は置き換える努力を行っています. + GPL ソフトウェアの商利用には, そのライセンスにある + 複雑な側面が影響してくることがあります. + ですから私たちは, そうすることが合理的であると判断されたときには, + より制限の少ない, BSD 著作権表示を採用しているソフトウェアを + 選択するようにしています. (訳注1) GPL では, 「ソースコードを実際に受け取るか, - あるいは, 希望しさ えすればそれを入手することが可能であること」 + あるいは, 希望しさえすればそれを入手することが可能であること」 を求めています. FreeBSDの開発モデル 原作: &a.asami;. 18 October 1996. 訳: &a.asami;. 31 October 1996. FreeBSD の開発は非常に開かれた, 柔軟性のあるプロセスです. コントリビュータのリスト を見ていただければわかる とおり, FreeBSDは文字通り世界中の何百という人々の努力によって開発され ています. 新しい開発者はいつでも大歓迎ですので, &a.hackers; にメールを 送ってください. また, 大勢で議論するよりは一人で静かに開発にふけりた いという人は私たちのFTPサイト ftp.FreeBSD.org を使ってパッチや開発中のソースを公開してくださっ て結構です. &a.announce; もありますので, 他のFreeBSDユーザに自分のやっ ていることを宣伝したい時にはどうぞ使ってください. あと, FreeBSD プロジェクトとその開発プロセスについて, どなたにも知って いていただきたいのは以下のようなことです. CVSリポジトリ FreeBSDのソースツリーは CVS (Concurrent Versions System) によってメンテナンスされています. CVSはソー スコード管理用のフリーソフトウェアで, FreeBSDのリリースにも含まれてい ます. FreeBSD の メインの CVS リポジトリ は米国カリフォルニア州のコンコルド市に存在 し, そこから世界中のたくさんのミラーサイトに コピーされています. CVSツ リーそのもの, そしてそのチェックアウトされたバージョンである-currentと-stableはあな たのマシンにも簡単に取ってくることができます. これについては ソースツリーの同期 の章をご覧ください. ソースツリー管理者 ソースツリー管理者はCVSツリー への書き込み権限を持っている人, つまりFreeBSDのソースに変更を加えるこ とができる人です. (CVSでリポジトリに変更を加えるには &man.cvs.1; commit というコマンドを使うので, これらの人々は英語では “committers” と呼ばれます.) 開発者にコードを送って見てもらうのに一 番いい方法は &man.send-pr.1; コマンドを使うことです. もし, 何か問題があって send-pr が使えないならcommitters@FreeBSD.orgにメー ルを送っていただいても結構です. FreeBSDコアチーム FreeBSD コアチームはFreeBSDプロジェク トが会社だとすると取締役会にあたるものです. コアチームとして一番重要 な役割は FreeBSD プロジェクトが全体としてよい方向に向かっていることを確 認することです. 責任感あふれる開発者を上記のソースツリー管理者として 招くこと, また仕事上の都合などでコアチームを やめた人たちの後任を見つけ ることもコアチームの役割です. 現在のコアチームのほとんどは最初は単な る一開発者としてプロジェクトに関わりはじめ, ずるずるといつのまにか深み にはまってしまった人です. コアチームのうち何人かは特定の 担当分野 を持っており, システムのうち一部に特に重点をおいて 面倒を見ています. 忘れてほしくないのはコアチームのほとんどは FreeBSD についてはボラ ンティアであり, FreeBSD プロジェクトからは何ら金銭的な支援を受けていな いということです. ですから, ここでの “責任” は “保証されたサポート” ではありません. そういう意味で, 上記の“取締役会”という例えはあまりよく ないかもしれません. むしろ, FreeBSDのために人生を棒に振ってしまった人 の集まりといった方が正しいかも.... ;) その他のコントリビュータ 最後になりますが, もっとも重要で多数をしめる開発者はフィードバック やバグフィクスをどんどん送ってくれるユーザ自身です. FreeBSDの開発に外 郭から関わっていきたいという人は &a.hackers; ( メーリングリスト情報 を見てください) に参加するといいでしょう. FreeBSD のソースツリーに入っている何かを書いた人の リスト は日に日に長くなっています. あ なたも今日, 何か送ることからはじめてみませんか? :-) もちろんFreeBSD に貢献するにはコードを書くほかにもいろいろな方法があ ります. 助けが求められている分野については, このハンドブックの 貢献の仕方 の節を見てください. ひとことで言うと, FreeBSD の開発組織はゆるやかな同心円状になっています. ともすると中央集権的に見えがちなこの組織は, FreeBSDのユーザが きちんと管理されたコードベースを 容易に追いかけられるようにデザインされ ているもので, 貢献したいという人を締め出す意図は全くありません! 私た ちの目標は安定したオペレーティングシステムと 簡単にインストールして使う ことのできるアプリケーションを提供することであ り, この方法は結構うまくはたらくのです. これからFreeBSDの開発にたずさわろうという人に, 私たちが望むことはただ 一つです: FreeBSDの成功を継続的なものにするために, 現在の開発者と同じ ような情熱を持って接してください! 現在のリリースについて FreeBSD は自由に利用でき Intel i386/i486/Pentium/PentiumPro/Pentium II (とその互換 CPU) 及び DEC Alpha アーキテクチャのコンピュータシステムで動作する, 4.4BSD-Lite2 ベースの全ソー スつきのリリースです. これはもともとカリフォルニア大学バーク レイ校 CSRGグループのソフトウェアがベースとなっており, NetBSD, OpenBSD, 386BSD, そして Free Software Foundation の ソフトウェアなどにより拡張されています. - 94年末の FreeBSD 2.0 のリリースからみると, FreeBSD は性能, + 94 年末の FreeBSD 2.0 のリリースからみると, FreeBSD は性能, 機能, 安定性の面で劇的に改善されました. もっとも大きな変化は仮想メモリシステムに おける改良で, 統合化された VM/file バッファキャッシュを用いる ことで性能を向上させながらも FreeBSD - のメモリの使用量を減らすことが できたことです. おかげで, 最低 - 5MB メモリという制約上でも動作する ようになりました. - その他の拡張としては NIS のクライアントとサーバの 完全サポート, - トランザクション TCP のサポート, ダイヤルオンデマンド PPP, 改良 - SCSI サブシステム, ISDN のサポート, ATM のサポート, FDDI や Fast Ethernet - (100Mbps) などのサポート, Adaptec 2940 (WIDE と narrow) - のサポートの改良と数百件のバグの修正, などがあります. + のメモリの使用量を減らすことができたことです. そのおかげで, 最低 + 5MB メモリという制約上でも動作するようになりました. + その他の拡張としては, NIS のクライアントとサーバの完全なサポート, + トランザクション TCP のサポート, ダイヤルオンデマンド PPP, + 統合された DHCP のサポート, 改良された SCSI サブシステム, + ISDN, ATM, FDDI, Fast Ethernet や Gigabit Ethernet(1000Mbit) + アダプタへの対応, 最新の Adaptec コントローラ対応の改良や, + 数百件におよぶバグの修正などがあります. 私たちはたくさんのユーザからのコメントや 提案をまじめに受け取り, 私たちが正しいと考え, かつ導入の手順が分かりやすいものを提供しようと 努力しています. この (継続的に進化する) プロセスに対するあなたの意見を 心からお待ちしています. FreeBSD では基本配布セットに加え, 移植されたソフトウェア集 として 数百の人気の高いプログラムを提供しています. 99年9月 中旬の時点で 2600 以上の ports (移植ソフトウェア) が存在します. ports には http (WWW) サーバから, ゲーム, 言語, エディタまでありとあらゆるものが含まれています. portsはオリジナル ソースに対する“差分”という形で表現されており, すべての portsを 集めても 50MB程度にしかなりません. こうすることで ports の更新を 容易にし, portsに必要なディスクスペースを小さくすることができます. portsをコンパイルするには, インストールしたいと思っているプログラムの ディレクトリに移動し, make all と実行してコンパイルが成 功したら, make install とすると, あとはすべてシステムが やってくれます. どの portsもオリジナルの配布セットを動的に CDROM または近くの FTP サーバから取ってくるので, ディスクは 構築したいと思っている portsの分だけを準備しておけば十分です. ほとんどの portsは, すでにコンパイルされた状態で “package” として提供されており, ソースコードからコンパイルしたくない場 合, これを使うと (pkg_add というコマンドで) 簡単にインストー ルできます. FreeBSD 2.1 以降のマシンであれば, /usr/share/doc ディレクトリにインストールの手順や FreeBSD を利用する上で有用な ドキュメントがたくさんあります. これらのローカルにインストールされたドキュメントは, HTML ブラウザを使って, 以下の URL から 参照することができます. FreeBSD ハンドブック (英文オリジナル) file:/usr/share/doc/handbook/handbook.html FreeBSD に関する FAQ file:/usr/share/doc/FAQ/FAQ.html また, http://www.FreeBSD.org/ にはマスタ (かなり頻繁に更新されます) がありますので, こちらも参照してください. 合衆国の輸出規制のため, FreeBSD のコア配布セットには DES のコードは 含まれていません. 合衆国国内に限り, DES を使うプログラムなどが, コア配布セットに加えるパッケージとして提供されています. 誰でも使えるパッケージは, 別途, 合衆国国外で提供されています. 合衆国国外からも自由に取得可能な DES の配布セットに関する 詳細は, FreeBSD FAQ にあります. FreeBSD 上で必要とされるセキュリティがパスワードだけであり, Sun や DEC などの別のホストから暗号化されたパスワードをコピーする必要が ないのであれば, FreeBSD の MD5 ベースのセキュリティで十分です. この標準のセキュリティモデルは DES よりも適していると私たちは思って いますし, また, やっかいな輸出規制にもひっかかることはありません. あなたが合衆国国外にいるなら (あるいは国内にいても) 一度試してみて ください! diff --git a/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml b/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml index d4b39e4a01..c862af2208 100644 --- a/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml @@ -1,1156 +1,1158 @@ - Linux エミュレーション + Linux モード 原作: &a.handy; and &a.rich; 訳: &a.jp.kiroh;. 24 September 1996. - Linux エミュレータのインストール + Linux モードのインストール - FreeBSD での Linux エミュレーションは, 大部分の Linux + FreeBSD における Linux バイナリ互換機能は, 大部分の Linux バイナリ(a.out および ELF フォーマット)を実行できる状態になっています. 2.1-STABLE ブラン - チでのエミュレーションでは, Linux DOOM や Mathematica + チでの Linux バイナリ互換機能は, Linux DOOM や Mathematica が実行できます. &rel.current;-RELEASE でのエミュレーションは, - さらに強化されており, Linux 用 の Quake, Abuse, IDL, netrek - など, 多数のソフトウェアが実行できます. + さらに強化されており, Linux 用 の Oracle8, + WordPerfect, StarOffice, Acrobat, Quake, Abuse, IDL, + netrek for Linux など, 多数のソフトウェアが実行できます. Linux オペレーティングシステムには, 特有の機能がいくつかあり, FreeBSD でサポートされていないものもあります. Linux の - /proc ファイルシステム を使ったバイナリは, + /proc ファイルシステムに過度に依存したバイナリは, FreeBSD では実行できません (FreeBSD で使用可能な /proc ファイルシステムとは仕様が異なっているためです). また仮想 8086モードを有効にするなど, i386 に特有なシステムコールを使っている場合も実行できません. - Linux エミュレーションの設定方法は, 使用している FreeBSD - のバージョンによって多少異なっています. + Linux モードの設定方法は, 使用している FreeBSD + のバージョンによっていくらか異なっています. - 2.1-STABLE への Linux エミュレーションのインストール + 2.1-STABLE への Linux モードのインストール 2.1-STABLE の GENERIC カーネルは, Linux との互換性を保つように構築されていません. カーネルの再構築が必要です. 再構築をおこなうには, 2つの方 法があります. 1つは, - エミュレータをカーネル自体にスタティックリンクする方法. + バイナリ互換機能をカーネル自体にスタティックリンクする方法. もう1つは, 動的に Linux ローダブルカーネルモジュール(LKM)をロー ドするようにする方法です. - エミュレータを有効にするには, + Linux バイナリ互換機能を有効にするには, 以下をコンフィグレーションファイル (/sys/i386/conf/LINT など) に追加します. options COMPAT_LINUX Linux DOOM などのアプリケーションを実行したい場合は, 共有メモリも有効 にしておかなければなりません. 以下を追加します. options SYSVSHM Linux のシステムコールを使用するには, 4.3BSD と互換性のある システムコールを備えていることが必要です. 以下の行が含まれていることを確認してください. options "COMPAT_43" - LKM - を使用せずエミュレータをカーネルにスタティックリンクしたい場合は, 以下の行を追加します. + LKM(Loadable Kernel Module) + を使用せず, バイナリ互換機能をカーネルに + スタティックリンクしたい場合は, 以下の行を追加します. options LINUX FreeBSD - カーネルのコンフィグレーション の節の記述に - したがって config と, + カーネルのコンフィグレーション の節の記述に + したがって config と, 新しいカーネルのインストールをおこなってください. LKM を使用する場合は, ローダブルモジュールをインストールしなければなりません. カーネルとローダブルモジュールのバージョンが異なると, カーネル がクラッシュする場合がありますので, 安全を期すためには, カーネルをインストールするたびに, LKM も再インストールしてください. &prompt.root; cd /usr/src/lkm/linux &prompt.root; make all install - カーネルと LKM のインストールが終了したら, root で `linux' + カーネルと LKM のインストールが終了したら, root で + linux コマンドを 実行することで LKM をロードできます. &prompt.root; linux Linux emulator installed Module loaded as ID 0 &prompt.root; LKM がロードされたかどうかを確認するには, modstat を実行します. &prompt.user; modstat Type Id Off Loadaddr Size Info Rev Module Name EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator システムブート時に, LKM をロードするようにするには, 2つの方法がありま す. FreeBSD 2.2.1-RELEASE または 2.1-STABLE では, /etc/sysconfig を, linux=YES のように, NO を YES に変更してください. FreeBSD 2.1-RELEASE およびそれ以 前のバージョンでは, そのような行はありませんので, /etc/rc.local に以下 の行を追加する必要があります. linux - 2.2.2-RELEASE およびそれ以降の 2.2 系列への - Linux エミュレーションのインストール + 2.2.2-RELEASE およびそれ以降の 2.2.x 系列への + Linux モードのインストール options LINUXoptions COMPAT_LINUX を指定する必要はなくなりました. - Linux エミュレーションは + Linux バイナリ互換機能は LKM(“Loadable Kernel Module”) を使用しているため, インストールの際に再起動する必要はありません. ただし, スタートアップファイルで以下のように指定する必要があります. /etc/rc.conf に以下の行が必要です. linux_enable=YES これは結果的に, /etc/rc.i386 の以下の指定を有効にします. # Start the Linux binary emulation if requested. if [ "X${linux_enable}" = X"YES" ]; then echo -n ' linux'; linux > /dev/null 2>&1 fi 実行されたかどうかを確認するには, modstat を使用します. &prompt.user; modstat Type Id Off Loadaddr Size Info Rev Module Name EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod 2.2-RELEASE とそれ以降のシステムの中には, modstat の実行がうまくいかない ものがあるという報告もあります. 何らかの理由で, Linux LKM がロードできな い場合は, options LINUX をカーネルの設定ファイルに指定して, - エミュレータをスタティックリンク + Linux バイナリ互換機能をカーネルにスタティックリンク してください. FreeBSDカーネルのコンフィグレーション の節の記述にしたがって config と, 新しいカーネルのインストールをおこ なってください. 3.0-RELEASE 以降への - Linux エミュレーションのインストール + Linux バイナリ互換機能のインストール options LINUXoptions COMPAT_LINUX を指定する必要はなくなりました. - Linux エミュレーションは + Linux バイナリ互換機能は KLD オブジェクト(“Kernel LoaDable object”) を使用しているため, インストールの際に再起動する必要はありません. ただし, スタートアップファイルで以下のように指定する必要があります. /etc/rc.conf に以下の行が必要です. linux_enable=YES これは結果的に, /etc/rc.i386 の以下の指定を有効にします. -# Start the Linux binary emulation if requested. +# Start the Linux binary compatibility if requested. if [ "X${linux_enable}" = X"YES" ]; then echo -n ' linux'; linux > /dev/null 2>&1 fi KLD がきちんとロードされたかどうかを確認するには, kldstat を使用します. &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko 何らかの理由で, Linux KLD がロードできない場合は, options LINUX をカーネルの設定ファイルに指定して, - エミュレータをスタティックリンク + Linux バイナリ互換機能をカーネルにスタティックリンク してください. FreeBSDカーネルのコンフィグレーション の節の記述にしたがって config と, 新しいカーネルのインストールをおこ なってください. Linux ランタイムライブラリのインストール linux_base port を使用してのインストール 多くの Linux アプリケーションはシェアードライブラリを使用しますので, シェアードライブラリのインストールが終了しなければ, エミュレータのインストールは終わったことになりません. 手動でもインストールできますが, linux_base port を使用するのが簡単です. &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make all install これで, Linux - エミュレータが動作するようになったはずです. 伝説(とメー - ルのアーカイブ :-) によれば, Linux - エミュレーションは, ZMAGIC ライブラリとリンクされている - Linux バイナリに対して, 最もうまく動作するようで す. + バイナリ互換機能が動作するようになったはずです. + 聞いたところ(とメールのアーカイブ :-) によれば, + Linux バイナリ互換機能は ZMAGIC ライブラリとリンクされている + Linux バイナリに対して, 最もうまく動作するようです. Slackware V2.0 などに使われている QMAGIC ライブラリだと, - エミュレータが胸やけするかもしれません. + Linux バイナリ互換機能が胸やけするかもしれません. マイナーバージョンの不一致などを 報告するプログラムもありますが, 普通は 問題にならないようです. 手動でのライブラリのインストール “ports” ディストリビューションが手元にない場合は, 手動でライブラ リをインストールする必要があります. プログラムが必要とする Linux のシェアードライブラリとランタイムリンカが必要です. また Linux ライブラリ の用の``shadow root'' ディレクトリ, /compat/linux, を作成する必要があ ります. FreeBSD で動作する Linux のプログラムが使用するシェアードライ ブラリは,まずこのファイルツリーから検索されます. 例えば, Linux のプログラムが /lib/libc.so をロードしようとした場合には, FreeBSD は, まず /compat/linux/lib/libc.so を開こうとします. 存在にしなかった場合には, 次に /lib/libc.so を試します. シェアードライブラリは, Linux の ld.so が参照するライブラリではなく, /compat/linux/lib 以下にインストールする 必要があります. FreeBSD 2.2-RELEASE 以降では, /compat/linux にかかわる動作が多少異なっており, ライブラリだけでなくすべてのファイルが, “shadow root” /compat/linux から検索されるようになっています. Linux のプログラムが必要とする シェアードライブラリを探す必要があるのは, FreeBSD のシステムに Linux のプログラムをインストールする最初の数回だけでしょう. それが過ぎれば, 十分な Linux のシェアードライブラリがシス テムにインストールされ, 新しくインストールした Linux のバイナリも, 余 計な作業をせずに動作させることができるようになります. シェアードライブラリの追加 linux_base port をインストールした後に, アプリケーションが必要なライブラリ が存在しないというエラーを出したらどうしたらよいでしょうか? Linux のバ イナリがどのシェアードライブラリを必要とし, そしてどこで入手できるか, どのように探したらよいでしょうか? 基本的には, 以下の2種類の方法があり ます(以下の手順にしたがう場合には, 必要なインストール作業をおこなう FreeBSD システム上で root として作業をおこなう必要があります). Linux システムを使用でき, 必要なシェアードライブラリが調べられる場 合には, 単に FreeBSD のシステムにそのライブラリをコピーするだけで す. 例えば, DOOM の Linux バイナリを ftp で持ってきたとします. 使用で きる Linux システムの上に転送して, ldd linuxxdoom とやれば, 必要とす るシェアードライブラリがチェックできます. &prompt.user; ldd linuxxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 最後のカラムに表示されている すべてのファイルを持って来て, /compat/linux の下 に置き, 最初のカラムに示されるファイル名から シンボリックリンクを張る必 要があります. すなわち, FreeBSD のシステムで, 以下のようなファイルが必要となります. /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 最初のカラムに表示されているファイルと, メジャーバージョンの同じ Linux シェアードライブラリを既にインストールしている場合は, 新たにコピーする 必要はありません. 既にあるライブラリで動作するはずです. ただ, 新しいバー ジョンのシェアードライブラリがある場合は, 新しいものをコピーすることを お奨めします. 新しいライブラリにシンボリックリンクを変更したら, 古いラ イブラリは削除してかまいません. /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 以上のようなライブラリがインストールされており, 新しいバイナリに対する ldd の出力が 以下のようになる場合を考えます. libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 このように最後の番号が1つか2つ古いだけならば, 普通は /lib/libc.so.4.6.29 をコピーする必要はありません. わずかに古いライブラリでも, プログラムは動作するはずだからです. もちろん, 新しいライブラリと置き換えて, 以下のようにしても構いません. /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 シンボリックリンクのメカニズムは, Linux バイナリにのみ必要 なことに注意してください. FreeBSD のランタイムリンカは, メジャーリビジョ ン番号の一致したライブラリを検索しますから, ユーザが気にする必要はありません. <filename>ld.so</filename> の設定 — FreeBSD 2.2-RELEASE およびそれ以降 このセクションは, FreeBSD 2.2-CURRENT 以降にのみ当てはまります. 2.1-STABLE を使用している方は, 飛ばしてください. 最後に, FreeBSD 2.2-RELEASE を使われている場合は, Linux のランタイムリンカと その設定ファイルがシステムに導入されていることを 確認してください. これらのファイルは, FreeBSD システムの適切な位置(/compat/linux ツリー以 下)にコピーされている必要があります. /compat/linux/lib/ld.so /compat/linux/etc/ld.so.config 使用できる Linux システムがない場合は, 必要なファイルは近くの FTP サイ トから入手してください. 各種ファイルの入手先についての情報を, 後に付 けておきます. ここでは, 必要なファイルの入手先がわかっているものとしま す. 以下のファイルを取得します (バージョンの不一致を避けるために, すべて同一 の FTP サイトから入手してください). 取得したファイルを /compat/linux 以下にインストールしてください(例えば, /foo/bar は, /compat/linux/foo/bar にインストールされます). /sbin/ldconfig /usr/bin/ldd /lib/libc.so.x.y.z /lib/ld.so ldconfigldd は, /compat/linux の下にある必要はありません. システム のどこにあっても構いません. ただ, FreeBSD の同名のコマンドと間違えないように 注意してください. /usr/local/bin の中に, ldconfig-linux, ldd-linux とし てインストールするのもよいアイディアでしょう. /compat/linux/etc/ld.so.conf - ファイルを作成し, Linux ラインタイムリンカ - がシェアードライブラリを検索する - ディレクトリを記述してください. このファ - イルはプレインテキストファイルで, - それぞれの行にディレクトリ名を含みま す. + ファイルを作成し, Linux ラインタイムリンカが + シェアードライブラリを検索するディレクトリを記述してください. + このファイルはプレインテキストファイルで, + それぞれの行にディレクトリ名を含みます. /lib/usr/lib は標準ですから, 以下のようなディレクトリが追加できま す. /usr/X11/lib /usr/local/lib Linux バイナリが, /lib/libc.so - というライブラリを開いた場合, エミュレー タは内部で, + というライブラリを開いた場合, Linux ABI サポートは内部で, ファイル名を /compat/linux/lib/libc.so - にマップします. エ ミュレータがライブラリを検索するために, + にマップします. Linux ABI ローダがライブラリを検索できるよう, すべての Linux のライブラリ (/compat/linux/lib/libc.so, /compat/linux/usr/X11/lib/libX11.so など) は, /compat/linux 以下にインストールされていなければなりません. FreeBSD 2.2-RELEASE を使用している場合は, Linux の ldconfig プログラム を実行する必要があります. &prompt.root; cd /compat/linux/lib &prompt.root; /compat/linux/sbin/ldconfig ldconfig はスタティックリンクされていますから, 実行するのにシェアードラ イブラリを必要としません. ldconfig は, /compat/linux/etc/ld.so.cache ファイルを作成し, すべてのシェアードライブラリの名前を格納します. ライ ブラリの追加をおこなった場合には, ldconfig を再実行して, このファイルを作り 直さなければなりません. 2.1-STABLE では, /compat/linux/etc/ld.so.cache をインストールしたり, ldconfig を実行したりしないでください. 2.1-STABLE では, システムコー ルの実装方法が異なるため, ldconfig は使用されません. これで, libc シェアードライブラリを必要とする Linux バイナリを実行する設 定が終了しました. lddldd 自身に実行してテストしてください. ldd-linux としてインストールしている場合は, 以下のような結果になるはず です. &prompt.root; ldd-linux `which ldd-linux` libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 ここまで終了すれば, 新しい Linux のバイナリを インストールできます. 新しい Linux バイナリをインストールするときは, それがシェアードライブ ラリを必要とするかどうか確認してください. 必要とする場合は, /compat/linux 以下に インストールされているかどうか確認してください. こ れは, Linux の ldd を新しいプログラムに 対して実行し, 出力を確認するこ とによりおこなえます. ldd (&man.ldd.1; マニュアルページも参照してください)は, プ ログラムが必要とするシェアードライブラリのリストを, majorname (jumpversion) => fullname という形式で出力します. fullname のかわりに not found と出力される場合は, ライブラリの追加をす る必要があります. 必要なライブラリの名前は, majorname に libXXXX .so.N.mm という形式で示されています. Linux の FTP サイトで libXXXX.so.N.mm を探し, インストールしてください. XXXX(名前)とN (メジャー リビジョン番号)は一致している必要があります. マイナー番号 mm は, それほ ど重要ではありませんが, なるべく最新のものをインストールするようにして ください. Linux の ELF バイナリをインストールする ELF のバイナリを使うためには, “マークをつける(branding)”作業が必要になります. マークのない ELF バイナリを実行しようとすると, 以下のようなエラーメッセージを うけとってしまうことでしょう. &prompt.user; ./my-linux-elf-binary ELF binary type not known Abort カーネルが FreeBSD の ELF バイナリと Linux のバイナリとを 見分けられるようにするためには, &man.brandelf.1; を以下のようにして使ってください: &prompt.user; brandelf -t Linux my-linux-elf-binary 今ではGNU のツールたちが, ELFバイナリに自動的に適切なマークを付加するようになったので, 今後はこの作業もだんだんと必要なくなってゆくでしょう. ホストネームリゾルバの設定 DNS がうまく動作しなかったり, 以下のようなエラーメッセージが表示され る場合は, /compat/linux/etc/host.conf ファイルを設定する必要があります. resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword ファイルの内容を以下のように設定してください. order hosts, bind multi on ここで, order は /etc/hosts を最初に検索し, 次にDNSを検索するように指定 します. /compat/linux/etc/host.conf がインストールされていない場合は, Linux のアプリケーションは, FreeBSD の /etc/host.conf を使用しようとして, 文法の違いによる警告を表示します. /etc/resolv.conf を使用してネームサー バを設定していない場合には, bind を削除してください. 最後になりますが, 2.1-STABLE を使用している場合は, RESOLV_HOST_CONF 環境変数を指定して, アプリケーションにホストテーブル の検索方法を指定する必要があります. FreeBSD 2.2-RELEASE かそれ以降を使用している場合 は, スキップしてください. /bin/csh を使っている場合は, 以下のようにし ます. &prompt.user; setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf /bin/shの場合は, 以下のようにします. &prompt.user; RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF 必要なファイルを探すには 以下の情報は, この文書が書かれた時点では有効ですが, FTP サイトの 名前, ディレクトリ, 配布ファイル名などは, 変更されている可能性がありま す. 訳注: ここに取り上げられている FTP サイトは, 日本国内にもミラーサイト が多数存在します. なるべく近くの FTP サイトからファイルを入手してくだ さい. Linux は, いくつかのグループが, それぞれ独自のバイナリ配布セットを作成 して配布しています. 配布セットは, “Slackware” や “Yggdrasil” など の名前がつけられています. これらの配布セットは, 多くの FTP サイトから 入手できます. ファイルが展開されており, 必要なファイルのみを取得できる 場合もありますが, 通常は圧縮された配布セットの形で入手できます. 配布 セットは, いくつかのサブディレクトリに, gzip で圧縮された tar ファイル として格納されています. それぞれの配布セットの一次配布先は, 以下の通り です. sunsite.unc.edu:/pub/Linux/distributions tsx-11.mit.edu:/pub/linux/distributions ヨーロッパのミラーサイトの例: ftp.luth.se:/pub/linux/distributions ftp.demon.co.uk:/pub/unix/linux src.doc.ic.ac.uk:/packages/linux/distributions 混乱を避けるために, ここでは Slackware だけを取り上げます. この配布セットは, 多くのサブディレクトリ内にある 別々のパッケージから構成されていま す. 通常, パッケージはインストールプログラムにより自動的に制御されま すが, “手動で”おこなうことも可能です. まず配布セットの中の, contents サブディレクトリの内容を書くにしてください. ここには多く の小さなテキストファイルが含まれおり, それぞれのパッケージの内容が記述されています. 必要なファイルを探している場合は, まず contents 内のテキ - ストファイルを取得し, そのファイルの中から grep + ストファイルを取得し, そのファイルの中から grep を使用して検索するのが, 最も速い方法でしょう. - 以下に必要となるであろうファイルを, grep を使用 + 以下に必要となるであろうファイルを, grep を使用 して検索した例を示します. Library Package ld.soldso ldconfigldso lddldso libc.so.4shlibs libX11.so.6.0xf_lib libXt.so.6.0xf_lib libX11.so.3oldlibs libXt.so.3oldlibs この場合は, ldso, shlibs, xf_lib, oldlibs というパッケージが必要なこと がわかります. それぞれのcontentsファイルの中で, PACKAGE LOCATION と書いてある行を探してください. - その行に, パッケージが含まれている“ディ スク”, + その行に, パッケージが含まれている“ディスク”, 今回の場合はサブディレクトリ名が書かれています. たとえば, 以下の ようになります. Package Location ldso diska2 shlibs diska2 oldlibs diskx6 xf_lib diskx9 “diskXX” というのは, 配布セットの slackware/XX サブディレクトリ を示します. それ以外の場合は, contrib サブディレクトリに格納されて います. 今回の場合は, 以下のファイルを取得すればいいことがわかります (ファイル名は, 配布セットのルートディレクトリからの相対パスで示してあ ります). slakware/a2/ldso.tgz slakware/a2/shlibs.tgz slakware/x6/oldlibs.tgz slakware/x9/xf_lib.tgz gzip で圧縮された tar ファイルから必要なファイルを /compat/linux ディ レクトリに格納してください(必要なファイルのみを展開するか, あるいは必要でないファイルを後で削除してください). これで作業は終了です. 参照: ftp://ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README /usr/src/sys/i386/ibcs2/README.iBCS2 FreeBSD への Mathematica のインストール 原作: &a.rich; and &a.chuck; 訳: &a.jp.kiroh;. この文書は, Mathematica 2.2 の Linux バイナリディストリビューションを, FreeBSD 2.1 にインストールする方法について説明します. Mathematica は, そのままでは FreeBSD をサポートしていませんが, Linux は サポートしています. ですから, Linux エミュレータの設定が終わってしまえ ば, Mathematica を動作させる環境はほとんど整ったことになります. DOS 用のスチューデント版 Mathematica から Linux バージョンへのアップグレー ド価格は, 執筆時点 (1996年5月) では, $45.00 です. 直接 Wolfram(電話番号(217) 398-6500)に注文して, 支払いはクレジットカー ドでおこなえます. Mathematica ディストリビューションの展開 バイナリは, Wolfram から CDROM で配布されています. CDROM には, 1ダースほどの tar ファイルが含まれており, それぞれサポートされているアーキテクチャに対応しています. Linux 用のファイルは, LINUX.TAR です. 例えば /usr/local/Mathematica 以下にインストールする場合は, 以下のようにしま す. &prompt.root; cd /usr/local &prompt.root; mkdir Mathematica &prompt.root; cd Mathematica &prompt.root; tar -xvf /cdrom/LINUX.TAR Mathematica パスワードの取得 Mathematica を実行する前に, 使用するマシンに対応した “machine ID” を Wolfram から取得する必要があります. Linux 互換ランタイムライブラリがインストールされており, - mathematica の展 開が終了したら, Install ディレクトリで + Mathematica の展開が終了したら, Install ディレクトリで mathinfo プログラムを使用す ることで “machine ID” を得ることができます. &prompt.root; cd /usr/local/Mathematica/Install &prompt.root; mathinfo LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented richc.isdn.bcm.tmc.edu 9845-03452-90255 ここで, richc の “machine ID” は, 9845-03452-90255 となります. ioctl のメッセージは無視してください. まだ FreeBSD では実装されていません. Mathematica を実行するたびに同様のメッセージが表示されますが, 実際の使 用に問題はありませんので, 無視してかまいません. 電子メールや電話, ファックスなどで Wolfram に “machine ID” を知らせ て登録すると, いくつかの番号のグループからなるパスワードが送り返されて きます. パスワードを, マシン名, ライセンス番号とともに, - mathpass ファイルに追加します. + mathpass ファイルに追加します. 追加は, 以下のようにおこないます. &prompt.root; cd /usr/local/Mathematica/Install &prompt.root; math.install ライセンス番号と, Wolfram から送られてきたパスワードを入力を求めます. 入力を間違えたりして, math.install の実行が失敗しても大丈夫です. mathpass ファイルを手動で編集して, 情報を訂正してください. パスワードの入力後, math.install では, インストール方法を, デフォルト 設定でのインストールか, 自分で方法を指定するインストールから選ぶことができます. 筆者のようにインストールプログラムを信用していない場合は, 自 分でディレクトリを指定する方を選択するでしょう. 自分で指定するインストー ルを選んだ場合, math.install 自身ではディレクトリの作成はおこないません. 注意してください. 別のウィンドウでシェルを開いて, 指定するディレクトリ を作成してください. 存在しないディレクトリを指定して, math.install が インストールに失敗した場合には, ディレクトリを作成し, math.install を 再び実行してください. 筆者らがインストール先に選んだディレクトリは, 以下の通りです. くれぐれもあらかじめ作成してから, math.install で指定す るようにしてください. /usr/local/Mathematica/bin for binaries /usr/local/Mathematica/man/man1 for man pages /usr/local/Mathematica/lib/X11 - for the XKeysymb file + for the XKeysymb file また, システムレコードファイルとして, /tmp/math.record を使用するように 設定することもできます. このファイルには, セッションのログが記録されます. この設定が終了すると, math.install は残りのファイルを展開して, 必 要な場所に格納します. Mathematica ノートブックの機能は, X フロントエンドとして本体とは別に含 まれています. X フロントエンドを正しくインストールするには, /usr/local/Mathematica/FrontEnd ディレクトリに移動し, ./xfe.install シェ ルスクリプトを実行します. インストール先を指定しなければなりませんが, あらかじめ作成する必要はありません. 必要なディレクトリは, すべて math.install によって作成されているからです. インストールが終了したら, /usr/local/Mathematica/bin ディレクトリに, mathematica という名前の シェルスクリプトが新たに作成されているはずです. 最後に, Mathematica がインストールしたシェルスクリプトを修正する必要 があります. /usr/local/Mathematica/bin に含まれるすべてのシェルスクリプ トの先頭部分に以下の行を追加します. XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB これは, Mathematica が使用する Mathematica バージョンのキーマップファイル XKeysymDB の場所を指定するものです. 2.1-STABLE を使用している場合は, 以下の行も追加してください. RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF これは, Mathematica に Linux バージョンの host.conf を使用するように指定し ます. FreeBSD の host.conf の文法は, Linux のものと異なっているため, この 指定をおこなわないと, /etc/host.conf に関わるエラーが発生します. 新しいマニュアルページを利用したい場合は, さらに /etc/manpath.config ファイ ルを修正する必要があります. また自分の ~/.cshrc を変更して, /usr/local/Mathematica/bin をパスに追加してください. これでインストール作業はすべて終了です. mathematica とタイプすれば, 見栄えのする Mathematica ノートブックが表示されるはずです. Mathematica には, Motif ユーザインタフェースが含まれますが, スタティックにリンクさ れているため, Motif のライブラリは必要ありあません. 頑張って Mathematica をインストールしてください. バグ ノートブックフロントエンドは, 以下のようなエラーメッセージを表示して, ハングすることがあることが知られています. File .../Untitled-1.mb appears to be broken for OMPR.257.0 今のところ原因はわかっていませんが, このバグが影響を及ぼすのは, ノートブックの X window System 用 フロントエンドのみです. Mathematica エンジン本体に影響は ありません. そのため, ``math'' によって起動されるコマンドラインのインタ フェースを使用している場合は, このバグは関係ありません. 謝辞 - &a.sos;と&a.peter;に深く感謝します. - Linuxエミュレーションが現在の形にあるのは, 彼らのおかげです. + &a.sos; と &a.peter; に深く感謝します. + Linux モードが現在の形にあるのは, 彼らのおかげです. そして, 彼ら二人にハッパをかけて, 犬のように働かせた Michael - Smithに. 今やLinuxエミュレーションは, linuxよりうま - くlinuxバイナリを実行できます! :-) + Smithに. 今や Linux モードは, Linuxよりうまく + Linux バイナリを実行できます! :-) - エミュレーションはどのような原理で行なっているのですか? + Linux モードはどのような原理で動作しているのですか? このセクションは, ほとんどが chat@FreeBSD.org メーリングリストに投稿された Terry Lamberttlambert@primenet.com 氏のメール(Message ID: <199906020108.SAA07001@usr09.primenet.com>) に基づいています. FreeBSD は, “実行クラスローダ(execution class loader)” と呼ばれる抽象的な機構を持っています. これは &man.execve.2 システムコールに追加される形で実装されています. FreeBSD は, シェルインタプリタやシェルスクリプトを実行するための #! ローダを持った単一のプログラムローダではなく, プログラムローダのリストを備えています. 歴史的に言って, UNIX プラットフォームでマジックナンバ(一般的にファイル先頭の 4 ないし 8 バイト部分)の検査を行なうのはプログラムローダだけです. プログラムローダは, それがシステムで実行できるバイナリなのか確認して, それが確認できればバイナリローダを呼び出します. もし, それがそのシステム用のバイナリでない場合には, &man.execve.2; システムコールの呼び出しは失敗の戻り値を返し, シェルがシェルコマンドとして実行しようと試みるわけです. この仮定は, “現在利用しているシェルがどのようなものであっても”変わりません. 後になって, &man.sh.1; に変更が加えられました. それは先頭の 2 バイトを検査し, :\n だったら シェルとして代わりに &man.csh.1; を呼び出す, というものです(この変更は SCO が最初に行なったと記憶しているのですが, 間違いであったら指摘して下さい). 現在の FreeBSD は, プログラムローダリストを走査します. その際, 空白文字までの文字列をインタプリタとして認識する, 通常の #! ローダを用いるため, 該当するものが存在しなければ最終的に /bin/sh がロードされます. - Linux バイナリエミュレーションを行なうため, FreeBSD は + Linux ABI をサポートするため, FreeBSD は ELF バイナリを示すマジックナンバを確認します. (ただし, この段階で FreeBSD, Solaris, Linux, そしてその他にも存在する ELF イメージ形式を使っている OS を区別することはできません). ELF ローダは, 特殊なマーク(brand)があるかどうか探します. このマークとは, ELF イメージのコメントセクションのことです. SVR4/Solaris の ELF バイナリには, このセクションは存在しません. Linux バイナリを実行するためには, ELF バイナリに &man.brandelf.1; で説明されている Linux のマークが 付けられていなければなりません. &prompt.root; brandelf -t Linux file 上のようにすることで, 指定されたファイルは Linux のマークが付けられ, ELF ローダが認識できるようになります. ELF ローダが Linux マークを確認すると, ローダは proc 構造体内の ある一つのポインタを置き換えます. システムコールは全て, この置き換えられたポインタ(伝統的な UNIX システムでは, システムコールが sysent[] 構造体の配列として実装されています)を基準に呼び出されます. またそのプロセスには, Linux カーネルモジュールに必要な シグナルトランポリンコード(訳注: シグナルの伝播を実現するコード)用の特殊なトラップベクタの設定や, 他の(細かな)調整のための設定が行なわれます. Linux システムコールベクタは, さまざまなデータに加えて カーネルモジュール内のアドレスを指す sysent[] エントリのリストを含んでいます. Linux バイナリがシステムコールを発行する際, トラップコードは proc 構造体を用いてシステムコール関数ポインタを 解釈します. そして, FreeBSD ではなく Linux 用の システムコールエントリポイントを得るわけです. - さらに Linux エミュレーションは, 状況に応じて + さらに Linux モードは, 状況に応じて ファイルシステム本来のルートマウントポイントを置き換えて ファイルの参照を行ないます. これは, union オプションを指定して マウントされたファイルシステム(unionfs ではありません!)が 行なっていることと同じです. ファイルを検索する際にはまず /compat/linux/original-path ディレクトリを, それから見つけられなかったときにのみ, /original-path を調べます. こうすることで, 他のバイナリを要求するバイナリの実行を可能にしています - (したがって, Linux toolchain はエミュレーション環境下で完全に動作するわけです). + (したがって, Linux 用プログラムツールは Linux ABI サポート環境下で完全に動作するわけです). またこれは, もし対応する Linux バイナリが存在しない場合に Linux バイナリが FreeBSD バイナリをロードしたり, 実行したりすることが可能であること, その Linux バイナリに自分自身が Linux 上で実行されていないことを 気付かせないようにする目的で, &man.uname.1; コマンドを /compat/linux ディレクトリに 置くことができる, ということを意味します. 要するに, Linux カーネルが FreeBSD カーネルの内部に存在しているわけです. カーネルによって提供されるサービス全ての実装の基礎となるさまざまな関数は, FreeBSD システムコールテーブルエントリと Linux システムコールテーブルエントリの 両方で共通に利用されています. これらにはファイルシステム処理, 仮想メモリ処理, シグナル伝送, System V IPC などが含まれますが, FreeBSD バイナリは, FreeBSD グルー(訳注: glue; 二者の間を仲介するという意味)関数群, そして Linux バイナリは Linux グルー関数群を用いる, という点だけが異なります(過去に存在したほとんどの OS は, 自分自身のためのグルー関数群しか備えていません. 前述したように, システムコールを発行する際, 各々のプロセスの proc 構造体内にある, ローダによって動的に初期化されるポインタを参照してアドレスを得る代わりに, 静的でグローバルな sysent[] 構造体の配列に システムコール関数のアドレスが直接格納されているのです). さて, どちらを本来の FreeBSD ABI(訳注: Applications Binary Interface; 同じ CPU を利用したコンピュータ間でバイナリを共有するための規約のこと) と呼ぶべきなのでしょうか? 実は, どちらが本来のものであるかということを論ずることに意味はありません. 基本的に, FreeBSD グルー関数群はカーネルの中に静的にリンクされていて, Linux グルー関数群は静的にリンクすることも, カーネルモジュールを介して利用することもできるようになっている, という違いがあるだけ(ただしこれは現時点においての話です. これは将来のリリースで変更される可能性がありますし, おそらく実際に変更されるでしょう)です. あ, 「でもこれは本当にエミュレーションと呼べるのか」って? 答えは「いいえ」です. これは一つの ABI 実装にすぎず, エミュレーションとは異なります. エミュレータ(シミュレータでもないことを あらかじめ断っておきましょう)が呼び出されているわけではありません. - では, どうして “Linux エミュレーション” と呼ぶのでしょうか? + では, これが良く “Linux エミュレーション” と呼ばれるのは何故でしょうか? それはもちろん FreeBSD の売りにするため 8-) でもあるのですが, 実際には, 次のような理由によります. この機能が初めて実装された頃, 動作原理を説明する以外に この機能を表現する言葉はありませんでした. しかし, コードをコンパイルしたりモジュールをロードしない場合, 「FreeBSD 上で Linux バイナリを実行する」言う表現は, 厳密に考えると適切ではありません. そこで, その際にロードされているもの自身を表現する言葉—すなわち “Linux エミュレータ”が必要だったのです.