diff --git a/ja_JP.eucJP/books/handbook/introduction/chapter.sgml b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml index aabffd4b1a..3089cc8a80 100644 --- a/ja_JP.eucJP/books/handbook/introduction/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml @@ -1,1017 +1,1013 @@ Jim Mock 改訂: はじめに この章では FreeBSD に興味を持っていただきありがとうございます! この章では FreeBSD の歴史、目標、開発モデルなど、 FreeBSD プロジェクトに関するさまざまな事柄を扱います。 この章に書かれている話題は、次のようなものです。 FreeBSD とその他のオペレーティングシステムとの違い FreeBSD プロジェクトの歴史 FreeBSD プロジェクトの目標 FreeBSD オープンソース開発モデルの基本的な考え方 そして、FreeBSD という名前の由来について FreeBSD へようこそ! 4.4BSD-Lite FreeBSD は、4.4BSD-Lite から派生したオペレーティングシステムで、 Intel (x86 および &itanium;), AMD64, Alpha, Sun &ultrasparc; コンピュータに対応しています。 他のアーキテクチャに対する移植も進行中です。 FreeBSD の概要については、 次のセクションをご覧ください。 FreeBSD の歴史や、 現在のリリースについても読むことができます。 プロジェクトへの何らかの貢献 (ソースコード、ハードウェア、 資金の提供など) について興味があれば、 FreeBSD への貢献をご覧ください。 FreeBSD で何ができるの? FreeBSD には多くの注目すべき機能があります。 例を挙げれば以下のようになります: プリエンプティブマルチタスキング 優先度を動的に調節する機能を備えることで アプリケーションとユーザとの間で円滑かつ公平な コンピュータ資源共有を実現し、 特に高い負荷にも耐えることができる堅牢さを備えた プリエンプティブマルチタスキング マルチユーザ機能 多くの人々が 1 つの FreeBSD システムをさまざまな目的で同時に使うことを可能にする マルチユーザ機能。 これは例えば、プリンタやテープデバイスといったシステムの周辺機器が、 そのシステムを利用する全てのユーザだけでなく ネットワーク経由においても自然な形で共有され、 さらに重要なシステム資源の使い過ぎを防ぐために 個々の資源に対する制限がユーザ単位、 グループ単位で設定できる、というようなことを意味しています。 TCP/IP ネットワーキング SLIP や PPP, NFS, DHCP, NIS といった業界標準規格の サポートを含んだ堅固な TCP/IP ネットワーキング。 これによって、FreeBSD マシンが商用サーバと同じように相互に運用でき、 NFS (リモートファイルアクセス) や、電子メールサービスのような 極めて重要な機能を提供します。 また、WWW や FTP, ルーティング、ファイアウォール (セキュリティ) サービスを用いてインターネットと 接続できます。 メモリ保護 アプリケーション (あるいはユーザ) がお互いに干渉できない ようにするメモリ保護機能。 アプリケーションがクラッシュしても、どのような場合でも 他のアプリケーションには影響を与えません。 FreeBSD は 32ビット のオペレーティングシステム (Alpha 版、&itanium; 版、AMD64 版および &ultrasparc; 版は 64 ビット) であり、 最初からそのようにこつこつと設計されました。 X Window System XFree86 業界標準である X Window システム (X11R6) は、普通の VGA カードやモニタでグラフィカルユーザ インタフェース (GUI) を提供し、 すべてのソースコードも一緒に提供されます。 バイナリ互換性 Linux バイナリ互換性 SCO バイナリ互換性 SVR4 バイナリ互換性 BSD/OS バイナリ互換性 NetBSD Linux や SCO, SVR4, BSDI, NetBSD 用に作られた多くの プログラムとのバイナリ互換性 何千ものすぐに実行可能な アプリケーションが FreeBSD の portspackages コレクションで利用可能です。 ここに用意されているものは ネットを探し回る必要がありません インターネット上で入手可能な、 移植が容易な 何千ものアプリケーションを追加できます。FreeBSD は最も評判のよい商用の &unix; システムとソースコードレベルで互換性があります。このため、 ほとんどのアプリケーションは、もしあったとしてもほんの 少しの変更でコンパイルすることができます。 仮想メモリ デマンドページング仮想メモリ とそれに 付随の VM/buffer キャッシュ の設計は、 多くのメモリを要求する アプリケーションに対して効率よくメモリを 与えるようにする一方で、 他のユーザに対しても対話的な応答を維持します。 対称型マルチプロセッシング (SMP) 複数の CPU を搭載したマシンにおける SMP 機能のサポート。 コンパイラ C コンパイラ C++ コンパイラ FORTRAN 完全な CC++, Fortran, Perl の 開発ツール。進んだ研究や開発のための多くの他の言語も ports や packages コレクションで提供されています。 ソースコード システム全体のソースコード が提供されているので、 要求に合わせて環境を最大限に適合させることができます。 真のオープンシステムが利用できるのですから、 所有権のある解決方法に締めつけられ、 ベンダのなすがままになる必要はありません。 膨大な量の オンラインドキュメント もう書ききれません! 4.4BSD-Lite Computer Systems Research Group (CSRG) U.C. Berkeley FreeBSD はカリフォルニア大学バークレイ校の Computer Systems Research Group (CSRG) による 4.4BSD-Lite リリースを基にしており、 BSD システムの開発の優れた伝統を守り続けています。 CSRG による素晴らしい活動に加えて、 FreeBSD プロジェクトは何千時間もの時間を注ぎ込んで、 実際の使用の場において最大の性能と信頼性を 発揮するためにシステムのチューニングをおこなっています。 多くの大企業が PC オペレーティングシステムの分野で 実現しようと奮闘しているそのような機能や性能、信頼性を FreeBSD は今すぐ提供できます! あなたの思いつく限りのアプリケーションは、何でも FreeBSD で 実行できます。ソフトウェア開発からファクトリオートメーション、 在庫制御から遠く離れた人工衛星のアンテナの方向調整まで; 商用 &unix; 製品でできることは、FreeBSD でも十分にできるのです! また、FreeBSD は世界中の研究センターや大学によって開発される 文字通り何千もの高品質で、たいていはほとんど無料で利用できる アプリケーションによる恩恵を得ることができます。 商用のアプリケーションも提供されており、 日々増え続けています。 FreeBSD のソースコードは広く提供されているので、 システムも特別なアプリケーションやプロジェクトに合わせて、 いくらでもカスタマイズすることができます。 これは有名な商業ベンダから出ているほとんどのオペレーティング システムでは不可能なことです。以下に現在 FreeBSD を 使っている人々のアプリケーションの例をいくつか上げます: インターネットサービス: FreeBSDに組み込まれている 頑強な TCP/IP ネットワーキング機能は次のようなさまざまなインターネット サービスの理想的なプラットフォームになります: FTP サーバ FTP サーバ web サーバ World Wide Web サーバ (標準、もしくは安全な [SSL]) ファイアウォール IP マスカレード ファイアウォールと NAT (IP マスカレード) ゲートウェイ 電子メール 電子メールサーバ USENET USENET ニュースおよび電子掲示板システム さらにいろいろ… FreeBSD を利用すれば、小規模で安価な 386 クラスの PC でも気軽に導入することができますし、 事業の成長に合わせてアップグレードした 4 つの Xeon プロセッサと RAID ストレージデバイスを 備えたシステムでも、全くそのまま使うことができるのです。 教育: あなたは計算機科学または工学の学生ですか? オペレーティングシステムやコンピュータアーキテクチャ、 ネットワーキングを学習するなら、FreeBSD を手に 経験するのが一番よい方法です。自由に利用できる CAD や数学、 グラフィックデザインのパッケージもいくつもあり、 コンピュータに関心を持った人が他の人 の成果を手に入れて利用するのにとても役に立ちます。 研究: システム全体のソースコードが利用できるため、 FreeBSD はオペレーティングシステムの研究だけでなく、 計算機科学の他の部門においても優れたプラットフォームです。 自由に利用できる FreeBSD の特長は、オープンフォーラムで 議論される特別なライセンスの同意や制限について心配することなく、 離れたグループでもアイディアや開発の共有による共同研究を可能にします。 ルータ DNS サーバ ネットワーキング: 新しいルータが必要? ネームサーバ (DNS) は? 内部のネットワークを人々から守るファイアウォールは? FreeBSD はすみに眠っている使われていない 386 や 486 の PC を簡単に 洗練されたパケットフィルタリング機能を持つ高級なルータに 変えることができます。 X Window System XFree86 X Window System Accelerated-X X Window ワークステーション: - 自由に利用できる &xfree86; サーバや Xi Graphics 社から提供されている 優れた商業サーバを使うことによって、安価な X 端末 として FreeBSD を使うこともできます。X 端末とは違って FreeBSD は多くのアプリケーションをローカルに走らせることもでき、 中心のサーバの負荷を軽減することも可能です。 FreeBSD は ディスクレス でもブート可能であり、 個々のワークステーションを安価で、容易に管理することさえ 可能にします。 GNU Compiler Collection ソフトウェア開発: 基本的な FreeBSD システムには 有名な GNU の C/C++ コンパイラやデバッガを含んだ完全な開発ツールがついてきます。 FreeBSD は、ソースとバイナリの両方とも、CDROM または anonymous FTP で入手可能です。 詳しくは をご覧ください。 FreeBSD はどこに使われていますか? ユーザ FreeBSD を利用している大規模サイト FreeBSD は、以下のサイトに代表されるような、 インターネット上で最大クラスのサイトで利用されています。 Yahoo! Yahoo! Hotmail Hotmail Apache Apache Blue Mountain Arts Blue Mountain Arts Pair Networks Pair Networks Sony Japan Sony Japan Netcraft Netcraft Weathernews Weathernews Supervalu Supervalu TELEHOUSE America TELEHOUSE America Sophos Anti-Virus Sophos Anti-Virus JMA Wired JMA Wired また、この他にもあります。 FreeBSD プロジェクトについて 以下の節では簡単な歴史やプロジェクトの目標、 開発モデルなど、普段は表にでない話題を提供しています。 Jordan Hubbard 寄稿: FreeBSD 小史 386BSD Patchkit Hubbard, Jordan Williams, Nate Grimes, Rod FreeBSD プロジェクト history FreeBSD プロジェクトは 1993 年の始めに Unofficial 386BSD Patchkit の最後の 3 人のまとめ役によって、部分的に patchkit から派生する形で開始されました。ここでの 3 人のまとめ役というのは、Nate Williams と、Rod Grimes と、私 (Jordan K. Hubbard) です。 386BSD 私たちのもともとの目標は、patchkit という仕組みではもう十分に解決できなくなってしまった 386BSD の数多くの問題を修正するための、386BSD の暫定的なスナップショットを作成することでした。 こういった経緯を経ているので、 このプロジェクトの初期の頃の名前が 386BSD 0.5 386BSD 暫定版 (Interim) であったということを覚えている人もいるでしょう。 Jolitz, Bill 386BSD は、Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成したオペレーティングシステムです。当時の 386BSD は、ほぼ一年にわたって放っておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) というひどい状況に苦しんでいました。 作者の代わりに問題を修正し続けていた patchkit は日を追うごとに不快なまでに膨張してしまっていました。 このような状況に対して、このままではいけない、 何か行動を起こさなければ、 ということで異議を唱えるものは私たちのなかにはいませんでした。 そして私たちは挑戦することを決断し、 暫定的な クリーンアップ スナップショットを作成することで Bill を手助けしようと決めたのです。しかし、 この計画は唐突に終了してしまいました。Bill Jolitz が、 このプロジェクトに対する受け入れ支持を取り下げることを突然決意し、 なおかつこのプロジェクトの代わりに何をするのかを一切言明しなかったのです。 Greenman, David Walnut Creek CDROM たとえ Bill が支持してくれないとしても、 われわれの目標には依然として やる価値があると決心するのにさしたる時間はかかりませんでした。 そこで David Greenman が考案した名称 FreeBSD を私たちのプロジェクトの名前に採用し、 新たなスタートを切りました。 この時点でのプロジェクトの初期目標は、すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者たちと相談して決められました。 プロジェクトが実現に向けて軌道に乗ってきたことが明確になった時点で、 私は Walnut Creek CDROM 社に連絡してみました。CDROM を使って FreeBSD を配布することによって、 インターネットに容易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考えたからです。Walnut Creek CDROM 社は FreeBSD を CD で配布するというアイデアを採用してくれたばかりか、 作業するためのマシンと高速なインターネット回線を私たちのプロジェクトに提供してくれました。 当時は海のものとも山のものともわからなかった私たちのプロジェクトに対して、Walnut Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで、 FreeBSD は短期間のうちにここまで大きく成長したのです。 4.3BSD-Lite Net/2 U.C. Berkeley 386BSD Free Software Foundation CDROM による最初の配布 (そしてネットでの、 ベータ版ではない最初の一般向け配布) は FreeBSD 1.0 で、1993 年 12 月に公開されました。これはカリフォルニア大学バークレイ校の 4.3BSD-Lite (Net/2) を基とし、386BSD や Free Software Foundation からも多くの部分を取り入れたものです。 これは初めて公開したものとしては十分に成功しました。続けて 1994 年 5 月に FreeBSD 1.1 を公開し、 非常に大きな成功を収めました。 Novell U.C. Berkeley Net/2 AT&T この時期、 あまり予想していなかった嵐が遠くから接近してきていました。 バークレイ 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 年 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 日に、 3.4 が 1999 年 12 月 20 日に、 そして 3.5 が 2000 年 6 月 24 日にリリースされました。 3.5 はリリースの数日後、 Kerberos に対するセキュリティ上の修正を組み込むために 小規模な更新がなされ、3.5.1 になりました。 3.5.1 は、この 3.X ブランチにおける最終リリースになる予定です。 - 2000 年 3 月 13 日には - 4.X-STABLE ブランチの作成が行われました。 - これは現時点で「最新の -stable ブランチ」になります。 - このブランチからのリリースは、 + 2000 年 3 月 13 日に 4.X-STABLE ブランチが作成されました。 + このブランチからはこれまでいくつものリリースが公開されています。 2000 年 3 月に初めて 4.0-RELEASE が公開され、 現在の最新版は &rel2.current.date; に公開された &rel2.current;-RELEASE になっています。 - 4.X-stable (RELENG_4) ブランチからのリリースは、2003 - 年まで続けられる予定になっています。 + 4.X-stable (RELENG_4) ブランチからのリリースは、今後も行われる + 予定です。 長い間延期されていた 5.0-RELEASE は、2003 年 1 月 19 日にアナウンスされました。これは 3 年近くにわたる作業の集大成であり、 このリリースより、FreeBSD は先進的なマルチプロセッサとアプリケーションスレッドに対応し、 また、&ultrasparc; と ia64 プラットフォームへの対応も始まりました。 これに続いて 5.1 が 2003 年 6 月に公開されています。 - 5.X リリースは、数多くの新機能に加えて、 - システムアーキテクチャレベルでの改良も大きくおこなわれています。 - ただ、こうした進歩はあったのですが、システムにはまだ十分に試験されていない、 - 新しいコードもたくさん含まれています。そのため、5.X リリースは - テクノロジ リリース、4.X 系列は プロダクション - リリースという位置付けになっています。最終的には 5.X が安定版となり、 - 次期の開発ブランチ 6.0-CURRENT での開発が始まる予定です。 - - 長期的な開発プロジェクトは 5.0-CURRENT 開発ブランチ + -CURRENT ブランチからの最後の 5.X リリースは 5.2.1-RELEASE で、 + 2004 年 2 月に公開されました。 + + 2004 年 8 月に RELENG_5 ブランチが作成され、続いて 5.3-RELEASE が + 5-STABLE ブランチからのリリースの始まりを飾りました。 + + 長期的な開発プロジェクトは 6.0-CURRENT 開発ブランチ (トランク) で続けられ、 - 5.0 のスナップショットリリースが収録された CDROM + 6.0 のスナップショットリリースが収録された CDROM (もちろん、ネットワーク上でも) は、開発の進行状況に応じて スナップショットサーバ より継続的に作成されています。 Jordan Hubbard 寄稿: FreeBSD プロジェクトの目標 FreeBSD プロジェクト 目標 FreeBSD プロジェクトの目的は、いかなる用途にも使用でき、 何ら制限のないソフトウェアを供給することです。 私たちの多くは、 コード (そしてプロジェクト) に対してかなりの投資をしてきており、 これからも多少の無駄はあっても投資を続けて行くつもりです。ただ、 他の人達にも同じような負担をするように主張しているわけではありません。 FreeBSD に興味を持っている一人の残らず全ての人々に、 目的を限定しないでコードを提供すること。これが、 私たちの最初のそして最大の 任務 であると信じています。そうすれば、コードは可能な限り広く使われ、 最大の恩恵をもたらすことができるでしょう。これが、 私たちが熱烈に支持しているフリーソフトウェアの最も基本的な目的であると、 私は信じています。 GNU General Public License (GPL) GNU Lesser General Public License (LGPL) BSD Copyright 私たちのソースツリーに含まれるソースのうち、 GNU 一般公有使用許諾 (GPL) または GNU ライブラリ一般公有使用許諾 (LGPL) に従っているものについては、多少制限が課せられています。ただし、 ソースコードへのアクセスの保証という、 一般の制限とはいわば逆の制限 (訳注1) です。 GPL ソフトウェアの商利用には、そのライセンスにある 複雑な側面が影響してくることがあります。 ですから私たちは、そうすることが合理的であると判断されたときには、 より制限の少ない、BSD 著作権表示を採用しているソフトウェアを 選択するようにしています。 (訳注1) GPL では、「ソースコードを実際に受け取るか、 あるいは、希望しさえすればそれを入手することが可能であること」 を求めています。 浅見 寄稿: FreeBSD の開発モデル FreeBSD プロジェクト 開発モデル FreeBSD の開発は非常に開かれた、柔軟性のあるプロセスです。 貢献者リスト を見ていただければわかるとおり、 FreeBSD は文字通り世界中の何百という人々の努力によって開発されています。 FreeBSD の開発環境は、 この何百という開発者がインターネット経由で共同作業できるようになっているのです。 新しい開発者はいつでも大歓迎ですので、&a.hackers; にメールを送ってください。 &a.announce; もありますので、他の FreeBSD ユーザに自分のやっていることを宣伝したい時にはどうぞ使ってください。 あと、FreeBSD プロジェクトとその開発プロセスについて、 どなたにも知っていていただきたいのは以下のようなことです。 CVS リポジトリ CVS リポジトリ Concurrent Version System CVS FreeBSD のソースツリーは CVS (Concurrent Versions System) によってメンテナンスされています。 CVS はソースコード管理用のフリーソフトウェアで、 FreeBSD のリリースにも含まれています。FreeBSD のメイン CVS リポジトリは米国カリフォルニア州のサンタクララ市に存在し、 そこから世界中のたくさんのミラーサイトにコピーされています。 -CURRENT と -STABLE が含まれている CVS ツリーそのものは、 あなたのマシンにも簡単に取ってくることができます。 これについては ソースツリーの同期の章をご覧ください。 ソースツリー管理者 コミッター コミッター (committers)は CVS ツリーへの書き込み権限を持っている人、 FreeBSD のソースに変更を加えることができる人です (CVS でリポジトリに変更を加えるには &man.cvs.1; commit というコマンドを使うので、 これらの人々は英語では committers と呼ばれます)。 開発者にコードを送って見てもらうのに一番いい方法は &man.send-pr.1; コマンドを使うことです。 もし、何か問題があって send-pr が使えないなら &a.committers; にメールを送っていただいても構いません。 FreeBSD コアチーム コアチーム FreeBSD コアチームは FreeBSD プロジェクトが会社だとすると取締役会にあたるものです。 コアチームとして一番重要な役割は FreeBSD プロジェクトが全体としてよい方向に向かっていることを確認することです。 責任感あふれる開発者を上記のソースツリー管理者として招くこと、 また仕事上の都合などでコアチームをやめた人たちの後任を見つけることもコアチームの役割です。 現在のコアチームは FreeBSD 開発者 (committer) の中から 2004 年 7 月に選挙によって選出されました。 コアチームを選出するための選挙は、2 年ごとに行なわれています。 コアチームのうち何人かは特定の担当分野を持っており、 システムのうち一部に特に重点をおいて面倒を見ています。 FreeBSD 開発者と担当分野の完全なリストはコントリビュータのリストをご覧ください。 忘れてほしくないのは、 コアチームのほとんどは FreeBSD に対してボランティアの立場であり、 FreeBSD プロジェクトからは何ら金銭的な支援を受けていない、 ということです。ですから、 ここでの 責任保証されたサポート ではありません。 そういう意味で、 上記の 取締役会 という例えはあまりよくないかもしれません。 むしろ、FreeBSD のために人生を棒に振ってしまった人の集まりといった方が正しいかも…。 その他のコントリビュータ コントリビュータ 最後になりますが、 もっとも重要で多数をしめる開発者はフィードバック やバグフィクスをどんどん送ってくれるユーザ自身です。 FreeBSD の開発に関わっていきたいという人は、 議論の場である &a.hackers; に参加するとよいでしょう。 FreeBSD 関連メーリングリストに関する詳細は、 をご覧ください。 FreeBSD への貢献者リスト は日に日に長くなっています。 あなたも今日、何か送ることからはじめてみませんか? もちろん FreeBSD に貢献するには、 コードを書くほかにもいろいろな方法があります。 助けが求められている分野については、 FreeBSD プロジェクトのウェブサイトをご覧ください。 ひとことで言うと、FreeBSD の開発組織はゆるやかな同心円状になっています。 ともすると中央集権的に見えがちなこの組織は、 FreeBSD のユーザがきちんと管理されたコードベースを 容易に追いかけられるようにデザインされているもので、 貢献したいという人を締め出す意図は全くありません! 私たちの目標は安定したオペレーティングシステムと 簡単にインストールして使うことのできる アプリケーションを提供することです。 この方法は、それを達成するために非常にうまくはたらきます。 これからFreeBSDの開発にたずさわろうという人に、 私たちが望むことはただ一つです。 FreeBSDの成功を継続的なものにするために、 現在の開発者と同じような情熱を持って接してください! 現在のリリースについて NetBSD OpenBSD 386BSD Free Software Foundation U.C. Berkeley Computer Systems Research Group (CSRG) FreeBSD は自由に利用でき、 Intel &i386;, &i486;, &pentium;, &pentium; Pro, &celeron;, &pentium; II, &pentium; III, &pentium; 4 (とその互換品), &xeon;, DEC Alpha Sun &ultrasparc; ベースのコンピュータで動作する、 4.4BSD-Lite ベースの全ソースつきのリリースです。 これはもともとカリフォルニア大学バークレイ校 CSRG グループのソフトウェアがベースとなっており、NetBSD, OpenBSD, 386BSD, そして Free Software Foundation の ソフトウェアなどにより拡張されています。 94 年末の FreeBSD 2.0 のリリースからみると、FreeBSD は性能、 機能、安定性の面で劇的に改善されました。 もっとも大きな変化は仮想メモリシステムに おける改良で、 統合化された VM/file バッファキャッシュを用いる ことで性能を向上させながらも FreeBSD のメモリの使用量を減らすことができたことです。そのおかげで、最低 5 MB メモリという制約上でも動作するようになりました。 その他の拡張としては、NIS のクライアントとサーバの完全なサポート、 トランザクション TCP のサポート、ダイヤルオンデマンド PPP, 統合された DHCP のサポート、改良された SCSI サブシステム、 ISDN, ATM, FDDI, Fast Ethernet や Gigabit Ethernet (1000 Mbit) アダプタへの対応、最新の Adaptec コントローラ対応の改良や、 数百件におよぶバグの修正などがあります。 FreeBSD では基本配布セットに加え、移植されたソフトウェア集 として数千の人気の高いプログラムを提供しています。 この文書を印刷している時点で &os.numports; 以上の ports (移植ソフトウェア) が存在します。 ports には http (WWW) サーバから、ゲーム、言語、 エディタまでありとあらゆるものが含まれています。 ports はオリジナルソースに対する 差分 という形で表現されており、 すべての ports を集めても &ports.size; 程度にしかなりません。 こうすることで ports の更新を容易にし、 ports に必要なディスクスペースを小さくすることができます。 ports をコンパイルするには、 インストールしたいと思っているプログラムのディレクトリに移動し、 make install とすると、 あとはすべてシステムがやってくれます。 どの ports もオリジナルの配布セットを動的に CDROM や近くの FTP サーバから取ってくるので、 ディスクは構築したいと思っている ports の分だけを準備しておけば十分です。 ほとんどの ports は、すでにコンパイルされた状態で package として提供されており、 ソースコードからコンパイルしたくない場合、これを使うと (pkg_add というコマンドで) 簡単にインストールできます。 package と ports に関する詳細は、 をご覧ください。 最近の FreeBSD マシンであれば、 /usr/share/doc というディレクトリに、インストールの手順や FreeBSD を利用する上で有用なドキュメントがたくさんあります。 これらのローカルにインストールされたドキュメントは、HTML ブラウザを使って、以下の URL から 参照することができます。 FreeBSD ハンドブック (英文オリジナル) /usr/share/doc/handbook/index.html FreeBSD に関する FAQ /usr/share/doc/faq/index.html また、 にはマスタ (かなり頻繁に更新されます) がありますので、 こちらも参照してください。 diff --git a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml index 67addc128f..5e5925bc96 100644 --- a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml @@ -1,1192 +1,1264 @@ FreeBSD カーネルのコンフィグレーション この章では 更新/再構成: &a.jim;、2000 年 3 月 寄稿: &a.jehamby;、1995 年 10 月 6 日 訳: &a.jp.tomo;、&a.jp.yoshiaki; 1996 年 11 月 2 日 + + カーネル + カスタムカーネルの構築 + この章では、自分のシステムに合わせた カーネルを構築する方法について扱います。 カーネルの再構築によりどんなメリットがあるのか不思議に思っていたり、 自分用のカーネルを設定し、コンパイルし、インストールする方法を 知りたいと思っているのなら、この章が役に立つでしょう。 なぜカスタムカーネルを作るか? システムに合わせたカーネルの構築はほとんどすべての UNIX ユーザが 避けて通ることのできない最も重要な通過儀礼の1つです。 この作業は、多くの時間を必要としますが、あなたの FreeBSD システムに多くの利益をもたらします。 広範囲のハードウェアをサポートしなければならない GENERICカーネルとは異なり、 システムに合わせたカーネルは あなたの PC のハードウェアのみをサポートします。これは、 次にあげるような利益をもたらします。 素早く起動します。 カーネルはあなたのシステム上にあるハードウェアしか 検出を行わないので、 あなたのシステムの起動にかかる時間は劇的に短くなります。 メモリの消費量が減少します。 システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルは常にメモリ上に存在するプロセスなので、 このことは重要になります。 したがって、RAM が少ないシステムでは、 カーネルの再構築は大変重要です。 追加のハードウェアをサポートします。 システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しない デバイスのサポートを追加することができます。 カスタムカーネルの構築とインストール + + カーネル + 構築 / インストール + まず、 カーネル再構築に必要なディレクトリをざっと見てみましょう。 ここではディレクトリはすべて /usr/src/sys 以下の相対位置で示します。 また、/sys からもアクセス可能です。 ここには、カーネルの各部分を構成するサブディレクトリが いくつもあります。しかし、私たちの目的で最も重要なのは arch/conf です。 ここで、あなたの システムに合わせてカーネルコンフィグレーションを編集します。 それから compileディレクトリ、 ここはカーネルが作られる 場所です。 arch は、i386, alpha, pc98(これは 日本で普及している PC のための開発ブランチです)のいずれかを表します。 各アーキテクチャのディレクトリ内部にあるファイルはすべて そのアーキテクチャでのみ使用され、残りのコードは FreeBSD が他のプラットフォームに移植される際に共有されます。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれ各々のサブディレクトリに分かれている、 という論理的な構成に注意してください。 もし、あなたのシステムに/usr/src/sys 以下のディレクトリがなければ、 カーネルのソースが インストールされていません。 もっとも簡単な方法は (rootで) /stand/sysinstall を用いて以下のようにします。設定(Configure) を選んでから 配布ファイル(Distribution) を選択し、src の中の sys をインストールしてください。 つぎに、 arch/confに移動して、 GENERIC コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください。たとえば次のようにします。 &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; cp GENERIC MYKERNEL 慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSDマシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL と呼ぶことにします。 この作業は root権限でおこなう必要があります。 そうでなければ、permission deniedというエラーが出ます。 では、MYKERNEL をあなたの好きなエディタで編集してください。もし、 システムをインストールしたばかりならば、利用できるエディタは viだけかもしれません。ここでは使い方 の説明はしませんが、参考図書 にあるような多くの本で詳しく説明 されていますので、 そちらを参照してください。FreeBSD にはより簡単なエディタとして ee があります。初心者の方であればこちらをエディタ に選ぶとよいでしょう。 まずファイルの最初の方のコメント行を編集し、あなたのコンフィグ レーションに合せて変更した点などを記述して GENERIC と区別がつく ようにしておきましょう。 + SunOS もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば、このファイルはとても親しみ やすいでしょう。しかし、DOSのようなその他の オペレーティングシステムしか知らない人から見れば、 GENERIC コンフィグレーションファイルはとても なじみにくいものかもしれません。そのような場合は、 コンフィグレーションファイル の節をゆっくりと注意深く読んでください。 FreeBSD Project の最新のソースファイルと、あなたの ソースツリーを同期させている場合、 アップデートを行う際には、必ず /usr/src/UPDATING ファイルをチェックするように してください。 このファイルには、FreeBSD をアップデートする際のすべての重要な情報 が書かれています。 /usr/src/UPDATING は常にあなたの FreeBSD ソースファイルのバージョンと同期していますので、 ハンドブックの情報よりも正確なものとなっています。 FreeBSD 4.0 より前の FreeBSD を使っていて、 FreeBSD 4.0 以降へはアップグレードしない、 もしくはリリース版の FreeBSD を使っていて /usr/src/ ディレクトリには sys/ しか無い場合、 編集し終ったら次のコマンドによってコンパイル、インストール を行ってください。 古いバージョンの FreeBSD からカーネルをアップグレードしようと している場合、新しいカーネルのソースファイルを取ってきた場所と 同じところから、新しいバージョンの &man.config.8; を取ってくる 必要があるでしょう。 &man.config.8; は /usr/src/usr.sbin にあるので、これらのソースファイルもダウンロードする必要が あります。 次のコマンドを実行する前に、これを再構築してインストールして おいてください。 &prompt.root; /usr/sbin/config MYKERNEL &prompt.root; cd ../../compile/MYKERNEL &prompt.root; make depend &prompt.root; make &prompt.root; make install 4.X 以降の新しいバージョンにアップグレードした場合 (例えば 3.X から 4-STABLE へ、もしくは 4-STABLE から 最新版の 4-STABLE へなど)、予め buildworld を行なって、 以下のコマンドを実行してください: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL FreeBSD-4.2 とそれ以前の場合は、 KERNCONF= ではなく KERNEL= としなければなりません。 2001 年 2 月 2 日以降の 4.2-STABLE は KERNCONF= を認識します。 + CVSup + anoncvs + CTM + + CVS + anonymous + + 何らかの方法であなたのソースツリーをアップグレードして いない 場合 (CVSup, CTM, anoncvs などを実行していない場合)、 config, make depend, make, make install の手順を実行してください。 最後にカーネルを構築した後で、ソースをアップグレードした場合、 カーネルを構築するには make buildkernel を使わなければ なりません。 そうしないと、カーネルを構築するのに古いユーティリティが 使われてしまい、失敗してしまうかもしれません。 ソースを更新した場合には、カーネルを構築するのに config/make の手順は使わないでください! + kernel.old 新しいカーネルはルートディレクトリに /kernelという 名前でコピーされ、 今までのカーネルは /kernel.old という名前へ変更されます。では、システムをシャットダウン、リブー トして新しいカーネルを使ってください。うまく行かない場合は、 この章の終りの 問題が起きた場合には を参照してください。この章の新しい カーネルが起動しない 場合のリカバリの方法を注意深く読んでおいてください。 (サウンドカードのような)新しいデバイスを 追加した場合は、 使う前に /devディレクトリで デバイスノードを追加しなければならないかもしれません。 詳しくは、デバイスノード を読んでください。 コンフィグレーション ファイル + カーネルLINT + LINT + + カーネル + コンフィグレーションファイル + コンフィグレーション ファイルの一般的なフォーマット はとてもシンプルです。各行は1つのキーワードと1つ以上の 引数を含んでいます。見やすくするために、ほとんどのキーワードは 引数を1つしか書いてありません。 #に続くものはすべてコメントとして扱われ、 無視されます。ここでは、それぞれのキーワードについて だいたい GENERIC に出てくる順番で説明します。しかし、 お互いに関係のあるキーワードは、実際には GENERIC ファイル上に バラバラに現れていても、(ネットワーキングのように)1つにまとめ てあります。 おびただしい数の オプションの一覧が GENERICと同じディレクトリの LINT コンフィグ レーションファイルにあります。もし、ある行の目的や必要性に疑 問を持ったら最初に LINT をチェックしてください。 数字と二重引用符 FreeBSD 3.x と、それまでの全てのバージョンの FreeBSD における &man.config.8; は、コンフィグレーションファイル中の テキストとして使われる数字を含む文字列が 全て二重引用符で括られていなければならないという制限があります。 この制限は (このハンドブックが対象としている) 4.X ブランチでは取り除かれました。 4.X 以前のシステムを使っている場合には、 サンプルとしてシステム上の /usr/src/sys/i386/conf/LINT/usr/src/sys/i386/conf/GENERIC を参照してください。 + + カーネル + コンフィグレーション例 + 以下は必要に応じてコメントを追加した GENERIC カーネルの コンフィグレーションファイルです。 この設定例は /usr/src/sys/i386/conf/GENERIC に極めて近いものになっているはずです。 その他に指定可能なカーネルオプションについては、 /usr/src/sys/i386/conf/LINT を参照してください。 # # GENERIC -- Generic kernel configuration file for FreeBSD/i386 # # このファイルについて更に情報が必要なら、ハンドブックのカーネル # コンフィグレーションファイルのセクションを参照して下さい。 # # http://www.freebsd.org/handbook/kernelconfig-config.html # # doc ディストリビューションをインストールした場合、ハンドブックは # ローカルマシンの /usr/share/doc/handbook でも見ることができます。 # 最新版は FreeBSD の WWW サーバ (http://www.FreeBSD.ORG/) を参照して # 下さい。 # # ./LINT コンフィギュレーションファイルには、デバイス行に関する大量の # オプションと詳細な説明があります。もしある行の目的又は必要性について # 疑問がある場合はまず LINT をチェックして下さい。 # # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $ 以下は すべての カーネルの構築に 必須のキーワードです: + + カーネル オプション + machine + machine i386 マシンのアーキテクチャです。 これは i386, alpha, pc98 のいずれかでなければなりません。 + + カーネル オプション + cpu + cpu I386_CPU cpu I486_CPU cpu I586_CPU cpu I686_CPU 上記はあなたのシステムの CPU タイプを指定します。 複数の行を書いても構いません。 (例: I586_CPU とすべきか I686_CPU とすべきかはっきり分からない場合。 しかしながら、カスタムカーネルを作る場合、あなたの持つ CPU だけを指定するのがベストです。 もしあなたがどのタイプの CPU を使っているか分からない場合、 dmesg を使って起動メッセージを 調べるとよいでしょう。 + + カーネル オプション + cpu type + Alpha アーキテクチャの場合は、 cpu_type に異なった値を用います。 cpu EV4 cpu EV5 もしあなたが Alpha マシンを使っている場合、 上記の内のどれかを指定して下さい。 + + カーネル オプション + ident + ident GENERIC ここはカーネルの識別名を書きます。 あなたがカーネルに付けたい名前に書き換えて下さい (MYKERNELのように)。 ident に書いた名前はカーネルを起動する時に 表示されるので、 普段使っているカーネルと区別したいときは違う名前を付けると 良いでしょう(例: 実験的なカーネルを構築する場合)。 + + カーネル オプション + maxusers + maxusers 32 maxusers オプションは重要なシステムテーブルの サイズを決定します。 この数字はあなたのマシンを同時に使うと思われるユーザー数と おおよそ等しくするのが良いでしょう。 しかしながら、通常は X ウインドウシステムを使ったり、 ソフトウエアをコンパイルするでしょうから、その場合は maxusers は最低 4 にして下さい。 その理由は、maxusers によって計算される最も 重要なテーブルがプロセスの最大数で、それは 20 + 16 * maxusers となります。 もし、maxusers を 1 にすると、 同時に 36 プロセスしか利用できなくなりますが、 システムは起動時に 18 ほどのプロセスを立ち上げ、 X ウインドウシステムは 15 ほどのプロセスを立ち上げるので、 man コマンドのような単純な仕事でさえフィルタ、展開、表示に 9 個のプロセスを利用するために、プロセス数不足になります。 maxusers を 64 に設定すると、 1044 個のプロセスを同時に利用することができるので、 殆どのユーザには充分でしょう。 もしあなたが別のプログラムを立ち上げる時、 恐れられている proc table full エラーが 発生する場合や、ftp.FreeBSD.org のように多数のユーザにより 同時に利用されるサーバを動かしている場合には、 この数字を増やしてカーネルを再構築することができます。 maxusers はあなたのマシンにログインする ユーザ数を制限するものでは ありません。 それは単に、あなたのシステムを使うであろうユーザの最大数や それぞれのユーザがどれくらいのプロセスを走らせるかに 合わせて各種テーブルの大きさを設定するだけです。 同時にリモートログインする最大ユーザ数を制限するキーワードは pseudo-device pty 16 です。 以下に続くすべては大体において追加設定項目です。 詳細は各項目の次に書かれている注意書きを参照して下さい。 #makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols options MATH_EMULATE #Support for x87 emulation この行では、あなたのコンピュータが浮動小数点演算コプロセッサを 持たない場合(CPU が 386 又は 486SX)、 カーネルにシミュレートさせるよう設定します。 あなたが 486DX, 又は (387 や 487 チップを別途搭載した) 386, 486SX 又は更に上位 (Pentium, Pentium II 他) を持っている場合は コメントアウトして下さい。 FreeBSD の浮動小数点エミュレーションルーチンはあまり正確では ありません。 もしあなたが浮動小数点コプロセッサを持っておらず、 かつベストな演算精度が必要であれば、GNU の浮動小数点サポートを 利用する GPL_MATH_EMULATION を使ってみて下さい。 このオプションはライセンス上の理由によりデフォルトでは 含まれていません。 options INET #InterNETworking ネットワークのサポート。 ネットワークに接続する予定がなくてもこのオプションは残して下さい。 殆どのプログラムは少なくともループバックネットワーク (あなたの PC の中でのネットワーク接続) を必要としますので、 基本的にこの行は必須です。 options INET6 #IPv6 communications protocols このオプションは IPv6 通信プロトコルを利用可能にします。 options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!] これは標準のハードドライブファイルシステムです。 ハードディスクから起動する場合は残して下さい。 options MFS #Memory Filesystem options MD_ROOT #MD is a potential root device これはメモリ上にマップされたファイルシステムです。 これは基本的に一時ファイルの高速格納用の RAM ディスクであり、 あなたが有効に利用したい大量のスワップスペースを持っている 場合には有用でしょう。 多くのプログラムが一時データをここに保存することから、 MFS パーティションをマウントする最適な場所は /tmp ディレクトリです。 MFS RAM ディスクを /tmp にマウントするには 次の行を /etc/fstab に追加して下さい: /dev/ad1s2b /tmp mfs rw 0 0 次に再起動するか、コマンド mount /tmp を実行して下さい。 + + カーネル オプション + NFS + + + カーネル オプション + NFS_ROOT + options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required ネットワークファイルシステム。 UNIX ファイルサーバから TCP/IP を介してパーティションを マウントするのでない限り、これらの行をコメントアウトして下さい。 + + カーネル オプション + MSDOSFS + options MSDOSFS #MSDOS Filesystem MS-DOS ファイルシステム。 起動時に DOS でフォーマットされたハードドライブを マウントするのでない限り、この行は安全にコメントアウトできます。 この機能は最初に DOS パーティションをマウントする時に自動的に ロードされます。 又、優秀な mtools (Ports コレクションにあります) を使ってもマウント、 アンマウントすることなしに DOS フロッピーにアクセスすることができます。 (MSDOSFS は必要としません) options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required CD-ROM 用の ISO 9660 ファイルシステム。 もしあなたが CD-ROM ドライブを持っていないか、 時々データ CD をマウントするだけならこの行をコメントアウトしても 大丈夫です (データ CD を最初にマウントする時、自動的にロードされます)。 音楽 CD はこのファイルシステムを必要としません。 options PROCFS #Process filesystem プロセスファイルシステム。 これは /proc にマウントされる、 ファイルシステムの ふりをする もので、 &man.ps.1; のようなプログラムに、どんなプロセスが走っているか に関するより多くの情報を提供させる事ができます。 options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] 4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。 options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI この行は、カーネルがそれぞれの SCSI 機器を検出する前に 15 秒間待つようにします。 あなたが IDE ドライブしか持たないなら無視して結構です。 そうでないなら、起動時間を短くするため、おそらく待つ時間を短く、 5 秒くらいにしたいでしょう。 勿論、そうした場合に FreeBSD が SCSI 機器を認識しなくなった場合は 時間を元に戻す必要があります。 options UCONSOLE #Allow users to grab the console ユーザにコンソールを所有することを許可します。 X のユーザには役に立ちます。 たとえば xterm -C とコマンドを打つことにより、 コンソール xterm を起動することができます。 ここにはカーネルからのあらゆるコンソールメッセージとともに、 write, talk による あらゆるメッセージを表示します。 options USERCONFIG #boot -c editor このオプションは起動メニューからコンフィグレーションエディタ を起動することができるようにします。 options VISUAL_USERCONFIG #visual boot -c editor このオプションは起動メニューからビジュアルコンフィグレーション エディタを起動できるようにします。 options KTRACE #ktrace(1) support この行はデバッギングに役立つカーネルプロセスのトレースを 可能にします。 options SYSVSHM #SYSV-style shared memory このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に 描画のスピードアップに利用します。 X を使っているなら、これを含めておいた方がいいでしょう。 options SYSVSEM #SYSV-style semaphores System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。 options SYSVMSG #SYSV-style message queues System V のメッセージのサポート。 これもカーネルサイズを数百バイト大きくするだけです。 &man.ipcs.1; コマンドを実行するとこれらの System V 機能を使っているプロセスのリストを表示します。 - options P1003_1B #Posix P1003_1B real-time extentions + options P1003_1B #Posix P1003_1B real-time extensions options _KPOSIX_PRIORITY_SCHEDULING リアルタイム拡張が 1993 POSIX に追加されました。 Ports コレクションの内のいくつかのアプリケーション (例えば Star Office) はこれを使っています。 + + カーネル オプション + ICMP_BANDLIM + options ICMP_BANDLIM #Rate limit bad replies このオプションは ICMP エラー応答のバンド幅制限を可能にします。 サービス不能パケットによる攻撃からマシンを保護するために必要です。 + + カーネル オプション + SMP + # To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O 上の行は両方とも SMP サポートのために必要です。 device isa FreeBSD がサポートするすべての PC はこれらの内のひとつを 持っています。 あなたが IBM PS/2 (マイクロチャネルアーキテクチャ) マシンを持っている場合、FreeBSD は現時点では動作しません (サポートには取組中です)。 device eisa あなたが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべての デバイスの自動検出と設定を可能にします。 device pci あなたが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを 可能にします。 # Floppy drives device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1 これはフロッピーディスクコントローラです。 fd0A: フロッピードライブ、fd1B: ドライブです。 device ata このドライバはすべての ATA と ATAPI デバイスをサポートします。 最近のマシンでは device ata 行を 1 行書くだけで すべての PCI ATA/ATAPI デバイスを検出することができます。 device atadisk # ATA disk drives ATAPI ディスクドライブには device ata と共にこの行が必要です。 device atapicd # ATAPI CDROM drives ATAPI CDROM ドライブには device ata と共にこの行が必要です。 device atapifd # ATAPI floppy drives ATAPI フロッピードライブには device ata と共にこの行が必要です。 device atapist # ATAPI tape drives ATAPI テープドライブには device ata と共にこの行が必要です。 options ATA_STATIC_ID #Static device numbering この行はコントローラ番号を (古いドライバのように) 静的に 割り当てます。そうでない場合、デバイス番号は動的に割り当てられます。 # ATA and ATAPI devices device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 上の行は古い、PCI ではないシステムの場合の形式です。 # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices device amd # AMD 53C974 (Teckram DC-390(T)) device dpt # DPT Smartcache - See LINT for options! device isp # Qlogic family device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets) device adv0 at isa? device adw device bt0 at isa? device aha0 at isa? device aic0 at isa? SCSI コントローラです。 あなたのシステムにないデバイスはコメントアウトして下さい。 もし IDE しかないシステムならこれらすべてを削除できます。 # SCSI peripherals device scbus # SCSI bus (required) device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) SCSI 周辺機器です。 あなたが持っていないデバイスはコメントアウトして下さい。 もし IDE しか持っていないならこれらを完全に削除できます。 # RAID controllers device ida # Compaq Smart RAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family サポートされる RAID コントローラです。 これらのどれも持っていない場合、すべてをコメントアウト又は 削除することができます。 # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD キーボードコントローラ (atkbdc) は AT キーボード及び PS/2 スタイルポインティングデバイスの I/O サービスを提供します。 キーボードドライバ (atkbd) と PS/2 ポインティングデバイスドライバ (psm) はこのコントローラを必要とします。 device atkbd0 at atkbdc? irq 1 atkbd ドライバ。 atkbdc コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。 device psm0 at atkbdc? irq 12 あなたのマウスが PS/2 マウスポートに接続するタイプなら このデバイスを使って下さい。 device vga0 at isa? ビデオカードドライバです。 # splash screen/screen saver pseudo-device splash 起動時に画面がはじけます。 スクリーンセーバもこのデバイスを必要とします。 # syscons is the default console driver, resembling an SCO console device sc0 at isa? sc0 はSCOに類似したデフォルトの コンソールドライバです。 殆どのフルスクリーンのプログラムは termcap のようなターミナルデータベールライブラリにアクセスするので、 sc0 を使うか VT220 互換のコンソールドライバである vt0 を使うかは重要ではありません。 ログイン時、このコンソールでフルスクリーンプログラムが動かないときは TERM 変数を scoansi に設定して下さい。 # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std これは VT220 互換のコンソールドライバで、 VT100/102 と後方互換性があります。 sc0 とハード的に互換性がないラップトップでも 問題なく動きます。 ここでもログイン時に TERM 変数を vt100 又は vt220 と設定して下さい。 このドライバは、sc0 デバイス用の termcapterminfo のエントリが無い、ネットワーク上の多くの異なったマシンに 接続する際にも有用です — vt100 は仮想的にすべてのプラットフォームで有効であるべきです。 # Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13 npx0 は FreeBSD における 浮動小数点演算ユニットへのインタフェースで、それは実際には コプロセッサ又はソフトウエアエミュレータです。 これはオプションではありません # Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management 先進的な電源管理機能 (APM) のサポート。 ラップトップでは役に立つでしょう。 # PCCARD (PCMCIA) support device card device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable PCMCIA サポート。ラップトップにインストールする時は必要です。 # Serial (COM) ports device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5 device sio3 at isa? disable port IO_COM4 irq 9 これらは MS-DOS/Windows の世界では COM1からCOM4 と呼ばれている 4 つのシリアルポートです。 もしあなたが内蔵モデムを COM4 に、シリアルポートを COM2 に設定している場合、FreeBSD からアクセスするには、 (IRQ2=IRQ9 という、不明瞭な技術的理由により) モデムの IRQ を 2 に変更する必要があります。 もしマルチポートシリアルカードを持っていてこれらの設定の正しい 数値に関する情報がほしい場合はマニュアルページ &man.sio.4; を参照して下さい。 ビデオカードのいくつかは (S3 チップベースのものは特に) IO アドレスを 0x*2e8 と言う形式で表現する一方、 多くの安価なシリアルカードは 16 ビットの IO アドレスを完全に デコードしないので、これらのカードを使った場合衝突が起こり、 事実上 COM4 ポートを使用不可能にします。 各々のシリアルポートは (共有割り込み番号をサポートする マルチポートカードを使っていない限り) 固有の IRQ を必要とします。 従って COM3 と COM4 用のデフォルト IRQ は利用できません。 # Parallel port device ppc0 at isa? irq 7 ISA バスパラレルポートインタフェースです。 device ppbus # Parallel port bus (required) パラレルポートバスのサポートを提供します。 device lpt # Printer パラレルポートプリンタのサポートです。 上の 3 つはすべてパラレルプリンタを利用可能にするために 必要です。 device plip # TCP/IP over parallel パラレルネットワークインタフェース用のドライバです。 device ppi # Parallel port interface device 汎用I/O (geek port) + IEEE1284 I/O です。 #device vpo # Requires scbus and da + zip ドライブ Iomega の Zip ドライブ用です。scbusda サポートが必要です。 EPP 1.9モードを使うと最高の性能が得られます。 # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device fxp # Intel EtherExpress PRO/100B (82557, 82558) device tx # SMC 9432TX (83c170 EPIC) device vx # 3Com 3c590, 3c595 (Vortex) device wx # Intel Gigabit Ethernet Card (Wiseman) PCI ネットワークカードのドライバです。あなたのシステムに ないものはコメントアウトするか削除して下さい。 # PCI Ethernet NICs that use the common MII bus controller code. device miibus # MII bus support MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、 すなわち MII に従うトランシーバや MII のようなトランシーバ制御 インタフェースを実装するもの、に必要となります。 カーネルコンフィギュレーションに device miibus を追加することで、汎用 miibus API のサポートと、 特定のドライバを必要としない場合に利用される汎用のものを含む すべての PHY ドライバが導入されます。 device dc # DEC/Intel 21143 and various workalikes device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device ste # Sundance ST201 (D-Link DFE-550TX) device tl # Texas Instruments ThunderLAN device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone) MII バスコントローラコードを利用するドライバです。 # ISA Ethernet NICs. device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep # WaveLAN/IEEE 802.11 ワイヤレス NIC。 # 注: WaveLAN/IEEE は PCMCIA デバイスとしてしか実在しません。 # なので ISAア タッチメントは必要なく、リソースは常に PC カードコードに # より動的に割り当てられます。 device wi # Aironet 4500/4800 802.11 ワイヤレス NIC。 # 注: 下の宣言は ISA PnP モード (工場出荷時設定) のISAカード、PCMCIA # 及び PCI カードにのみ働きます。もし、ISA カードの I/O アドレスと IRQ # を手動で設定している場合は、ここでそれらのパラメータを指定しなく # てはいけません。 device an # これらの検出順序は現在 i386/isa/isa_compat.c により決められます。 device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 device fe0 at isa? port 0x300 device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300 device sn0 at isa? port 0x300 irq 10 # requires PCCARD (PCMCIA) support to be activated #device xe0 at isa? ISA イーサネットドライバです。 どのカードがどのドライバによりサポートされているかは /usr/src/sys/i386/conf/LINT を参照して下さい。 # Pseudo devices - the number indicates how many units to allocated. pseudo-device loop # Network loopback TCP/IP の汎用ループバックデバイスです。 localhost (すなわち 127.0.0.1) に対して telnet や FTP を使う場合、この疑似デバイスを通して戻ってきます。 これは 必須 です。 pseudo-device ether # Ethernet support ether はイーサネットカードを持っている場合に のみ必要です。汎用イーサネットプロトコルコードを含みます。 pseudo-device sl 1 # Kernel SLIP sl は SLIP サポートを行います。 SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していて より高機能な PPP に殆ど取って代わられています。 sl に続く 数字 には同時に持てる SLIP セッション数を指定します。 pseudo-device ppp 1 # Kernel PPP これはダイアルアップ接続用のカーネル PPP サポートです。 他にも tun を利用し、デマンドダイアリングのような 柔軟性と機能を提供するユーザーランドのアプリケーションとして 実装された PPP が存在します。ppp に続く 数字 には同時に持てる PPP セッション数を 指定します。 pseudo-device tun # Packet tunnel. これはユーザーランド PPP ソフトウエアにより利用されます。 tun に続く 数字 には同時に持てる PPP セッション数を指定します。 詳細はこの本の PPP セクションを 参照して下さい。 pseudo-device pty # Pseudo-ttys (telnet etc) これは 疑似ターミナル 或いはシミュレートされた ログインポートです。 これは入ってくる telnetrlogin セッション、xterm やその他の emacs のような アプリケーションにより利用されます。 数字 は生成される pty の数を示します。もし同時にデフォルトの 16 より多くの xterm ウィンドウやリモートログインが 必要な場合、必要に応じてこの数字を増やして下さい。 最大は 256 です。 pseudo-device md # Memory disks メモリディスク疑似デバイス。 pseudo-device gif 4 # IPv6 and IPv4 tunneling この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation) この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。 # The `bpf' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf # Berkeley packet filter これはバークレーパケットフィルタです。 この疑似デバイスはネットワークインタフェースを、イーサネットのような ブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 &man.tcpdump.1; を使ってチェックをすることもできます。 # USB support #device uhci # UHCI PCI->USB interface #device ohci # OHCI PCI->USB interface #device usb # USB Bus (required) #device ugen # Generic #device uhid # Human Interface Devices #device ukbd # Keyboard #device ulpt # Printer #device umass # Disks/Mass storage - Requires scbus and da #device ums # Mouse # USB Ethernet, requires mii #device aue # ADMtek USB ethernet #device cue # CATC USB ethernet #device kue # Kawasaki LSI USB ethernet 様々なUSBデバイスのサポートです。 より詳細な情報と、FreeBSD によりサポートされる他のデバイスに ついては /usr/src/sys/i386/conf/LINT を参照して下さい。 デバイスノードを作る + デバイス ノード + MAKEDEV カーネル内のほとんどすべてのデバイスは対応する node エントリが /dev ディレクトリにあります。これらのノードは普 通のファイルのように見えますが、実際にはプログラムがデバイスに アクセスするのに用いるカーネル内への特別なエントリです。 シェルスクリプトである /dev/MAKEDEVはオペレーティング システムを最初にインストールする時に実行され、サポートされてい る大部分のデバイスのノードを作ります。しかし、 すべての ノードが作られるわけではありませんので 新しいデバイスのサポートを加える時は対応するエントリがこのディ レクトリにあるかどうか確認してもしなければ、作ってください。 以下に例を示します。 IDE CD-ROMのサポートをカーネルに加えるとします。次の行 を加えます。 device acd0 これにしたがって、/devディレクトリに acd0 で始まるエントリをさがしてください。 1文字が後ろにつくかもしれません。 後ろについた文字が c であるか、先頭に r のつくエントリは raw デバイスを示します。 それらのファイルがないことが明らかになったとします。そこで /dev ディレクトリに移動して次のようにタイプします。 + MAKEDEV &prompt.root; sh MAKEDEV acd0 スクリプトの実行が終ったら /devacd0cracd0c エントリがあることを確認してください。これによ り正しく実行されたことがわかります。 サウンドカードの場合、以下のコマンドで対応する エントリが作成されます: &prompt.root; sh MAKEDEV snd0 サウンドカードのようなデバイスのノードを作る場合で、もし他 の人がマシンにアクセスするようであれば、そのデバイスを /etc/fbtab ファイルに追加して外部からのアクセスから 保護するのが望ましいでしょう。このファイルの詳細については &man.fbtab.5; を参照してください。 GENERIC に含まれていないデバイスはエントリがありませんから、以上 の簡単な手順をおこなうことになります。 すべての SCSI コントローラは同じ /dev の エントリを使用しますのでノードを作る必要はありません。 またネッ トワークカードと SLIP/PPP 疑似デバイスは /dev にはエント リがありませんのでこれらについても作る必要がありません。 問題が起きた場合には カスタムカーネルを作る場合に起きるトラブルは、 次の 4 種類に分けられます。 config コマンドの失敗 カーネルコンフィグレーションファイルに設定を行なってから config コマンドが失敗したのであれば、 おそらくファイルのどこかに単純な間違いがあります。 さいわい、 config はトラブルの起きた行番号を出力しますので vi で素早く見つけることができます。 例えば、次のように出力された場合 config: line 17: syntax error vi のコマンドモードで 17G とタイプすれば、 問題のところへ飛ぶことができます。 GENERIC カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。 make コマンドの失敗 make コマンドが失敗した場合には、 カーネル設定で config がとらえられなかったような間違いをしていることが多いようです。 もう一度コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 &a.questions; へあなたのカーネルコンフィグレーションファイルをつけてメールしてください。 誰かが素早く間違いを見つけてくれるでしょう。 カーネルが起動しない 新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、BSDは 利用できないカーネルから復帰する 洗練されたメカニズムがあります。 それは、FreeBSD のブートローダで起動したいカーネルを選択する (例えば boot kernel.old) だけです。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。 問題のないカーネルで起動した後に あなたのコンフィグレー ションファイルを調べ、 再び構築を試みてください。 /var/log/messages ファイルにはすべての成功した 起動時のカーネルメッセージやその他の記録があり、これ は助けになる情報の一つでしょう。また、 &man.dmesg.8; コマンドは現在の起動時のカーネルメッ セージを出力します。 カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする 時に、 その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん。またできる限り早く動作しているカーネルを本来の kernelの位置に移動させてください。 そうしないと &man.ps.1; のようなコマンドが正しく動きません。 make でインストールされたカーネルのファイルを (別のカーネルに戻すために) アンロック するための特別 のコマンドは &prompt.root; chflags noschg /kernel です。また、 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように ロック するには 次のようにします。 &prompt.root; chflags schg /kernel カーネルは動くが ps は動かない! システムユーティリティと異る バージョンのカーネルをインストールした場合、例えば 4.x のカーネルを 3.x システム上にインストールするような場合、 &man.ps.1; や &man.vmstat.8; のような多くの システムステータスコマンドは動かなくなります。 libkvm を再コンパイルして、 これらのユーティリティを作りなおす必要があります。 これは、カーネルとそれ以外で異なるバージョンを組み合わせて オペレーティングシステムを使用することが推奨されない理由の 一つとなっています。 diff --git a/ja_JP.eucJP/books/handbook/l10n/chapter.sgml b/ja_JP.eucJP/books/handbook/l10n/chapter.sgml index 88b4a298da..42ced0d593 100644 --- a/ja_JP.eucJP/books/handbook/l10n/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/l10n/chapter.sgml @@ -1,1007 +1,1011 @@ Andrey A. Chernov 寄稿: Michael C. Wu 改訂: 地域化 (localization) - I18N/L10N の利用と設定 この章では FreeBSD は、ユーザーおよび貢献者が世界中にいる、非常に分散した プロジェクトです。この章では、英語以外の言語を使うユーザーの実用に 耐えられるようにする FreeBSD の国際化 (internationalization) と 地域化 (localization) 機能について解説します。 システムレベルでもアプリケーションレベルでも、国際化の実装には 様々な側面があるので、必要に応じて読者に対してより専門的な文書情報を 示すことにします。 この章では、以下の分野について説明します。 近代的なオペレーティングシステムで、異なる言語および ロケールがどのように符号化されているか。 ログインシェルでロケールを設定するには どうするか。 コンソールを英語以外の言語用に設定するには どうするか。 様々な言語で効率的に X Window System を使うには どうすればよいか。 国際化されたアプリケーションを書くための 情報はどこにあるか。 この章を読む前に、以下のことを理解しておく必要があります。 サードパーティ製アプリケーションのインストール方法 ()。 基礎知識 I18N/L10N とは? 国際化(internationalization) 地域化(localization) 開発者たちはしばしば、internationalization を縮めて I18N と表記します。18 は internationalization の最初と最後の間の 文字数です。L10N も同じ命名法を用いて localization を縮めたものです。 これらを合わせて、I18N/L10N された (すなわち国際化/地域化された) 手法、プロトコル、アプリケーションは、自分達の好みの言語を 使うことを可能にしてくれます。 国際化されたアプリケーションはライブラリとして国際化キット を用いてプログラミングされています。 これは開発者が単純なファイルを書いて、 表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。 プログラマのみなさんには、 これらの方法を利用することを強く推奨します。 なぜ I18N/L10N を使わなければいけないの? 英語以外の言語を見たり、入力したり、処理したりする場合はいつでも、 I18N/L10N が使われます。 I18N で使えるようになる言語には何があるの? I18N や L10N は FreeBSD に限った話題ではありません。 現在では、世界中の主要な言語のほとんどから選ぶことができます。 たとえば中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、 ベトナム語などがありますが、これらに限定されるわけではありません。 ロケール(locale) 地域化の利用 I18N は FreeBSD に特有のものではなく、一つの考え方です。 以下の慣習にしたがって FreeBSD を利用するようにしてください。 地域化の設定は言語コード、 国コード、エンコーディングという三つの用語を基本とします。 ロケール名はこれらから以下のように構成されます。 言語コード_国コード.エンコーディング 言語コードと国コード 言語コード 国コード FreeBSD (やその他の国際化をサポートした &unix;-like なシステム) を特定の言語に地域化するには、 国と言語を特定するためのコードを知る必要があります (Country Code はアプリケーションに指定された言語のどの変種 (variation) を用いれば良いかを教えてくれます)。 加えて、ウェブブラウザ、SMTP/POP サーバ、 ウェブサーバなどもこれらを元に様々な選択を行います。 以下は言語/国コードの例です。 - + 言語/国コード 説明 en_US 英語 (合衆国) ru_RU ロシア語 (ロシア) zh_TW 繁体字中国語 (台湾) エンコーディング エンコーディング ASCII いくつかの言語では、8-bit やワイド文字、 多バイト文字など ASCII とは異なったエンコード法を用います (&man.multibyte.3; 参照)。 古いアプリケーションはこれらを認識せず、 誤ってコントロール文字として認識してしまいます。 最近のアプリケーションは、大抵 8-bit 文字を認識します。 実装方法にも依りますが、アプリケーションのコンパイル時もしくは configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。 ワイド/多バイト文字を入力したり処理したりすることを可能にするために、 FreeBSD Ports Collection では各言語向けに異なったプログラムを提供しています。 各 FreeBSD port の国際化文書を参照してください。 特に、正しく configure したり、configure/Makefile/ コンパイラに適切な値を渡すために、アプリケーションの 文書を良く読む必要があります。 次のことを心に留めておいてください。 言語固有の、C 言語の char で表現できる シングルバイトの文字セット (&man.multibyte.3; を参照)、たとえば ISO-8859-1, ISO-8859-15, KOI8-R, CP437。 ワイド、多バイトのエンコーディング、たとえば EUC, Big5。 現在有効な文字セットのリストに関しては IANA Registry をチェックしてください。 FreeBSD 4.5 以降では、 X11 互換のロケール符号を用いています。 国際化アプリケーション FreeBSD の ports/packages システムでは、 それとひと目でわかるように国際化アプリケーションには名前に I18N という文字が含まれています。 ただし、それらのアプリケーションが常にあなたの望む言語を サポートしているとは限りません。 ロケールの設定 通常は、ログインシェルで環境変数 LANG に ロケール名を設定し export すれば十分です。これは、ユーザーの ~/.login_conf ファイル、またはユーザーの シェルの初期設定ファイル (~/.profile, ~/.bashrc, ~/.cshrc) でできます。 LC_CTYPELC_CTIME のような ロケールのサブセットを設定する必要はありません。 詳細に関しては、各言語向けの FreeBSD 文書を参照してください。 以下の二つの環境変数を設定ファイルで指定する必要があります。 POSIX &posix; &man.setlocale.3; 関連の関数のための LANG MIME アプリケーション用の MIME 文字セットのための MM_CHARSET これにはユーザのシェルの設定、アプリケーション固有の設定、 X11 の設定などが含まれます。 ロケールを設定する方法 ロケール (locale) ログインクラス ロケールを設定するには以下で説明するように、二つの方法があります。 一つは推奨される方法で、ログインクラス (login class) において環境変数に割り当てる方法。 もう一つはシステムのシェル 初期化ファイル において環境変数の指定を追加する方法です。 ログインクラスを用いる方法 この方法では、 各シェルの初期化ファイルに特定のシェル設定を追加する代わりに、 すべてのシェルにおいて一度に必要なロケール名と MIME 文字セットを環境変数に割り当てることができます。 ユーザの設定はユーザ自身で行なえますが、 管理者の設定にはスーパユーザの権限が必要となります。 ユーザの設定 ユーザのホームディレクトリの .login_conf ファイルを用いて、 両方の変数に Latin-1 エンコーディングを設定する 簡単な例は次の通りです。 me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: 繁体字中国語 (Traditional Chinese)BIG-5 エンコーディング これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定する .login_conf の一例です。 中国語、日本語、韓国語用のロケール変数を 正しく認識しないソフトウェアに対処するため、 よりたくさんの変数を設定していることに注目してください。 #Users who do not wish to use monetary units or time formats #of Taiwan can manually change each variable me:\ :lang=zh_TW.Big5:\ :lc_all=zh_TW.Big:\ :lc_collate=zh_TW.Big5:\ :lc_ctype=zh_TW.Big5:\ :lc_messages=zh_TW.Big5:\ :lc_monetary=zh_TW.Big5:\ :lc_numeric=zh_TW.Big5:\ :lc_time=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=xcin": #Setting the XIM Input Server 詳細に関しては 管理者の設定 と &man.login.conf.5; を参照してください。 管理者の設定 /etc/login.conf において、 正しい言語がユーザのクラスに指定されていることを確認してください。 /etc/login.conf は、このようになります。 language_name:accounts_title:\ :charset=MIME_charset:\ :lang=locale_name:\ :tc=default: 先ほどの例のように Latin-1 での設定はこのようになります。 german:German Users Accounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: ログインクラスを &man.vipw.8; で変更する vipw 新しいユーザを追加するために vipw を用います。そして以下のようなエントリを作成します。 user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh ログインクラスを &man.adduser.8; で変更する adduser ログインクラス 新しいユーザを追加するために adduser を用います。そして以下の手順を踏みます。 /etc/adduser.confdefaultclass = language と設定します。 この場合、他の言語のユーザには default クラスを指定することを 忘れないでください。 もうひとつの方法は、&man.adduser.8; が Enter login class: default []: と聞いてきたときに、毎回言語を指定するやり方です。 さらに別の方法は、異なる言語を利用するユーザを 追加する際に、以下のようにするやり方です。 &prompt.root; adduser -class language ログインクラスを &man.pw.8; で変更する pw 新しいユーザを追加するために &man.pw.8; を 用いる場合、以下の形式で実行します。 &prompt.root; pw useradd user_name -L language シェルの初期化ファイルによる方法 シェルごとに異なった設定が必要なため、 この方法は推奨されません。 代わりに ログインクラスを用いる方法を使ってください。 MIME ロケール(locale) ロケール名と MIME 文字コードを追加するには、 /etc/profile/etc/csh.login などのシェル初期化ファイル に以下の二つの環境変数を設定します。 以下に示す例は、ドイツ語の設定です。 /etc/profile では 次のように設定します。 LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET また /etc/csh.login では 次のように設定します。 setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 もしくは、上記のやり方を /usr/share/skel/dot.profile (/etc/profile と同形式) や /usr/share/skel/dot.login (/etc/csh.login と同形式) に追加することもできます。 X11 では、 $HOME/.xinitrc に 使用しているシェルに合った形式で LANG=de_DE.ISO8859-1; export LANG もしくは、 setenv LANG de_DE.ISO8859-1 と指定します。 コンソールの設定 C 言語の char で表現できるシングルバイトの文字セット用に、 /etc/rc.conf でその言語に対応した適切なコンソールフォントを指定してください。 font8x16=フォント名 font8x14=フォント名 font8x8=フォント名 ここで フォント名/usr/share/syscons/fonts ディレクトリ にあるフォントファイルから .fnt という拡張子を除いたものです。 sysinstall keymap screenmap - また、/stand/sysinstall + また、sysinstall (&os; バージョンが 5.2 + よりも古い場合は /stand/sysinstall) を使って、C 言語の char で表現できるシングルバイトの文字セット用の正しい キーマップとスクリーンマップを指定するようにしてください。 sysinstall では、Configure を選択し、Console を選択します。 もしくは、/etc/rc.conf に以下の行を加えてください。 scrnmap=スクリーンマップ名 keymap=キーマップ名 keychange="ファンクションキー番号の並び" ここで スクリーンマップ名/usr/share/syscons/scrnmaps ディレクトリ にあるマップファイルから .scm という拡張子を除いたものです。 VGA アダプタが疑似グラフィクス領域のフォント文字マトリクスで bit 8 を bit 9 に拡張することに対処するために (例えばスクリーンフォントが bit 8 列を使っている時に文字をその領域から外に移動する場合)、 フォントに適切にマップされたスクリーンマップが必要となります。 もし、/etc/rc.conf を以下のように設定して、 moused デーモンを有効化している場合は、 次の段落に書かれているマウスカーソルに関する情報を確認してください。 moused_enable="YES" moused 設定省略時には、&man.syscons.4; ドライバのマウスカーソルは キャラクタセット中の 0xd0-0xd3 の範囲を占めています。そのため、 利用している言語がこの範囲のキャラクタセットを使っている場合、 カーソルの占める範囲を重ならないように移動させなければなりません。 5.0 より前のバージョンの FreeBSD では、 次の行をカーネルコンフィグレーションファイルに追加することで対処できます。 options SC_MOUSE_CHAR=0x03 FreeBSD 4.4 以降の場合は、/etc/rc.conf に次の行を追加してください。 mousechar_start=3 キーマップ名/usr/share/syscons/keymaps ディレクトリにあるキーマップファイルから .kbd という拡張子を除いたものです。 どのキーマップを使うかよくわからないなら、&man.kbdmap.1; で再起動せずにキーマップを試すことができます。 ファンクションキーの並びはキーマップにより定義されてはいないため、 端末タイプに合わせたファンクションキーを設定するために keychange が必要となります。 また、/etc/ttys の中のすべての ttyv* において、 正しいコンソール端末タイプを設定するようにしてください。 現在の定義済の値は以下の通りです。 - + 文字セット 端末タイプ ISO-8859-1 もしくは ISO-8859-15 cons25l1 ISO-8859-2 cons25l2 ISO-8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (VGA のデフォルト) cons25 US-ASCII cons25w ワイド/多バイト文字の言語については、 /usr/ports/language 内の適切な FreeBSD port を利用してください。 いくつかの ports はシステムからシリアルの vtty のように見えるようにコンソールとして振る舞います。 したがって、X11 と疑似シリアルコンソール用に充分な vtty を確保しておかなければなりません。 コンソールで他の言語を使うためのアプリケーションのリストの 一部です。 - + 言語 ports の位置 繁体字中国語 (BIG-5) chinese/big5con 日本語 japanese/kon2-16dot または japanese/mule-freewnn 韓国語 korean/han X11 の設定 X11 は FreeBSD プロジェクトの一部ではありませんが、 FreeBSD ユーザのための情報を記しておきます。 - 詳細に関しては、&xfree86; + 詳細に関しては、&xorg; ウェブサイトや、あなたの使っている X11 サーバのサイトを参照してください。 ~/.Xresources を使うことで、 アプリケーション固有の国際化の設定 (フォント、メニューなど) を追加することができます。 フォントの表示 X11 True Type フォントサーバ &xorg; サーバ (x11-servers/xorg-server) か &xfree86; サーバ (x11-servers/XFree86-4-Server) をインストールし、言語の &truetype; フォントをインストールします。 ロケールを正しく設定すれば、 選んだ言語がメニューなどに表示されるはずです。 非英語の文字を入力する X11 Input Method (XIM) X11 Input Method (XIM) プロトコルはすべての X11 クライアント用の新たな標準規格です。 すべての X11 アプリケーションは XIM 入力サーバからの入力を受け取る XIM クライアントとして書かれるべきです。 様々な言語用の XIM サーバが存在します。 プリンタの設定 プリンタにはいくつかの C 言語の char で表現できる シングルバイトの文字セットがハードウェアに組み込まれています。 ワイド/多バイトの文字セットでは特殊な設定が必要であり、 apsfilter を使うことをお勧めします。 言語固有のコンバータを用いて、&postscript; か PDF フォーマット に文書をコンバートする場合もあるでしょう。 カーネルとファイルシステム FreeBSD の高速ファイルシステム (FFS) は 8-bit 透過であり、 C 言語の char で表現できるいかなる文字セットも使うことが できます (&man.multibyte.3; を参照)。 しかし、ファイルシステム中には文字セットの名前は記録されていません。 したがって、これは単なる 8-bit であり、 エンコーディングに関しては何の情報もないのです。 公式には、FFS はまだいかなるワイド/マルチバイトの文字セットもサポートしていません。 しかし FFS でそのようなサポートを行うためのパッチが、 多くのワイド/マルチバイトの文字セットに存在します。 それらは単に一時的で汎用性のない解決策であり、 わたしたちはそれらをソースツリーに含めないことを決めています。 これらのパッチに関しては、各言語のウェブサイトを参照してください。 DOS Unicode FreeBSD の &ms-dos; ファイルシステムでは、 &ms-dos;, Unicode 文字セット、FreeBSD ファイルシステムの 文字セットの間で変換を行うことが可能です。 詳細は &man.mount.msdos.8; を参照してください。 国際化に対応したプログラムのコンパイル FreeBSD ports の多くはすでに国際化されています。 いくつかには port の名前に -I18N と付いています。 これらはもちろんのこと、他のプログラムも国際化への対応を組み込んだものがあり、 コンパイルに際して特別な注意を払う必要はありません。 MySQL しかし、MySQL のようなアプリケーションでは、 特定の文字セットを使うように Makefile を設定する必要があります。 これは大抵 Makefile の中で 対処されているか、ソース中の configure に値を渡すことで対応しています。 FreeBSD を特定の言語に地域化する Andrey A. Chernov 原作: ロシア語 (KOI8-R エンコーディング) 地域化 ロシア語 KOI8-R エンコーディングの詳細については、 KOI8-R References (Russian Net Character Set) を参照してください。 ロケールの設定 以下の行を ~/.login_conf に追加してください。 me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: ロケール を 設定する際の例については、この章の前の方を参照してください。 コンソールの設定 FreeBSD 5.0 より前のバージョンの場合は、 次の行をカーネルコンフィグファイルに追加します。 options SC_MOUSE_CHAR=0x03 FreeBSD 4.4 以降のバージョンの場合は、 /etc/rc.conf に次の行を追加します。 mousechar_start=3 /etc/rc.conf で以下のように 設定してください。 keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" /etc/ttys の各 ttyv* エントリにおいて、 端末タイプとして cons25r を指定してください。 コンソールを設定する際の例については、この章の前の方を参照してください。 プリンタの設定 プリンタ ロシア語用の文字を搭載したプリンタはほとんど ハードウェアコードページ CP866 を使っているため、 KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。 このフィルタはデフォルトで /usr/libexec/lpr/ru/koi2alt に インストールされています。 ロシア語用のプリンタの /etc/printcap エントリは以下のようになります。 lp|Russian local line printer:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: 記述の詳細については &man.printcap.5; を参照してください。 &ms-dos; ファイルシステムとロシア語ファイル名 以下の &man.fstab.5; エントリの例は、マウントされた &ms-dos; ファイルシステムにおいてロシア語ファイル名を 使えるようにします。 /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0 オプションは利用するロケール名を選択し、 オプションは文字変換表を設定します。 オプションを使う時は、変換表が /usr/libdata/msdosfs にあるので、 /usr を &ms-dos; パーティションより前に マウントするようにしてください。詳しくは、 &man.mount.msdos.8; のマニュアルを参照してください。 X11 の設定 まず X 以外のロケールの設定を行ってください。 ロシア語の KOI8-R ロケールは古い &xfree86; のリリース (3.3 より前) では動作しないかもしれません。 - 現在は &xfree86; 4.X が FreeBSD の + 現在は &xorg; が FreeBSD の デフォルトの X Window System です。 これは古いバージョンの FreeBSD を使っていない限り 起こり得ないことです。 russian/X.language ディレクトリに移動し、 以下のコマンドを実行してください。 &prompt.root; make install 上記の port は最新版の KOI8-R フォントをインストール - します。&xfree86; 3.3 には - 既に KOI8-R フォントが含まれていますが、 + します。&xorg; + (および &xfree86; バージョン 3.3 以上) + には既に KOI8-R フォントが含まれていますが、 こちらの方がより良く拡縮されます。 /etc/XF86Config ファイルの "Files" セクションをチェックしてください。 既存の FontPath エントリの前に以下の行を追加しなければなりません。 FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi" もし高解像度のビデオモードを使っている場合には、 75 dpi と 100 dpi の行を入れ替えてください。 ロシア語のキーボードを使えるようにするには、 以下の行を XF86Config ファイルの "Keyboard" セクションに追加します。 &xfree86; 3.X の場合: XkbLayout "ru" XkbOptions "grp:caps_toggle" - &xfree86; 4.X の場合: + &xorg; (または + &xfree86; 4.X) の場合: Option "XkbLayout" "ru" Option "XkbOptions" "grp:caps_toggle" また、XkbDisable が無効 (コメントアウト) になっていることを確認してください。 ロシア語/ラテン文字の切り替えは CapsLock で行います。従来の CapsLock の機能は ShiftCapsLock で使うことができます (ラテン文字モードの時のみ)。 キーボードに &windows; キーがあり、 ロシア語モードでそのキーにいくつかの非英字キーが 割り当てられているようなら、XF86Config ファイルに以下の行を追加してください。 &xfree86; 3.X の場合: XkbVariant "winkeys" - &xfree86; 4.X の場合: + &xorg; (または + &xfree86; 4.X) の場合: Option "XkbVariant" "winkeys" ロシア語の XKB キーボードは古いバージョンの &xfree86; ではうまく動かないかも知れません。 詳しくは前述の 注釈を参照してください。 ロシア語の XKB キーボードは、 地域化されていないアプリケーションでもうまく動かないかも知れません。 地域化されたアプリケーションは少なくともプログラムの最初の方で XtSetLanguageProc (NULL, NULL, NULL); を呼び出すべきです。 X11 アプリケーションを地域化する方法については、 KOI8-R for X Window を参照してください。 台湾向けの繁体字中国語への地域化 地域化 繁体字中国語 FreeBSD-Taiwan プロジェクトは、多くの 中国語 ports を利用した、 FreeBSD を中国語化するための手引き を提供しています。 FreeBSD Chinese HOWTO の現在の編集者は Shen Chuan-Hsing statue@freebsd.sinica.edu.tw です。 Chuan-Hsing Shen statue@freebsd.sinica.edu.tw は FreeBSD-Taiwan の zh-L10N-tut を使って Chinese FreeBSD Collection (CFC) を作成しました。 パッケージとスクリプトは から入手できます。 ドイツ語への地域化 (すべての ISO 8859-1 言語向け) 地域化 ドイツ語 Slaven Rezic eserte@cs.tu-berlin.de は FreeBSD マシン上でウムラウトを使うためのチュートリアルを書きました。 チュートリアルはドイツ語で書かれており、 から入手できます。 日本語/韓国語への地域化 地域化 日本語 地域化 韓国語 日本語に関しては を、韓国語に関しては を参照してください。 英語以外の FreeBSD ドキュメント FreeBSD の一部を他の言語に翻訳してくれている人たちがいます。 これらは メインサイトのリンクを辿るか /usr/share/doc から入手できます。