FreeBSD ハンドブック

FreeBSD ドキュメンテーションプロジェクト

FreeBSD へようこそ! このハンドブックは FreeBSD 6.4-RELEASEFreeBSD 7.2-RELEASE のインストールおよび、日常での使い方について記述したものです。 本ハンドブックは改編作業中であり、 さまざまな人々が編集に携わっています。 いま存在するセクションの中には情報が古くなってしまったため、 更新作業の必要があるものも含まれています。 もし、このハンドブックを編集するプロジェクトに協力したいとお考えなら、 FreeBSD documentation project メーリングリスト まで電子メールを(英語で)送ってください。 この文書の最新バージョンは、いつでも 日本国内版の FreeBSD ウェブサイト および FreeBSD ウェブサイト から入手できます (この文書の以前のバージョンは http://docs.FreeBSD.org/doc/ から入手できます)。 また、他のさまざまな文書形式、圧縮形式のものが FreeBSD FTP サーバ や数多くの ミラーサイト からダウンロードできます。 このハンドブックの書籍版 (英語版) は、 FreeBSD Mall から購入できます。 また、ハンドブックの検索 を行なうこともできます。

FreeBSD ハンドブック日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクト (FreeBSD doc-jp) がおこなっています。 ハンドブックの日本語訳に関することは FreeBSD 日本語ドキュメンテーションプロジェクト において日本語で議論されています。

文書の日本語訳に関するお問い合わせや、 文書の原文に関する問い合わせをしたいが英語が得意でないという方は FreeBSD 日本語ドキュメンテーションプロジェクト まで、日本語でコメントをお寄せください。

Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.

  2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Important: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

FreeBSD は The FreeBSD Foundation の登録商標です。

3Com および HomeConnect は 3Com Corporation の登録商標です。

3ware および Escalade は 3ware Inc. の登録商標です。

ARM は ARM Limited の登録商標です。

Adaptec は Adaptec, Inc. の登録商標です。

Adobe, Acrobat, Acrobat Reader および PostScript は アメリカ合衆国および/またはその他の国の Adobe Systems Incorporated の登録商標または商標です。

Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime および TrueType は Apple Computer, Inc. の商標で、 アメリカ合衆国およびその他の国で登録されています。

Corel および WordPerfect は カナダ、アメリカ合衆国および/またはその他の国における Corel Corporation および/またはその関連会社の商標または登録商標です。

Sound Blaster は アメリカ合衆国および/またはその他の国における Creative Technology Ltd. の商標です。

CVSup は John D. Polstra の登録商標です。

Heidelberg, Helvetica, Palatino, and Times Roman はアメリカ合衆国およびその他の国における Heidelberger Druckmaschinen AG の登録商標または商標です。

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 および ThinkPad は アメリカ合衆国および/またはその他の国における International Business Machines Corporation の商標です。

IEEE, POSIX および 802 は アメリカ合衆国における Institute of Electrical and Electronics Engineers, Inc. の登録商標です。

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium および Xeon はアメリカ合衆国およびその他の国における Intel Corporation またはその関連会社の商標または登録商標です。

Intuit および Quicken は アメリカ合衆国およびその他の国における Intuit Inc. またはその関連会社の 登録商標です。

Linux は Linus Torvalds の登録商標です。

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID および Mylex は LSI Logic Corp. の商標または登録商標です。

M-Systems および DiskOnChip は M-Systems Flash Disk Pioneers, Ltd. の商標または登録商標です。

Macromedia, Flash および Shockwave は アメリカ合衆国および/またはその他の国における Macromedia, Inc. の商標または登録商標です。

Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media および Windows NT は アメリカ合衆国および/またはその他の国における Microsoft Corporation の登録商標または商標です。

Netscape および the Netscape Navigator は アメリカ合衆国およびその他の国における Netscape Communications Corporation の登録商標です。

GateD および NextHop は アメリカ合衆国およびその他の国における NextHop の登録商標および商標です。

Motif, OSF/1 および UNIX は アメリカ合衆国およびその他の国における The Open Group の登録商標で、 IT DialTone および The Open Group は同じく商標です。

Oracle は Oracle Corporation の登録商標です。

PowerQuest および PartitionMagic は アメリカ合衆国およびその他の国における PowerQuest Corporation の登録商標です。

RealNetworks, RealPlayer および RealAudio は RealNetworks, Inc. の登録商標です。

Red Hat, RPM は アメリカ合衆国およびその他の国における Red Hat, Inc. の商標または登録商標です。

SAP, R/3 および mySAP は ドイツおよび世界中のいくつもの国における SAP AG の登録商標です。

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS および Ultra は アメリカ合衆国およびその他の国における Sun Microsystems, Inc. の 商標または登録商標です。

Symantec および Ghost は アメリカ合衆国およびその他の国における Symantec Corporation の 登録商標です。

MATLAB は The MathWorks, Inc. の登録商標です。

SpeedTouch は Thomson の商標です。

U.S. Robotics および Sportster は U.S. Robotics Corporation の登録商標です。

VMware は VMware, Inc. の商標です。

Waterloo Maple および Maple は Waterloo Maple Inc. の商標または登録商標です。

Mathematica は Wolfram Research, Inc. の登録商標です。

XFree86 は The XFree86 Project, Inc. の商標です。

Ogg Vorbis および Xiph.Org は Xiph.Org の商標です。

製造者および販売者が製品を区別するのに 用いている表示の多くは、商標とされています。 この文書に登場する表示のうち FreeBSD Project がその商標を確認しているものには、その表示に続いて “™” または “®” 記号がおかれています。


Table of Contents
前書き
I. 導入
1. はじめに
1.1. この章では
1.2. FreeBSD へようこそ!
1.3. FreeBSD プロジェクトについて
2. FreeBSDのインストール
2.1. この章では
2.2. インストールガイド
2.3. サポートされているハードウェア
2.4. トラブルシューティング
3. Unix の基礎知識
3.1. この章では
3.2. 許可属性
3.3. ディレクトリ構造
3.4. ファイルシステムのマウントとアンマウント
3.5. プロセス
3.6. デーモン、シグナルとプロセス終了
3.7. シェル
3.8. テキストエディタ
3.9. デバイスとデバイスノード
3.10. 仮想コンソールと端末
3.11. さらに詳しい情報を得るには...
4. アプリケーションのインストール - packages と ports
4.1. この章では
4.2. ソフトウェアのインストール
4.3. アプリケーションの探し方
4.4. packages システムの利用
4.5. Ports Collection の利用
4.6. インストール後の作業
4.7. うまく動作しない ports に遭遇した場合には
5. X Window System
5.1. この章では
5.2. X を理解する
5.3. XFree86 のインストール
5.4. XFree86 の設定
5.5. XFree86 でのフォントの使用
5.6. X ディスプレイマネージャ
5.7. デスクトップ環境
II. 日々の生活
6. デスクトップアプリケーション
6.1. この章では
6.2. Web ブラウザ
6.3. 生産的なアプリケーション
6.4. ドキュメントビューア
6.5. 財務管理ソフトウェア
6.6. まとめ
7. マルチメディア
7.1. この章では
7.2. サウンドカードの設定
7.3. MP3 オーディオ
7.4. ビデオ再生
7.5. TV カードの設定
7.6. 画像スキャナ
8. FreeBSD カーネルのコンフィグレーション
8.1. この章では
8.2. なぜカスタムカーネルを作るか?
8.3. カスタムカーネルの構築とインストール
8.4. コンフィグレーション ファイル
8.5. デバイスノードを作る
8.6. 問題が起きた場合には
9. プリンタの利用
9.1. この章では
9.2. はじめに
9.3. 基本的なセットアップ
9.4. プリンタ設定上級編
9.5. プリンタを使う
9.6. 標準スプーラの代替品
9.7. トラブルシューティング
10. Linux バイナリ互換機能
10.1. この章では
10.2. インストール
10.3. Mathematica のインストール
10.4. Oracle のインストール
10.5. 高度なトピックス
III. システム管理
11. 設定とチューニング
11.1. この章では
11.2. 初期設定
11.3. 中核となる設定
11.4. アプリケーションの設定
11.5. サービスの起動
11.6. バーチャルホスト
11.7. 設定ファイル
11.8. sysctl によるチューニング
11.9. ディスクのチューニング
11.10. Kernel 制限のチューニング
12. FreeBSD の起動のプロセス
12.1. この章では
12.2. 起動時の問題
12.3. MBR、起動ステージ 1、2 および 3
12.4. カーネル起動時の応答
12.5. Device Hints
12.6. init: プロセス制御の初期化
12.7. シャットダウン動作
13. ユーザと基本的なアカウントの管理
13.1. この章では
13.2. スーパーユーザアカウント
13.3. システムアカウント
13.4. ユーザアカウント
13.5. アカウント情報の変更
13.6. ユーザへの制限と設定
14. セキュリティ
14.1. この章では
14.2. はじめに
14.3. FreeBSDの安全性を高める
14.4. DES, MD5 と Crypt
14.5. S/Key
14.6. Kerberos
14.7. ファイアウォール
14.8. OpenSSL
14.9. IPsec
14.10. OpenSSH
15. ストレージ
15.1. この章では
15.2. デバイス名
15.3. ディスクの追加
15.4. RAID
15.5. 光メディア (CD & DVD) の作成と使用
15.6. フロッピーディスクの作成と使用
15.7. データテープの作成と使用
15.8. フロッピーディスクへのバックアップ
15.9. バックアップの基本
15.10. ネットワーク、メモリ、そしてファイルベースのファイルシステム
15.11. ファイルシステムのスナップショット
15.12. ファイルシステムクォータ
15.13. ディスクパーティションの暗号化
16. 地域化 (localization) - I18N/L10N の利用と設定
16.1. この章では
16.2. 基礎知識
16.3. 地域化の利用
16.4. 国際化に対応したプログラムのコンパイル
16.5. FreeBSD を特定の言語に地域化する
17. 開発の最前線
17.1. この章では
17.2. FreeBSD-CURRENT vs. FreeBSD-STABLE
17.3. ソースの同期
17.4. “World” の再構築
17.5. 複数のマシンで追いかける
IV. ネットワーク通信
18. シリアル通信
18.1. この章では
18.2. シリアル接続の基礎
18.3. シリアル端末
18.4. ダイアルインサービス
18.5. ダイアルアウトサービス
18.6. シリアルコンソールの設定
19. PPP と SLIP
19.1. この章では
19.2. ユーザ ppp の利用
19.3. カーネル PPP の利用
19.4. PPP オーバイーサネット (PPPoE) の利用
19.5. SLIP の利用
20. 電子メール
20.1. この章では
20.2. 電子メールを使う
20.3. sendmail の設定
20.4. MTA の変更
20.5. トラブルシュート
20.6. 先進的なトピックス
20.7. UUCP とともに SMTP を使う
20.8. ダイアルアップ接続でメールを使う
20.9. SMTP 認証
21. 高度なネットワーク
21.1. この章では
21.2. ゲートウェイとルート
21.3. Bridging
21.4. NFS
21.5. Diskless operation
21.6. ISDN
21.7. NIS/YP
21.8. DHCP
V. 付録
A. FreeBSD の入手方法
A.1. CDROM/DVD 出版社
A.2. FTP サイト
A.3. BitTorrent
A.4. Anonymous CVS
A.5. CTM を使う
A.6. CVSup を使う
A.7. CVS タグ
A.8. AFS サイト
A.9. rsync ミラーサイト
B. 参考図書
B.1. FreeBSD 専門の書籍および雑誌
B.2. 利用者向けのガイド
B.3. 管理者向けのガイド
B.4. プログラマ向けのガイド
B.5. オペレーティングシステム内部
B.6. セキュリティの参考資料
B.7. ハードウェアの参考資料
B.8. UNIX® の歴史
B.9. 雑誌とジャーナル
C. インターネット上のリソース
C.1. メーリングリスト
C.2. Usenet ニュースグループ
C.3. World Wide Web サイト
C.4. Email アドレス
C.5. シェルアカウント
D. PGP 公開鍵
D.1. オフィサ
D.2. コアチームメンバ
D.3. 開発者
Index
Colophon
List of Tables
15-1. 物理ディスクへの名前付け
List of Examples
4-1. 手動で package をダウンロードしてローカルからインストールする
12-1. boot0 のスクリーンショット
12-2. boot2 のスクリーンショット
12-3. /etc/ttys の insecure コンソール
13-1. adduser の設定の変更
13-2. rmuser による対話的なアカウントの削除
13-3. スーパユーザによる対話的な chpass
13-4. 通常のユーザによる対話的な chpass
13-5. passwd
15-1. ssh 越しの dump の利用
15-2. RSH を設定した ssh 越しの dump を利用
15-3. ブートフロッピーを作成するスクリプト
15-4. FreeBSD 4.X での vnconfig を用いた既存のファイルシステムイメージのマウント
15-5. vnconfig を用いたファイルベースディスクの新規作成
15-6. FreeBSD 5.X での mdconfig を用いた既存のファイルシステムイメージのマウント
15-7. mdconfig を用いたファイルシステムイメージの新規作成
15-8. mdmfs を用いたファイルベースディスクの設定とマウント
15-9. FreeBSD 4.X での md メモリディスク
15-10. mdconfig を用いたメモリベースディスクの新規作成
15-11. mdmfs を用いたメモリベースディスクの新規作成
20-1. sendmail アクセスデータベースの設定
20-2. メールエイリアス
20-3. 仮想ドメインメール対応表の例
21-1. 出張所 LAN または 家庭 LAN
21-2. 本社 LAN や他の LAN
A-1. -CURRENT (ls(1)) をちょっと確認してみます。
A-2. SSH を使って src/ ツリーをチェックアウトしてみます。
A-3. ls(1) のバージョンを 6-STABLE ブランチから調べてみます。
A-4. ls(1) の変更点のリストを (Unified diff で) 作ってみます。
A-5. 他のどんなモジュールの名前が 使われているか検索してみます。

前書き

想定している読者

最初の部分は FreeBSD を使い始めた人向けで、FreeBSD のインストールの 過程を手引きし、UNIX® の基礎となっている概念や慣習を丁寧に紹介します。 この部分に取り組むために必要なのは、探究心と、紹介された新たな概念を 理解する能力だけです。

その次の、ハンドブックのはるかに大きな部分では、FreeBSD システム 管理者が興味を抱くあらゆる種類の話題が分かりやすく言及されています。 一部の章は、その章の前に読んでおくべきことが推奨されており、各章の 始めの概要で述べられています。

さらなる情報源の一覧は、Appendix B をご覧ください。

第 1 版からの変更

第 2 版は、FreeBSD ドキュメンテーションプロジェクトの献身的な メンバーによる 2 年以上に渡る作業の頂点に立つものです。 この新たな版における主な変更は、次のようなものです。

この文書の構成

この文書は 3 部構成になっています。 第 1 部導入では、FreeBSD のインストールと 基本的な使い方を扱います。各章は順に読むことを想定していますが、 馴染み深い話題を扱った章は飛ばしてもよいでしょう。 第 2 部システム管理は、より上級の FreeBSD ユーザの関心をひく話題を広く扱っています。 各章の始めにはその章が何を扱っていて、 読者にどんな予備知識が期待されるかを簡潔に述べた概要がおかれています。 これは、その章に関心のない読者がそこを飛ばして興味のある章を 見つけられるようにするためです。 第 3 部は参考情報からなる付録です。

Chapter 1, はじめに

新規ユーザに FreeBSD を紹介します。ここでは、FreeBSD プロジェクトの歴史、目標と開発モデルについて述べています。

Chapter 2, インストール

インストール過程を一通りユーザに案内しています。 また、シリアルコンソール経由でのインストールのような 高度な話題もいくらか扱っています。

Chapter 3, UNIX の基礎知識

FreeBSD オペレーティングシステムの基本的なコマンドや 機能を扱っています。Linux やその他の UNIX 風のものに馴染んでいたら、 この章を飛ばしても構わないでしょう。

Chapter 4, アプリケーションのインストール

FreeBSD の革新的な “Ports Collection” および 標準的なバイナリパッケージによるサードパーティアプリケーションの インストールについて説明しています。

Chapter 5, X Window System

X Window System 全般と、特に FreeBSD 上での XFree86 の利用について述べています。 また、KDEGNOME のような 一般的なデスクトップ環境にも触れています。

Chapter 11, 設定とチューニング

システム管理者が FreeBSD システムを調整して最適な性能を 引き出すのに利用できるパラメータについて述べています。また、 FreeBSD で利用されている様な設定ファイルと そのありかも解説しています。

Chapter 12, 起動プロセス

FreeBSD の起動プロセスを解説し、このプロセスを 設定オプションで制御する方法を説明しています。

Chapter 13, ユーザと基本的なアカウン トの管理

ユーザアカウントの生成、操作について述べています。また、 ユーザーに課すことができる資源の制限や その他のアカウント管理作業について議論しています。

Chapter 8, FreeBSD カーネルのコンフィグレーション

どのような場合に新たにカーネルを構成する必要があるかを説明し、 カスタムカーネルのコンフィグレーション、構築、 インストールについて詳しく説明しています。

Chapter 14, セキュリティ

FreeBSD システムを安全に保つために役立つ Kerberos, IPsec, OpenSSH, ネットワークファイアウォールといった 利用可能な様々なツールについて説明しています。

Chapter 9, プリンタの利用

FreeBSD におけるプリンタの取り扱いを説明しています。たとえば、 バナーページ、プリンターの課金、初期設定といったことです。

Chapter 15, ストレージ

FreeBSD でストレージメディアやファイルシステムを どう扱うかを説明しています。対象は、物理ディスク、RAID アレイ、 光学およびテープメディア、メモリベースのディスク、 ネットワークファイルシステムなどです。

Chapter 16, 地域化

FreeBSD を英語以外の言語で使う方法を説明しています。 システムとアプリケーション両方のレベルの地域化を扱っています。

Chapter 6, デスクトップアプリケーション

Web ブラウザや生産性向上ツールのような 一般的なデスクトップアプリケーションをいくつか挙げ、 FreeBSD におけるインストール方法を説明しています。

Chapter 7, マルチメディア

システムを音声やビデオ再生に対応させるためにどう設定するかを 説明します。また、音声やビデオアプリケーションも例示しています。

Chapter 18, シリアル通信

FreeBSD システムに端末やモデムを、 ダイヤルインまたはダイヤルアウト用に接続する方法を説明しています。

Chapter 19, PPP と SLIP

FreeBSD で、PPP, SLIP や PPP over Ethernet を使って リモートシステムに接続する方法を説明しています。

Chapter 21, 高度なネットワーク

LAN 上の他のコンピュータとインターネット接続の共有、 ネットワークファイルシステムの利用、NIS 経由のアカウント情報の共有、 ドメインネームサーバの設定等々、 ネットワークに関する様々な話題を取り扱っています。

Chapter 20, 電子メール

電子メールサーバの構成要素をそれぞれ説明し、 最もよく使われているメールサーバソフトウェアである sendmail について、 単純な設定をとりあげています。

Chapter 17, 開発の最前線

FreeBSD-STABLE, FreeBSD-CURRENT と FreeBSD のリリースの 違いを説明します。どんなユーザにとって開発システムを追随するのが 有用かを述べ、その方法の概要をまとめています。

Chapter 10, Linux バイナリ互換機能

FreeBSD の Linux バイナリ互換機能を説明しています。また、 Oracle, SAP R/3, Mathematica® といった人気の高い Linux アプリケーションのインストールを詳しく説明しています。

Appendix A, FreeBSD の入手方法

FreeBSD を収録した CDROM や DVD の様々な入手先や、 FreeBSD をダウンロードしてインストールできるインターネット上の サイトを挙げています。

Appendix B, 参考図書

この文書は、もっと詳しい説明が欲しくなるかもしれない さまざまな題目について触れています。参考図書には、このハンドブックで 参照している、多くの素晴らしい本が挙げられています。

Appendix C, インターネット上のリソース

FreeBSD ユーザが FreeBSD について質問したり、技術的な 議論に参加できる、多くの公開された場について説明しています。

Appendix D, PGP 公開鍵

多くの FreeBSD 開発者の PGP fingerprint を載せています。

この文書で用いられている表記法

一貫して読みやすい文章を提供するために、この文書全体では以下の 表記法が用いられています。

書体による表記

イタリック体

イタリック体 のフォントは、ファイル名、URL, 強調表現、技術用語の最初の使用を表すのに使われています。

等幅

等幅フォントは、エラーメッセージ、 コマンド、環境変数、ports の名称、ホスト名、ユーザ名、 グループ名、デバイスの名称、変数、 コードの断片を表すのに使われています。

太字

太字のフォントは、 アプリケーション、コマンド、キーを表すのに使われています。

ユーザー入力

文章の他の部分と区別するため、キーは太字で 示されています。同時に押すことを意図したキーの組み合わせは、キーの間に `+' を入れて表されます。たとえば

Ctrl+Alt+Del

は、ユーザーが Ctrl, Alt それから Del キーを同時に 押すことを意図しています。

順に押すことを意図したキーは、カンマで区切って表されます。 たとえば

Ctrl+X, Ctrl+S

は、ユーザーが Ctrl キーと X キーを同時に押してから、 Ctrl キーと S キーを同時に押すことを 意図しています。

E:\> で始まる例は、MS-DOS® コマンドを表しています。特に注釈がなければ、それらのコマンドは最近の Microsoft® Windows® の “コマンドプロンプト” 環境でも 実行できます。

E:\> tools\fdimage floppies\kern.flp A:

# で始まる例は、FreeBSD 上でスーパーユーザ権限で 実行しなければならないコマンドを示しています。そのコマンドを入力するには、 root としてログインするか、 通常のアカウントでログインして、スーパーユーザ権限を取得するために su(1) を使います。

# dd if=kern.flp of=/dev/fd0

% で始まる例は、通常のユーザアカウントで実行するべき コマンドを示しています。特に断りのない限り、環境変数の設定やその 他のシェルコマンドには C シェルの文法が使われています。

% top

謝辞

あなたが手にしている文書は、 世界中の何百人もの人々の努力の賜物です。 誤字脱字の修正を送ったのか、文章を丸々投稿したのかによらず、 すべての貢献が役に立ちました。

多くの会社が、 著者らを雇用してフルタイムでこの文書に取り掛かれるようにしたり、 出版費用を出したりして、この文書を作り上げるのを援助してくれました。 特に、BSDi (その後 Wind River Systems に買収されました) は、フルタイムでこの文書の改善作業をするように FreeBSD ドキュメンテーションプロジェクトのメンバーを雇用し、それが 2000 年 3 月の最初の出版 (ISBN 1-57176-241-8) につながりました。 その後、Wind River Systems は、印刷出力の仕組みを整備し、 章を追加するために著者を何名か追加で雇用してくれました。この作業は、 2001 年 11 月の第 2 版の 出版 (ISBN 1-57176-303-1) に結実しました。

I. 導入

FreeBSD ハンドブックの第 1 部はユーザと FreeBSD が初めての管理者向けです。各章の内容は以下のとおりです。

  • FreeBSD の紹介

  • インストールの手順の解説

  • UNIX の基礎

  • FreeBSD で利用できる豊富なサードパーティ製のアプリケーションの インストール方法

  • UNIX におけるウィンドウシステム X、 およびクリエイティブなデスクトップ環境の設定の詳細の紹介

このハンドブックでは頻繁にページを飛すことなく前から後へと スムーズに読み進めるように、 後方への参照を極力抑えるようにしています。


Chapter 1. はじめに

改訂: Jim Mock.

1.1. この章では

FreeBSD に興味を持っていただきありがとうございます! この章では FreeBSD の歴史、目標、開発モデルなど、 FreeBSD プロジェクトに関するさまざまな事柄を扱います。

この章に書かれている話題は、次のようなものです。

  • FreeBSD とその他のオペレーティングシステムとの違い

  • FreeBSD プロジェクトの歴史

  • FreeBSD プロジェクトの目標

  • FreeBSD オープンソース開発モデルの基本的な考え方

  • そして、“FreeBSD” という名前の由来について


1.2. FreeBSD へようこそ!

FreeBSD は、4.4BSD-Lite から派生したオペレーティングシステムで、 Intel (x86 および Itanium®), AMD64, Alpha™, Sun UltraSPARC® コンピュータに対応しています。 他のアーキテクチャに対する移植も進行中です。 FreeBSD の歴史や、 現在のリリースについても読むことができます。 プロジェクトへの何らかの貢献 (ソースコード、ハードウェア、 資金の提供など) について興味があれば、 FreeBSD への貢献をご覧ください。


1.2.1. FreeBSD で何ができるの?

FreeBSD には多くの注目すべき機能があります。 例を挙げれば以下のようになります:

  • 優先度を動的に調節する機能を備えることで アプリケーションとユーザとの間で円滑かつ公平な コンピュータ資源共有を実現し、 特に高い負荷にも耐えることができる堅牢さを備えた プリエンプティブマルチタスキング

  • 多くの人々が 1 つの FreeBSD システムをさまざまな目的で同時に使うことを可能にする マルチユーザ機能。 これは例えば、プリンタやテープデバイスといったシステムの周辺機器が、 そのシステムを利用する全てのユーザだけでなく ネットワーク経由においても自然な形で共有され、 さらに重要なシステム資源の使い過ぎを防ぐために 個々の資源に対する制限がユーザ単位、 グループ単位で設定できる、というようなことを意味しています。

  • SCTP や DHCP, NFS, NIS, PPP, SLIP, IPsec, IPv6 といった業界標準規格のサポートを含んだ堅固な TCP/IP ネットワーキング。 これによって、FreeBSD マシンが商用サーバと同じように相互に運用でき、 NFS (リモートファイルアクセス) や、 電子メールサービスのような極めて重要な機能を提供します。 また、WWW や FTP, ルーティング、ファイアウォール (セキュリティ) サービスを用いてインターネットと接続できます。

  • アプリケーション (あるいはユーザ) がお互いに干渉できない ようにするメモリ保護機能。 アプリケーションがクラッシュしても、 どのような場合でも他のアプリケーションには影響を与えません。

  • FreeBSD は 32ビット のオペレーティングシステム (Alpha 版、Itanium 版、AMD64 版および UltraSPARC 版は 64 ビット) であり、 最初からそのようにこつこつと設計されました。

  • 業界標準である X Window システム (X11R7) は、普通の VGA カードやモニタでグラフィカルユーザインタフェース (GUI) を提供し、すべてのソースコードも一緒に提供されます。

  • Linux や SCO, SVR4, BSDI, NetBSD 用に作られた多くのプログラムとの バイナリ互換性

  • 何千ものすぐに実行可能な アプリケーションが FreeBSD の portspackages コレクションで利用可能です。 ここに用意されているものはネットを探し回る必要がありません

  • インターネット上で入手可能な、 移植が容易な 何千ものアプリケーションを追加できます。FreeBSD は最も評判のよい商用の UNIX システムとソースコードレベルで互換性があります。 このため、ほとんどのアプリケーションは、 もしあったとしてもほんの少しの変更でコンパイルすることができます。

  • デマンドページング仮想メモリ とそれに “付随の VM/buffer キャッシュ” の設計は、 多くのメモリを要求するアプリケーションに対して 効率よくメモリを与えるようにする一方で、 他のユーザに対しても対話的な応答を維持します。

  • 複数の CPU を搭載したマシンにおける SMP 機能のサポート。

  • 完全な CC++, Fortran の開発ツール。進んだ研究や開発のための多くの他の言語も ports や packages コレクションで提供されています。

  • システム全体のソースコード が提供されているので、 要求に合わせて環境を最大限に適合させることができます。 真のオープンシステムが利用できるのですから、 所有権のある解決方法に締めつけられ、 ベンダのなすがままになる必要はありません。

  • 膨大な量の オンラインドキュメント

  • もう書ききれません!

FreeBSD はカリフォルニア大学バークレイ校の Computer Systems Research Group (CSRG) による 4.4BSD-Lite リリースを基にしており、 BSD システムの開発の優れた伝統を守り続けています。 CSRG による素晴らしい活動に加えて、 FreeBSD プロジェクトは何千時間もの時間を注ぎ込んで、 実際の使用の場において最大の性能と信頼性を 発揮するためにシステムのチューニングをおこなっています。 多くの大企業が PC オペレーティングシステムの分野で 実現しようと奮闘しているそのような機能や性能、信頼性を FreeBSD は今すぐ提供できます!

あなたの思いつく限りのアプリケーションは、何でも FreeBSD で実行できます。ソフトウェア開発からファクトリオートメーション、 在庫制御から遠く離れた人工衛星のアンテナの方向調整まで; 商用 UNIX 製品でできることは、FreeBSD でも十分にできるのです! また、FreeBSD は世界中の研究センターや大学によって開発される 文字通り何千もの高品質で、たいていはほとんど無料で利用できる アプリケーションによる恩恵を得ることができます。 商用のアプリケーションも提供されており、 日々増え続けています。

FreeBSD のソースコードは広く提供されているので、 システムも特別なアプリケーションやプロジェクトに合わせて、 いくらでもカスタマイズすることができます。 これは有名な商業ベンダから出ているほとんどのオペレーティング システムでは不可能なことです。以下に現在 FreeBSD を 使っている人々のアプリケーションの例をいくつか上げます:

  • インターネットサービス: FreeBSD に組み込まれている 頑強な TCP/IP ネットワーキング機能は次のようなさまざまな インターネットサービスの理想的なプラットフォームになります:

    • FTP サーバ

    • World Wide Web サーバ (標準、もしくは安全な [SSL])

    • IPv4 および IPv6 ルーティング

    • ファイアウォールと NAT (“IP マスカレード”) ゲートウェイ

    • 電子メールサーバ

    • USENET ニュースおよび電子掲示板システム

    • さらにいろいろ…

    FreeBSD を利用すれば、小規模で安価な 386 クラスの PC でも気軽に導入することができますし、 事業の成長に合わせてアップグレードした 4 つの Xeon プロセッサと RAID ストレージデバイスを備えたシステムでも、 全くそのまま使うことができるのです。

  • 教育: あなたは、計算機科学または関連分野の工学を専攻する学生さんですか? オペレーティングシステムやコンピュータアーキテクチャ、 ネットワークについて学習するなら、 実際に FreeBSD のソースコードを読んで、 それがどのように動作するのかを学ぶのが一番よい方法です。 また、無料で利用できる CAD や数学、 グラフィックデザインのパッケージがいくつもあるので、 コンピュータに関わる主要な目的が、 のことをすることにある方にも、 大いに役立ちます。

  • 研究: システム全体のソースコードが利用できるため、 FreeBSD はオペレーティングシステムの研究だけでなく、 計算機科学の他の部門においても優れたプラットフォームです。 自由に利用できる FreeBSD の特長は、オープンフォーラムで 議論される特別なライセンスの同意や制限について心配することなく、 離れたグループでもアイディアや開発の共有による共同研究を可能にします。

  • ネットワーキング: 新しいルータが必要? ネームサーバ (DNS) は? 内部のネットワークを人々から守るファイアウォールは? FreeBSD はすみに眠っている使われていない 386 や 486 の PC を簡単に 洗練されたパケットフィルタリング機能を持つ高級なルータに 変えることができます。

  • X Window ワークステーション: 自由に利用できる X11 サーバを使うことによって、 安価な X 端末として FreeBSD を使うこともできます。 X 端末とは違って FreeBSD は多くのアプリケーションをローカルに走らせることもでき、 中心のサーバの負荷を軽減することも可能です。 FreeBSD は“ディスクレス”でもブート可能であり、 個々のワークステーションを安価で、 容易に管理することさえ可能にします。

  • ソフトウェア開発: 基本的な FreeBSD システムには、有名な GNU の C/C++ コンパイラやデバッガを含んだ完全な開発ツールがついてきます。

FreeBSD は、ソースとバイナリの両方とも、CD-ROM または anonymous FTP で入手可能です。 詳しくは Appendix A をご覧ください。


1.2.2. FreeBSD はどこに使われていますか?

FreeBSD は、以下に代表されるような世界最大クラスの IT 会社のデバイスおよび製品のプラットフォームとして利用されています。

FreeBSD は、以下のサイトに代表されるような、 インターネット上で最大クラスのサイトでも利用されています。

また、この他にもあります。


1.3. FreeBSD プロジェクトについて

以下の節では簡単な歴史やプロジェクトの目標、 開発モデルなど、普段は表にでない話題を提供しています。


1.3.1. FreeBSD 小史

寄稿: Jordan Hubbard.

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 社に連絡してみました。CD-ROM を使って FreeBSD を配布することによって、 インターネットに容易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考えたからです。Walnut Creek CDROM 社は FreeBSD を CD で配布するというアイデアを採用してくれたばかりか、 作業するためのマシンと高速なインターネット回線を私たちのプロジェクトに提供してくれました。 当時は海のものとも山のものともわからなかった私たちのプロジェクトに対して、Walnut Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで、 FreeBSD は短期間のうちにここまで大きく成長したのです。

CD-ROM による最初の配布 (そしてネットでの、 ベータ版ではない最初の一般向け配布) は 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 をネットと CD-ROM (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 ブランチが作成されました。 このブランチからはこれまでいくつものリリースが公開されています。 2000 年 3 月に初めて 4.0-RELEASE が公開され、 最終版の 4.11-RELEASE は 2005 年 1 月 に公開されました。

長い間延期されていた 5.0-RELEASE は、2003 年 1 月 19 日にアナウンスされました。これは 3 年近くにわたる作業の集大成であり、 このリリースより、FreeBSD は先進的なマルチプロセッサとアプリケーションスレッドに対応し、 また、UltraSPARCia64 プラットフォームへの対応も始まりました。 これに続いて 5.1 が 2003 年 6 月に公開されています。 -CURRENT ブランチからの最後の 5.X リリースは 5.2.1-RELEASE で、 2004 年 2 月に公開されました。

2004 年 8 月に RELENG_5 ブランチが作成され、続いて 5.3-RELEASE が 5-STABLE ブランチからのリリースの始まりを飾りました。 最新の 5.5-RELEASE は 2006 年 5 月に公開されました。 今後 RELENG_5 ブランチからのリリースは行われません。

2005 年 7 月に RELENG_6 ブランチが作成され、 6.X ブランチの最初のリリースである 6.0-RELEASE は 2005 年 11 月に公開されました。最新の 6.4-RELEASE は Nov 2008 に公開されました。 今後 RELENG_6 ブランチからのリリースは行われません。

2007 年 10 月に RELENG_7 ブランチが作成され、 このブランチの最初のリリースである 7.0-RELEASE は 2008 年 2 月に公開されました。 このブランチからの最新の 7.2-RELEASE は May 2009 に公開されました。 RELENG_7 ブランチからのリリースは、引き続き行われる予定です。

長期的な開発プロジェクトは 8.X-CURRENT 開発ブランチ (トランク) で続けられ、 8.X のスナップショットリリースが収録された CD-ROM (もちろん、ネットワーク上でも) は、開発の進行状況に応じて スナップショットサーバ より継続して入手できます。


1.3.2. FreeBSD プロジェクトの目標

寄稿: Jordan Hubbard.

FreeBSD プロジェクトの目的は、いかなる用途にも使用でき、 何ら制限のないソフトウェアを供給することです。 私たちの多くは、 コード (そしてプロジェクト) に対してかなりの投資をしてきており、 これからも多少の無駄はあっても投資を続けて行くつもりです。ただ、 他の人達にも同じような負担をするように主張しているわけではありません。 FreeBSD に興味を持っている一人の残らず全ての人々に、 目的を限定しないでコードを提供すること。これが、 私たちの最初のそして最大の “任務” であると信じています。そうすれば、コードは可能な限り広く使われ、 最大の恩恵をもたらすことができるでしょう。これが、 私たちが熱烈に支持しているフリーソフトウェアの最も基本的な目的であると、 私は信じています。

私たちのソースツリーに含まれるソースのうち、 GNU 一般公有使用許諾 (GPL) または GNU ライブラリ一般公有使用許諾 (LGPL) に従っているものについては、多少制限が課せられています。ただし、 ソースコードへのアクセスの保証という、 一般の制限とはいわば逆の制限 (訳注1) です。 GPL ソフトウェアの商利用には、そのライセンスにある 複雑な側面が影響してくることがあります。 ですから私たちは、そうすることが合理的であると判断されたときには、 より制限の少ない、BSD 著作権表示を採用しているソフトウェアを選択するようにしています。

(訳注1) GPL では、「ソースコードを実際に受け取るか、 あるいは、希望しさえすればそれを入手することが可能であること」 を求めています。


1.3.3. FreeBSD の開発モデル

寄稿: 浅見 賢.

FreeBSD の開発は非常に開かれた、柔軟性のあるプロセスです。 貢献者リスト を見ていただければわかるとおり、 FreeBSD は文字通り世界中の何百という人々の努力によって開発されています。 FreeBSD の開発環境は、 この何百という開発者がインターネット経由で共同作業できるようになっているのです。 新しい開発者はいつでも大歓迎ですので、FreeBSD technical discussions メーリングリスト にメールを送ってください。 FreeBSD announcements メーリングリスト もありますので、他の FreeBSD ユーザに自分のやっていることを宣伝したい時にはどうぞ使ってください。

あと、FreeBSD プロジェクトとその開発プロセスについて、 どなたにも知っていていただきたいのは以下のようなことです。

SVN と CVS リポジトリ

長年にわたり FreeBSD のソースツリーは CVS (Concurrent Versions System) によってメンテナンスされてきました。 CVS はソースコード管理用のフリーソフトウェアで、 FreeBSD のリリースにも含まれています。 2008 年 6 月、プロジェクトはソースコード管理のシステムを SVN (Subversion) に移行しました。 ソースツリーの急速な増加や、 これまでに蓄積された膨大な量の履歴によって、 CVS の持つ技術的な限界が明かになってきたためです。 メインリポジトリは SVN によって管理されますが、 SVN リポジトリにおける変更点は CVS に反映されるので、 CVSupcsup といった CVS のクライアントツールはこれまで通り正常に動きます。 現在はベースシステムのみが SVN を採用し、 ドキュメント、World Wide Web および Ports レポジトリは、 これまでと同じく CVS によって管理されています。 FreeBSD の メインリポジトリは米国カリフォルニア州のサンタクララ市に存在し、 そこから世界中のたくさんのミラーサイトにコピーされています。 -CURRENT-STABLE が含まれている SVN ツリーそのものは、 あなたのマシンにも簡単に取ってくることができます。 これについては ソースツリーの同期の章をご覧ください。

ソースツリー管理者

コミッター (committers) は CVS ツリーへの書き込み権限を持っている人、 FreeBSD のソースに変更を加えることができる人です (CVS でリポジトリに変更を加えるには cvs(1) commit というコマンドを使うので、 これらの人々は英語では “committers” と呼ばれます)。 開発者にコードを送って見てもらうのに一番いい方法は send-pr(1) コマンドを使うことです。 もし、何か問題があって send-pr が使えないなら FreeBSD committer's メーリングリスト にメールを送っていただいても構いません。

FreeBSD コアチーム

FreeBSD コアチーム は FreeBSD プロジェクトが会社だとすると取締役会にあたるものです。 コアチームとして一番重要な役割は FreeBSD プロジェクトが全体としてよい方向に向かっていることを確認することです。 責任感あふれる開発者を上記のソースツリー管理者として招くこと、 また仕事上の都合などでコアチームをやめた人たちの後任を見つけることもコアチームの役割です。 現在のコアチームは FreeBSD 開発者 (committer) の中から 2008 年 7 月に選挙によって選出されました。 コアチームを選出するための選挙は、2 年ごとに行なわれています。

コアチームのうち何人かは特定の担当分野を持っており、 システムのうち一部に特に重点をおいて面倒を見ています。 FreeBSD 開発者と担当分野の完全なリストは コントリビュータのリストをご覧ください。

Note: 忘れてほしくないのは、 コアチームのほとんどは FreeBSD に対してボランティアの立場であり、 FreeBSD プロジェクトからは何ら金銭的な支援を受けていない、 ということです。ですから、 ここでの“責任”は “保証されたサポート”ではありません。 そういう意味で、上記の“取締役会” という例えはあまりよくないかもしれません。むしろ、FreeBSD のために人生を棒に振ってしまった人の集まりといった方が正しいかも…。

その他のコントリビュータ

最後になりますが、 もっとも重要で多数をしめる開発者はフィードバックやバグフィクスをどんどん送ってくれるユーザ自身です。 FreeBSD の開発に関わっていきたいという人は、 議論の場である FreeBSD technical discussions メーリングリスト に参加するとよいでしょう。 FreeBSD 関連メーリングリストに関する詳細は、 Appendix C をご覧ください。

FreeBSD への貢献者リスト は日に日に長くなっています。 あなたも今日、何か送ることからはじめてみませんか?

もちろん FreeBSD に貢献するには、 コードを書くほかにもいろいろな方法があります。 助けが求められている分野については、 FreeBSD プロジェクトのウェブサイトをご覧ください。

ひとことで言うと、FreeBSD の開発組織はゆるやかな同心円状になっています。 ともすると中央集権的に見えがちなこの組織は、 FreeBSD のユーザがきちんと管理されたコードベースを 容易に追いかけられるようにデザインされているもので、 貢献したいという人を締め出す意図は全くありません! 私たちの目標は安定したオペレーティングシステムと 簡単にインストールして使うことのできる アプリケーションを提供することです。 この方法は、それを達成するために非常にうまくはたらきます。

これから FreeBSD の開発にたずさわろうという人に、 私たちが望むことはただ一つです。 FreeBSD の成功を継続的なものにするために、 現在の開発者と同じような情熱を持って接してください!


1.3.4. 現在のリリースについて

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 の ソフトウェアなどにより拡張されています。

1994 年末の 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 では基本配布セットに加え、 移植されたソフトウェア集として数千の人気の高いプログラムを提供しています。 この文書を印刷している時点で 20,000 以上の ports (移植ソフトウェア) が存在します。 ports には http (WWW) サーバから、ゲーム、言語、 エディタまでありとあらゆるものが含まれています。 ports はオリジナルソースに対する “差分”という形で表現されており、 Ports Collection 全体でも 417 MB 程度にしかなりません。 こうすることで ports の更新を容易にし、昔の 1.0 Ports Collection が要求したディスクスペースよりも少なくて済むようになります。 ports をコンパイルするには、 インストールしたいと思っているプログラムのディレクトリに移動し、 make install とすると、 あとはすべてシステムがやってくれます。 どの ports もオリジナルの配布セットを動的に CD-ROM や近くの FTP サーバから取ってくるので、 ディスクは構築したいと思っている ports の分だけを準備しておけば十分です。 ほとんどの ports は、すでにコンパイルされた状態で “package” として提供されており、 ソースコードからコンパイルしたくない場合、これを使うと (pkg_add というコマンドで) 簡単にインストールできます。 package と ports に関する詳細は、 Chapter 4 をご覧ください。

最近の FreeBSD マシンであれば、 /usr/share/doc というディレクトリに、インストールの手順や FreeBSD を利用する上で有用なドキュメントがたくさんあります。 これらのローカルにインストールされたドキュメントは、HTML ブラウザを使って、以下の URL から 参照することができます。

FreeBSD ハンドブック (英文オリジナル)

/usr/share/doc/handbook/index.html

FreeBSD に関する FAQ

/usr/share/doc/faq/index.html

また、 http://www.FreeBSD.org/ にはマスタ (かなり頻繁に更新されます) がありますので、 こちらも参照してください。


Chapter 2. FreeBSDのインストール

改訂: Jim Mock , 2000 年 1 月.


2.1. この章では

この章では, あなたのシステムに FreeBSD をインストールする方法について説明しています. FreeBSD は, CD-ROM, フロッピーディスク, 磁気テープ, MS-DOS パーティション, (モデムや LAN を経由できるなら) anonymous FTP や NFS を通じてインストールすることができます.

どのインストール方法を利用する場合も, まず 次のセクションで説明する インストールディスクの作成から始める必要があります. あなたが今すぐにインストールするつもりがなくとも, このディスクでコンピュータを起動すれば, あなたのハードウェアを FreeBSD で利用する上で重要な情報を得ることができます. また, その情報はどのインストール方法が利用できるのかについての判断材料にもなりますし, さらに, 後々起こるかも知れない問題を解決する手がかりにもなるでしょう.

もし anonymous FTP を使用してインストールすることを考えているなら, 必要な作業はインストールフロッピーを用意することだけです. インストールプログラムは自動的に, 他に必要なものを用意してくれます.

FreeBSD の入手に関する詳しい情報は, 付録の FreeBSD の入手方法 をご覧ください.

さて, これまでの説明では, まだ具体的に何をすれば良いのかはっきりしないと思います. 続いて, 次のインストールガイドへ進んでください.


2.2. インストールガイド

この節では FreeBSD のインストールの準備から, 実際にインストールするところまでをひととおり解説しています. もし, 何か足りないな, と思われる部分に気付かれましたら, FreeBSD documentation project メーリングリスト まで電子メールでお知らせください.

訳注: FreeBSD documentation project メーリングリスト へのメールは英語でお願いします. 日本語訳に関するお問い合わせや, 英語でのやりとりが不安な方は 日本語ドキュメンテーションプロジェクト まで日本語でお問い合わせください.




2.2.1. インストールの準備

FreeBSD をインストールするには, その前にさまざまな準備作業が必要になります. これから, それぞれのインストール方法に対して どのような下準備が必要かを説明します.

まず最初に, あなたの使っているハードウェアが FreeBSD でサポートされているかどうか確認しなければなりません. これには, サポートされている設定一覧 の節が便利です. ;-) SCSI コントローラやイーサネットアダプタ, サウンドカード等, あなたのマシンが装備している“拡張カード”のリストを作っておくと良いでしょう. このリストには割り込み番号 (IRQ) や IO ポートのアドレスといった, 拡張カードの設定に関する内容も書いておきます.


2.2.1.1. インストールフロッピーの作成

何枚かのフロッピーディスクを用意します. これらのディスクは あなたのコンピュータを起動して, インストーラを起動するのに使用します. この手順は, あなたのシステムが CDROM からの起動をサポートしていて, CDROM からインストールを行う場合には必要ありません. もしそうでなければ, 起動用のフロッピーが必要です.

Note: あなたのシステムが CDROM からの起動をサポートしているかどうかわからない場合は, 試してみてください. 普通にドライブに CDROM を入れてシステムを再起動します. その際, システムがハードディスクよりも先に CDROM から起動を試みるように, BIOS の設定を変更する必要が あるかも知れません.

Tip: もしあなたが CDROM を持っていても, ファイルをダウンロードすることには意味があります. それは, CD がリリースされた後に FreeBSD のインストーラのバグが見つかった場合, FTP サイトのイメージは速やかに修正されるからです. 当たり前のことですが, プレスされた後の CD が修正されることはありません.

  1. 起動フロッピーイメージの入手

    イメージは .flp という拡張子のファイルです. FreeBSD の CD-ROM を持っている場合は, floppies サブディレクトリの中にあります. また, FreeBSD の FTP サイトの floppies ディレクトリおよび, そのミラーサイトからイメージをダウンロードすることも可能です.

    ファイルの名前は (時々) FreeBSD のリリースによって, またインストールを行うアーキテクチャによっても異なります. FTP サイトにあるインストール用起動ディスクのイメージに関する説明において, あなたが必要とするファイルに関する最新の情報が提供されています.

  2. フロッピーディスクの準備

    ダウンロードしたイメージファイル一つに対して, 欠陥の無いフロッピーディスクを一枚用意する必要があります. 欠陥が無いことを確認する簡単な方法は, ディスクをフォーマットしてみることです. フォーマット済みで販売されているフロッピーディスクを信頼してはいけません.

    Important: FreeBSD をインストールしようとした時に, インストーラがクラッシュもしくはフリーズしてしまったり, 不正な振る舞いをする場合にまず疑わなければならないのは, 起動フロッピーです. 別のディスクにイメージファイルを書き込んで, もう一度試してみてください.

  3. イメージファイルのフロッピーディスクへの書き込み

    kern.flp というイメージファイルは, ディスクにコピーする通常ファイルではありません. これらはディスク全体の内容を含んだイメージファイルです.

    したがって, DOS の copy のような コマンドを使用してファイルを書き込むことはできません. これには, イメージを直接ディスクに書き込む特別なツールを使用する必要があります.

    もし DOS が動いているコンピュータ上でフロッピーを作成する場合は, わたしたちが提供する fdimage というツールを使用します.

    E: にある CD-ROM を利用して起動フロッピーを作成するには, 次のようにします.

    E:\> tools\fdimage floppies\kern.flp A:
    

    これをそれぞれの .flp ファイルに対して 毎回新しいフロッピーディスクに入れ換えながら繰り返します. コマンドは .flp の存在する場所に応じて調整してください. もし CD-ROM を持っていない場合には, FreeBSD の FTP サイトの tools ディレクトリから fdimage をダウンロードすることができます.

    (他の FreeBSD システムなどの) UNIX システム上で 起動フロッピーに書き込む場合は, dd(1) コマンドが利用できます. FreeBSD 上でなら, コマンドの実行は次のようになるでしょう.

    # dd if=kern.flp of=/dev/rfd0
    

    FreeBSD 上で /dev/rfd0 は 一台目のフロッピーディスク (A: ドライブ) を表し, /dev/rfd1 は同様に, 二台目のフロッピーディスク (B: ドライブ) を表します. 他の異なる UNIX システムでは, フロッピーディスクのデバイスに 違う名前が使われているかも知れません. 必要に応じて, それぞれのシステムに付属する文書を参照する必要があるでしょう.


2.2.1.2. CDROM からインストールする前に

あなたの CDROM ドライブが FreeBSD でサポートされない型である場合は, MS-DOS パーティションのセクションをご覧ください.

BSDi の FreeBSD CD-ROM からインストールする場合は, 準備作業のすべてを行なう必要はありません (その他の CDROM でもそうだと思いますが, わたしたちはその CDROM の構成を知りませんので, 確実にそうかどうかはわかりません). Walnut Creek の CD-ROM に収録されている install.bat で直接 FreeBSD を起動することもできますし, makeflp.bat で起動フロッピーディスクをつくることも可能です.

CD が El Torrito 規格の起動をサポートしていて, あなたのシステムが CDROM から直接起動する機能をサポートしているなら (多くの古いシステムは サポートしていません), 単に FreeBSD の CD の一枚目をドライブに CD を入れてシステムを再起動してください. すると CD から直接起動して, インストールメニューが表示されます.

MS-DOS パーティションからインストールするつもりでいて, CD ドライブにアクセス可能なドライバが組み込まれているなら, CDROM に入っている install.bat スクリプトを起動してください. これは, DOS から直接 FreeBSD のインストールへと進みます.

Note: これは本当の DOS から行なわなければいけません (たとえば DOS モードで起動するなど). Windows の DOS プロンプトからでは駄目です.

(DOS から) 最も簡単なインタフェースを使うには, view と入力してください. すると DOS メニューユーティリティが起動し, 可能なすべてのインストール方法の選択ができるようになります.

UNIX システム上で起動フロッピーを作成する場合は, このガイドのインストールフロッピーの作成のセクションを参照してください.

DOS から, もしくはフロッピーディスクからの起動が完了したら, インストールプログラムでインストールメディアとして CDROM を選択することができるようになっているはずです. すべての配布ファイルは, CDROM から読み込まれますので, 他の種類のインストールメディアは不要です.

システムのインストールがすべて終わって (ハードディスクから) 再起動したら, 次のように入力することで, いつでも CDROM をマウントすることができます:

# mount /cdrom

CD をドライブから取り出す前にはまず, 必ずアンマウントする必要があります. アンマウントは次のコマンドで行なうことができます.

# umount /cdrom

単純にドライブから取り出さないように!

Note: インストールに入る前に CD-ROM をドライブに入れておいて, インストールフロッピーディスクが立ち上がるときに CD-ROM を見つけられるようにしておくようにしましょう. CD-ROM をデフォルトでシステムにつけ加えたい場合も CD-ROM を入れておきます (インストールメディアとして実際に CDROM を選択しない場合も同様).

おわりに, あなたのマシンの CD-ROM を直接使って, FTP 経由で別のマシンに FreeBSD をインストールさせたいとします. やり方は簡単です. あなたのマシンのインストールが終了した後に, vipw コマンドを使って, passwd ファイルに以下の行を追加します.

ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

こうするとあなたのマシンにネットワーク接続できる人 (そして, login 許可を持っている人) は, メディアタイプとして FTP を選択できるように なります. 具体的には, FTP サイトの選択メニューから ``Other'' を選択して, ftp://あなたのマシンのアドレス を入力します.

Note: もしインストールの途中であなたのシステムの anonymous FTP を有効にしたなら, 上の設定はインストーラが自動的に 行います.


2.2.1.3. フロッピーディスクからのインストールの前に

あなたがフロッピーディスクからのインストールをしなくては ならない場合 (私たちはこの方法を とらない ことを強く提案します), その理由はハードウェアがサポートされてなかったためか, 単にいばらの道を通ることを楽しんでいるからでしょうが, インストール用の フロッピーディスクを用意する必要があります.

最低でも bin (基本配布ファイル) ディレクトリ内のすべてのファイル を入れられるだけの 1.44 メガバイトか 1.2 メガバイトのフロッピーディスク が必要です. これらのフロッピーディスクを DOS で作成している場合は, フロッピーディスクは「MS-DOS の FORMAT コマンドでフォーマット」 されなくてはなりません. Windows をお使いの場合は, Windowsのエクスプローラを使用してディスクを 初期化してください. (A: ドライブを 右クリックして, "フォーマット"を選択します).

工場での初期化済みディスクを「信用しないでください」. 念のためにあなた 自身でフォーマットし直してください. ユーザからのトラブル報告の多くは ちゃんと初期化されていないディスクを 使用していたことが原因となっています. 私が特にフォーマットし直してくださいと述べているのも, この理由からです.

他の FreeBSD マシンでフロッピーディスクを作成している場合, フォーマットすることは悪いことではありません. いちいち DOS ファイルシステムのフロッピーディスクを作成する必要は ありませんので, disklabel コマンドと newfs コマンドを使って, 次のような手順で (3.5 インチ 1.44 メガバイトディスク用の) UFS ファイルシステムを 作成することもできます.

# fdformat -f 1440 fd0.1440
# disklabel -w -r fd0.1440 floppy3
# newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0

Note: 5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" と "floppy5" にしてください

これで他のファイルシステムと同様に mount して書き込むことができます.

フォーマットされたフロッピーディスクを用意したら, それらにファイル をコピーしなくてはなりません. 配布ファイルはいくつかのかたまり にわかれていて, これらのかたまり五つで一般的な 1.44 メガバイトの フロッピーディスクに収まるようになっています. フロッピーディスクに 入るだけファイルを入れていって, 配布ファイルをすべてコピーしてください. それぞれの配布ファイルはサブディレクトリに コピーする必要があります. たとえば, a:\bin\bin.aaや, a:\bin\bin.abのようになります.

インストールメディアの選択場面になったら, “Floppy” を選択して, 残りの指定をやってください.


2.2.1.4. ハードディスクの MS-DOS パーティションからインストールする前に

ハードディスクの MS-DOS パーティションからインストールするときは, まずファイルを c:\freebsd にコピーします. CD-ROM にあるディレクトリ構造を反映してコピーしなくてはなりません. そこで, DOS の xcopy コマンドの使用をおすすめします. たとえば, FreeBSD の最低限のインストールをするには, このような手順で コピーします.

C:\> md c:\FreeBSD
C:\> xcopy e:\bin c:\FreeBSD\bin\ /s
C:\> xcopy e:\manpages c:\FreeBSD\manpages\ /s

ここで, C: ドライブには十分なディスクスペースが残っており, CD-ROM は E: ドライブに接続されているものとします.

CDROM ドライブを持っていない場合, ftp.FreeBSD.org から配布ファイル (DISTS) をダウンロードすることができます. それぞれの配布ファイル (DISTS) は, それぞれ独自の ディレクトリに入っています; たとえば, bin 配布ファイルは 7.2/bin ディレクトリにあります.

MS-DOS からたくさんの配布ファイル (DISTS) をインストールしたい (そしてディスクの余裕がある) 場合は, それぞれ c:\freebsd ディレクトリにコピーします -- BIN 配布ファイルは, 最低限必要なものです.


2.2.1.5. QIC/SCSI テープからのインストールの前に

テープからのインストールは, おそらく FTP を利用したオンライン インストールか, CD-ROM を利用したインストールができない場合の, もっとも簡単な方法でしょう. インストールプログラムは, 以下のような コマンドを使用して, 単純に配布ファイルがテープ上に tar されていることを 期待しています.

# cd /freebsd/distdir
# tar cvf /dev/rwt0 dist1 ... dist2

インストールに入る前に, テンポラリ (一時使用) ディレクトリに 十分なディスクスペースを確保して, 作成したテープのすべての ファイルを格納できることを確認してください (テンポラリディレクトリは 自分で選ぶことができます). テープの特性上, ランダムにアクセスするこ とができませんので, 一時的に極めて大量の容量を必要とします. テープに準備しただけの量のディスクスペースを 一時的に使用することに 留意してください.

Note: インストールに入るときは, 起動フロッピーディスク から立ち上げる にテープをドライブに入れておかなくてはなりません. さもないとインストール時のデバイス検出のときにテープを 見つけられません.


2.2.1.6. ネットワーク経由のインストールの前に

三つの物理的な接続形態で, ネットワーク経由のインストールを おこなうことができます. シリアルポート (SLIP もしくは PPP), パラレルポート (PLIP (laplink ケーブル使用)), またはイーサネット (標準的なイーサネットコントローラ (いくつかの PCMCIA カードにも対応)) を使用することができます.

SLIP のサポートはまだまだ原始的とも呼べる方法なので, ラップトップと 他のコンピュータをシリアルケーブルで接続するといった具合いに, 直接接続してなくてはいけません. SLIP インストールは, ダイヤル機能を 持っていませんので, インストールするためには直接接続しなくてはなりません. PPP インストールではダイヤルアップ接続が可能ですので, できれば PPP 接続の 方を選択しましょう.

もしもあなたがモデムを使用しているなら, あなたに残された選択肢は ほぼ間違いなく PPP インストールでしょう. インストール時に必要になりますので, サービスプロバイダ (ISP) に関する情報を用意しておきましょう.

PPP ダイヤルの際は, とてもシンプルな端末エミュレーターで 作業することになります. もし ISP に接続するのに PAP や CHAP を用いるなら (言い換えると, もしあなたが Windows で ISP に接続する時に スクリプトを使用していないのであれば), dialppp のプロンプトに対して入力 するだけでいいです. しかしそれ以外の場合は, お手持ちのモデムで ISP にダイヤルするための``ATコマンド''の使い方を 知っておく必要があります. これ以上の情報については, handbookFAQ のユーザー PPP エントリーを参照してください. 問題が起きた場合には, set log local ... コマンドを用いてログを画面に吐くこともできます.

FreeBSD (2.0R 以降) の動いている別のマシンと直接接続が可能でしたら, “laplink” パラレルポートケーブルで接続することを考えてみましょう. パラレルポート経由のデータ転送スピードは, シリアルラインでの 一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので, 高速にインストールすることができます.

最後になりますが, ネットワークインストールのうちでもっとも高速なものとしては イーサネットアダプタを使用するのがあげられます. FreeBSD ではきわめて多くの PC イーサネットカードをサポートしています. サポートされている カードの表 (と, 必要な設定) は, サポートされているハードウェア に書いてあります. サポートされている PCMCIA カードを使っている場合には, ラップトップの電源を 入れる「前」に差し込んでおくことにも注意してください. 残念ながら今の FreeBSD は, インストール時の活線挿抜には対応していません.

ネットワークでの IP アドレス, あなたのアドレスクラスに対応した ネットマスク, マシン名を知っておくことも必要です. PPP 接続を利用したインストールを行いたいけれども固定 IP アドレスを持っていないという場合は, ISP が自動的に IP アドレスを割り当てます. ネットワーク管理者の方に たずねればどんな値を使ったらよいかを教えてくれるでしょう. もしも他のホストを IP アドレスではなくて名前で引きたい場合, ネームサーバとゲートウェイ のアドレスも知らなくてはなりません (PPP をご使用の場合は, プロバイダの IP アドレスになります). HTTP proxy (下記参照) 経由で FTP インストールを行いたい場合は, proxy サーバのアドレスも必要になります. これらのうちのすべて, またはいくつかを 知らない場合は, イーサネット経由でのインストールを始める前に「まず」 ネットワーク管理者に相談してください.


2.2.1.6.1. NFS インストールのための下準備

NFS インストールはまったく単純明解です. FreeBSD の配布ファイルを サーバの好きな場所にコピーしておいて, メディア選択で NFS を選択します.

もしサーバが “privileged (特権) ポート” へのアクセスのみをサポート している場合, (Sun ワークステーションの標準ではこうなっています) インストールを進める前に Options メニューを選択して, ``privileged port'' オプションを選択してください.

イーサネットカードの性能が悪くて, 転送速度が遅くて困っている場合も, 適当な Options を選択するとよいでしょう.

NFS 経由でインストールするためには, サブディレクトリも 含めたマウントにサーバが対応している必要があります. たとえば, FreeBSD 7.2 の配布ファイルが ziggy:/usr/archive/stuff/FreeBSD にあるとすると, マシン ziggy では /usr/usr/archive/stuff だけではなく, /usr/archive/stuff/FreeBSD の直接マウントが可能に なっていなければなりません.

FreeBSD の /etc/exports ファイルでは, このことは -alldirs オプションによって制御されています. 他の NFS サーバの場合だとまた話が違ってくるかもしれません. もしもサーバから “permission denied” というメッセージが 返ってくるようでしたら, サブディレクトリマウントをちゃんと 有効にできていないことが考えられます.


2.2.1.6.2. FTP インストールのための下準備

FTP 経由のインストールは, FreeBSD 7.2 の最新バージョンを ミラーしているどのサイトからでも可能です. 世界中の妥当な FTP サイトの 選択肢をメニューに並べておきました.

このメニューに出ていない他の FTP サイトからインストール する場合や, ネームサーバの設定に問題が生じた場合は, メニューでサイト ``Other'' を選ぶところで, お好みの URL でサイトを指定することができます. URL として直接 IP アドレスで指定してもよく, 直接指定した場合はネームサーバ がなくても FTP インストールが可能になります. たとえば, 以下のようにします.

ftp://209.55.82.20/pub/FreeBSD/7.2-RELEASE

FTP 経由のインストールを行う場合, active, passive, HTTP proxy 経由の三種類のモードが利用できます.

FTP Active

すべての FTP 転送の際に “Active” モードを使用します. ファイアウォール内部のマシンではうまく動きませんが, passive モードをサポートしていない古い FTP サーバでも 動作します. passive モードでの FTP 転送 (こちらが デフォルトです) が失敗した場合は, active を使ってください.

FTP Passive

すべての FTP 転送の際に “Passive” モードを使用します. このモードを使用することで, ランダムポートアクセスインを 許さないファイアウォールを 越えることができるようになります.

HTTP proxy 経由の FTP

この方法では, (ウェブブラウザと同様に) HTTP プロトコルを使って proxy サーバに接続し, FTP の操作を実現します. proxy サーバは FTP 要求を (訳注: HTTP から FTP に) 変換して FTP サーバに送るため, ファイアウォールが FTP 接続を禁止していても, HTTP proxy サーバが提供されていれば ファイアウォールを超えた FTP 接続を行なうことが可能です. この方法を用いる場合は, FTP サーバの他に proxy サーバを指定する必要があります.

Note: FTP proxy には HTTP proxy タイプでないものもありますが, そういったタイプは非常にまれです. どちらであるかわからないような場合は大抵, 上で述べている HTTP proxy タイプであると考えて良いでしょう.

通常 proxy FTP サーバに対しては, ユーザ名の一部として “@” 記号に続いて実際に接続したいサーバの名称を与える必要が あります. そうすると proxy サーバは本当のサーバの「ふり」 をするようになります. たとえば: ftp.FreeBSD.org から ポート番号 1234 で要求を待つ proxy FTP サーバ foo.bar.com を使って インストールしたいとします.

この場合では, 「オプション」メニューで FTP username を ftp@ftp.FreeBSD.org, パスワードとして自分の電子メールアドレス を指定します. インストールメディアとして FTP (または proxy サーバがサポートしていれば passive FTP), URL を以下のようにします: ftp://foo.bar.com:1234/pub/FreeBSD

ftp.FreeBSD.org/pub/FreeBSD に対する FTP 要求については foo.bar.com が代理で処理をおこなうことになり, むこう のマシンからインストールすることができます (インストール時 の要求により ftp.FreeBSD.org からファイルをもってきます).


2.2.1.7. BIOS によるドライブの番号付けの確認

BIOS の, ケーブルのつなぎ直しを必要としない番号の 付け替え機能を利用している場合は, 混乱しないように, まずはじめに Section 15.1 を読んでください.


2.2.2. FreeBSD のインストール

ここまでのインストールの準備段階を状況に応じて完全に行うと, FreeBSDをインストールする準備が整います.

何かうまくいかなかった場合は, あなたが使おうとしている インストールメディアのことが書いてある箇所まで戻って もう一度読むとよいでしょう. おそらく最初読んだときに 見落していた, 有効なヒントがあるものと思います. ハードウェアの問題が出てきたとか, FreeBSD がまったく 立ち上がらない場合は, boot フロッピーディスクに提供されている Hardware Guide を読んで, 何か解決方法はないか探してください.

FreeBSD の起動フロッピーディスクには, インストールをおこなうために 必要と思われるすべてのオンラインドキュメントを用意してあります. もしもそのドキュメントがお望みのものでないようでしたら, 私たちはあなたが何にもっとも困っているのかを知りたいと思います. コメントを FreeBSD documentation project メーリングリスト にお送りください. FreeBSD のインストールプログラム (sysinstall) を, うっとうしい “step-by-step” ガイドなしに, プログラム自身で使用方法がわかるようにするのが最終目標です. 目標達成までには時間がかかりそうですが, ともかくそれが 目標なのであります :-)

閑話休題. ここに, “典型的なインストールの手順” を まとめてみましたので, お役にたてるものと思います.

  1. kern.flp を書き込んだフロッピーで 起動します. その後, 指示に従ってこれを取り出し, mfsroot.flp を書き込んだフロッピーを ドライブに入れ return キーを叩きます. ハードウェアの性能に よりますが, 起動には 30秒から 3分かかります. 起動したら 初期選択画面が出てくるでしょう. もしも kern.flp からまったく起動 しなかったり, どこかの段階で起動が止まってしまった 場合は, ハードウェアガイド の Q&A を読んで, 理由を探ってみます.

  2. F1 キーを叩きます. メニューシステムとインストールプログラム 全般に対しての使い方が表示されます. このメニューシステムを 使ったことがない場合は, 徹底的に読んでください.

  3. Options を選択し, 他に必要な特別な選択を おこないます.

  4. 典型的なインストールでおまかせしたいか, それぞれの段階をいちいちコントロールしたいか (可能であれば適切なデフォルトを使用して) 簡単にさっさと 済ませたいかによってそれぞれ, Standard, Custom, または Express を選択してください. FreeBSD を初めて使う方には, Standard を一番におすすめします.

  5. final configuration メニューからは, メニュー形式のさらに 進んだ設定をおこなうことができます. ネットワーク周りの 設定は, 特に CD-ROM / テープ / フロッピーディスクから インストールして, まだネットワーク設定をおこなっていない 人にとっては特に重要でしょう. インストールの時点できちんと 設定しておけば, ハードディスクからシステムを立ち上げ直した 時点でネットワーク接続ができるようになっていることでしょう.


2.3. サポートされているハードウェア

現在 FreeBSD は, ISA, VLB, EISA, PCI バスを搭載した, 386SX から Pentium クラス までのさまざまな種類の PC で動作します (386SX はおすすめではありません). IDE, ESDIドライブや, さまざまな SCSI コントローラ, ネットワークカードや シリアルカードにも対応しています. FreeBSD は IBM のマイクロチャネル (MCA) バスもまたサポートしています.

FreeBSD を走らせるには, 最低 8メガバイトの RAM が推奨されます. あなたのハードウェアによっては, それより少ないメモリでは 問題が発生する可能性があるため, 16メガバイトの RAM を推奨します.

以下のリストは, 現在 FreeBSD で動作が確認されているハードウェアの リストです. 他のハードウェアでも問題なく動いていると思いますが, 私たちのところには情報は入ってきていません.


2.3.1. ディスクコントローラ

  • WD1003 (あらゆる MFM/RLL)

  • WD1007 (あらゆる IDE/ESDI)

  • IDE

  • ATA

  • Adaptec 社製 1535 ISA SCSI コントローラ

  • Adaptec 社製 154X シリーズ ISA SCSI コントローラ

  • Adaptec 社製 174X シリーズ EISA SCSI コントローラ (スタンダード, エンハンスドモード)

  • Adaptec 社製 274X/284X/2920C/294X/2950/3940/3950 (Narrow/Wide/Twin) シリーズ EISA/VLB/PCI SCSI コントローラ

  • Adaptec 社製 AIC-7850, AIC-7860, AIC-7880, AIC-789X オンボード SCSI コントローラ

  • Adaptec 社製 1510 シリーズ ISA SCSI コントローラ (起動デバイスとしては使用できません)

  • Adaptec 社製 152X シリーズ ISA SCSI コントローラ

  • AHA-152X および SoundBlaster SCSI カードなどの Adaptec 社製 AIC-6260 および AIC-6360 を使用したボード.

  • AdvanSys 社製 SCSI コントローラ (全てのモデル).

  • BT-948, BT-958, BT-9580 などの BusLogic 社製 MultiMaster “W” シリーズホストアダプタ.

  • BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C, BT-540CF などの BusLogic 社製 MultiMaster “C” シリーズホストアダプタ.

  • BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A, BT-542B などの BusLogic 社製 MultiMaster “S” シリーズホストアダプタ.

  • BT-742A, BT-542B などの BusLogic 社製 MultiMaster “A” シリーズホストアダプタ.

  • BusLogic 社製 MultiMaster の完全なクローンである AMI 社製 FastDisk コントローラもサポートされます.

    Note: BusLogic/Mylex 社製 “Flashpoint” アダプタはまだサポートされていません.

  • DPT 社製 SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV, および SmartRAID IV SCSI/RAID コントローラ. DPT 社製 SmartRAID/CACHE V はまだサポートされていません. DPT 社製 PM3754U2-16M SCSI RAID コントローラは サポートされています.

  • Compaq 社製 Intelligent Disk Array コントローラ: IDA, IDA-2, IAES, SMART, SMART-2/E, Smart-2/P, SMART-2SL, Integrated Array, および Smart Arrays 3200, 3100ES, 221, 4200, 4200, 4250ES.

  • ASUS 社製 SC-200, Data Technology 社製 DTC3130 (およびその変種すべて), Diamond 社製 FirePort (すべて), NCR 社製のカード (すべて), SymBios 社製のカード (すべて), Tekram 社製 DC390W, 390U, および 390F, それに Tyan 社製 S1365 などの SymBios 社(旧 NCR 社)製 53C810, 53C810a, 53C815, 53C820, 53C825a, 53C860, 53C875, 53C875j, 53C885, および 53C896 PCI SCSI コントローラ

  • QLogic 社製 1020, 1040, 1040B, および 2100 など SCSI および Fibre Channel アダプタ

  • DTC 社製 3290 EISA SCSI コントローラの 1542 エミュレーションモード

サポートされている SCSI コントローラのすべてで, ハードディスク, 光ディスク, テープドライブ (DAT および 8mm Exabyte を含む), メディアチェンジャ, プロセッサターゲットデバイスおよび CD-ROM といった SCSI-I, SCSI-II 周辺機器が利用可能です. CDROM コマンドをサポートする WORM デバイスは, CDROM ドライバを使用することで読み込みアクセスのみサポートされます. WORM/CD-R/CD-RW への書き込みは Ports ツリーにある cdrecord によってサポートされます.

現在, 次にあげるタイプの CD-ROM ドライブがサポートされてます.

  • cd - SCSI インタフェース (ProAudio Spectrum および SoundBlaster SCSI を含む)

  • matcd - 松下 / Panasonic (Creative SoundBlaster) 独自のインタフェース (562/563 モデル)

  • scd - ソニー 独自のインタフェース (全モデル)

  • acd - ATAPI IDE インタフェース

以下のドライバは従来の SCSI サブシステムでサポートされていたものですが, 新しい CAM SCSI サブシステムではまだサポートされていません:

  • NCR5380/NCR53400 (“ProAudio Spectrum”) SCSI コントローラ

  • UltraStor 社製 14F, 24F, および 34F SCSI コントローラ

  • Seagate 社製 ST01/02 SCSI コントローラ

  • Future Domain 社製 8XX/950 シリーズ SCSI コントローラ

  • WD7000 SCSI コントローラ

    Note: UltraStor 社製ドライバについては, 現在新しい CAM フレームワークへ移植作業中のものがあります. しかし, いつ完成するか, そもそも完成するのかどうか, わかりません.

次のドライバは保守されていないので動作しないかもしれません:

  • フロッピーテープ インタフェース (Colorado/Mountain/Insight)

  • mcd - Mitsumi 独自の CD-ROM インタフェース (全モデル)


2.3.2. ネットワークカード

  • Adaptec 社製 AIC-6195 Fast Ethernet コントローラチップを使用した Fast Ethernet アダプタ:

    • Adaptec 社製 Duralink PCI Fast Ethernet アダプタ

    • ANA-62011 64-bit シングルポート 10/100baseTX アダプタ

    • ANA-62022 64-bit デュアルポート 10/100baseTX アダプタ

    • ANA-62044 64-bit 4 ポート 10/100baseTX アダプタ

    • ANA-69011 32-bit シングルポート 10/100baseTX アダプタ

    • ANA-62020 64-bit シングルポート 100baseFX アダプタ

  • Allied-Telesys 社製 AT1700 および RE2000 カード

  • Alteon Networks 社製 PCI ギガビット Ethernet NIC など Tigon 1 および Tigon 2 チップセットを使用した ギガビットイーサネットカード. 他に Alteon 社製 AceNIC (Tigon 1 および 2), 3Com 社製 3c985-SX (Tigon 1 および 2), Netgear 社製 GA620 (Tigon 2), Silicon Graphics 社製 ギガビット Ethernet, DEC/Compaq 社製 EtherWORKS 1000, NEC 社製 ギガビット Ethernet

  • AMD 社製 PCnet/PCI (79c970 および 53c974 または 79c974)

  • RealTek 社製 8129/8139 を使用した Fast Ethernet NIC

    • Allied-Telesys 社製 AT2550

    • Allied-Telesys 社製 AT2500TX

    • Genius 社製 GF100TXR (RTL8139)

    • NDC Communications 社製 NE100TX-E

    • OvisLink 社製 LEF-8129TX

    • OvisLink 社製 LEF-8139TX

    • Netronix Inc. 社製 EA-1210 NetEther 10/100

    • KTX-9130TX 10/100 Fast Ethernet

    • Accton 社製 “Cheetah” EN1207D (MPX 5030/5038; RealTek 8139 クローン?)

    • SMC 社製 EZ Card 10/100 PCI 1211-TX

  • LinkSys 社製 EtherFast LNE100TX, NetGear 社製 FA310-TX Rev. D1, Matrox 社製 FastNIC 10/100, Kingston 社製 KNE110TX など Lite-On 社製 98713, 98713A, 98715 および 98725 を使用した Fast Ethernet NIC.

  • NDC Communications 社製 SFA100A (98713A), CNet 社製 Pro120A (98713 または 98713A), CNet 社製 Pro120B (98715), SVEC 社製 PN102TX (98713) など Macronix 社製 98713, 98713A, 98715, 98715A および 98725 を使用した Fast Ethernet NIC.

  • LinkSys 社製 EtherFast LNE100TX version 2 など Macronix/Lite-On 社製 PNIC II LC82C115 を使用した Fast Ethernet NIC

  • Trendware 社製 TE100-PCIE など Winbond 社製 W89C840F を使用した Fast Ethernet NIC

  • Hawking Technologies 社製 PN102TX および D-Link 社製 DFE-530TX など, VIA Technologies 社製 VT3043 “Rhine I” および VT86C100A “Rhine II” を使用した Fast Ethernet NIC

  • Silicon Integrated Systems 社製 SiS 900 および SiS 7016 を使用した PCI fast Ethernet NIC

  • D-Link 社製 DFE-550TX など Sundance Technologies 社製 ST201 を使用した PCI fast ethernet NIC

  • SysKonnect 社製 SK-984x を使用した PCI ギガビット Ethernet カード. SK-9841 1000baseLX (シングルモード Fiber, シングルポート), SK-9842 1000baseSX (マルチモード Fiber, シングルポート), SK-9843 1000baseLX (シングルモード Fiber, デュアルポート) および SK-9844 1000baseSX (マルチモード Fiber, デュアルポート) など.

  • Compaq 社製 Netelligent 10, 10/100, 10/100 Proliant, 10/100 デュアルポート, 10/100 TX Embedded UTP, 10 T PCI UTP/Coax および 10/100 TX UTP, Compaq 社製 NetFlex 3P, 3P Integrated および 3P w/BNC, Olicom 社製 OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP および Racore 社製 8165 10/100baseTX and 8148 10baseT/100baseTX/100baseFX multi-personality カード など Texas Instruments 社製 ThunderLAN を使用した PCI NIC

  • ADMtek 社製 AL981 および AN985 ベースの PCI Fast Ethernet NIC

  • Alfa Inc. 社製 GFC2204 および CNet 社製 Pro110B など ASIX Electronics 社製 AX88140A を使用した PCI NIC

  • DEC 社製 EtherWORKS III NIC (DE203, DE204 および DE205)

  • DEC 社製 EtherWORKS II NICs (DE200, DE201, DE202 および DE422)

  • DEC 社製 DC21040, DC21041 または DC21140 ベースの NIC (SMC 社製 Etherpower 8432T, DE245 およびその他のもの)

  • DEC 社製 FDDI (DEFPA/DEFEA) NIC

  • Efficient 社製 ENI-155p ATM PCI

  • FORE 社製 PCA-200E ATM PCI

  • 富士通 社製 MB86960A/MB86965A

  • HP 社製 PC Lan+ カード (モデルナンバー: 27247B および 27252A)

  • Intel 社製 EtherExpress ISA (ドライバが不安定なため推奨しません)

  • Intel 社製 EtherExpress Pro/10

  • Intel 社製 EtherExpress Pro/100B PCI Fast Ethernet

  • Isolan 社製 AT 4141-0 (16 ビット)

  • Isolink 社製 4110 (8 ビット)

  • Novell 社製 NE1000, NE2000 および NE2100 Ethernet インタフェース

  • RealTek 社製 8029, NetVin 社製 5000, Winbond 社製 W89C940, Surecom 社製 NE-34, VIA 社製 VT86C926 など NE2000 をエミュレートする PCI ネットワークカード.

  • 3Com 社製 3C501, 3C503 Etherlink II, 3C505 Etherlink/+, 3C507 Etherlink 16/TP, 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B/905C PCI および EISA (Fast) Etherlink III / (Fast) Etherlink XL, 3C980/3C980B Fast Etherlink XL サーバ アダプタ, 3CSOHO100-TX OfficeConnect アダプタ

  • 東芝 Ethernet カード

  • IBM 社および National Semiconductor 社製 PCMCIA Ethernet カードもサポートされています.


2.3.3. USB 接続の周辺機器

様々な USB 接続の周辺機器がサポートされています. このリストに機種名は書かれていません. しかしいくつかの例外はありますが, ここに書かれている種類のほとんどすべてのデバイスが サポートされます.

  • USB キーボード

  • USB マウス

  • USB プリンタ および USB - パラレル プリンタ変換ケーブル

  • USB ハブ

マザーボードのチップセット:

  • ALi 社製 Aladdin-V

  • Intel 社製 82371SB (PIIX3) および 82371AB および EB (PIIX4) チップセット

  • NEC 社製 uPD 9210 ホストコントローラ

  • VIA 社製 83C572 USB ホストコントローラ

    およびその他の UHCI または OHCI に準拠した マザーボードのチップセット (現在使用できないものは知られていません).

PCI プラグイン USB ホストコントローラ

  • ADS Electronics 社製 PCI プラグインカード (2 ポート)

  • Entrega PCI プラグインカード (4 ポート)

動作が報告されている個々の USB デバイス:

  • Agiler マウス 29UO

  • Andromeda ハブ

  • Apple iMac マウスおよびキーボード

  • ATen パラレルプリンタアダプタ

  • Belkin F4U002 パラレルプリンタアダプタ および Belkin 社製 マウス

  • マウスポートが付属した BTC 社製 BTC7935 キーボード

  • Cherry G81-3504

  • Chic マウス

  • Cypress マウス

  • Entrega USB - パラレル プリンタアダプタ

  • Genius 社製 Niche マウス

  • Iomega 社製 USB Zip 100 MB

  • Kensington 社製 Mouse-in-a-Box

  • Logitech 社製 M2452 キーボード

  • Logitech 社製 ホイールマウス (3 ボタン)

  • Logitech 社製 PS/2 / USB マウス (3 ボタン)

  • MacAlly 社製マウス (3 ボタン)

  • MacAlly 社製 self-powered ハブ (4 ポート)

  • Microsoft 社製 Intellimouse (3 ボタン)

  • Microsoft 社製キーボード

  • NEC 社製ハブ

  • Trust Ami マウス (3 ボタン)


2.3.4. ISDN (European DSS1 [Q.921/Q.931] プロトコル)

  • Asuscom 社製 I-IN100-ST-DV (実験的なドライバ, おそらく動作します)

  • Asuscom 社製 ISDNlink 128K

  • AVM A1

  • AVM Fritz!Card classic

  • AVM Fritz!Card PCI

  • AVM Fritz!Card PCMCIA (現在は FreeBSD 3.x のみ)

  • AVM Fritz!Card PnP (現在は FreeBSD 3.x のみ)

  • Creatix ISDN-S0/8

  • Creatix ISDN-S0/16

  • Creatix ISDN-S0 PnP

  • Dr.Neuhaus Niccy 1008

  • Dr.Neuhaus Niccy 1016

  • Dr.Neuhaus Niccy GO@ (ISA PnP)

  • Dynalink 社製 IS64PH (保守されていません)

  • ELSA 社製 1000pro ISA

  • ELSA 社製 1000pro PCI

  • ELSA 社製 PCC-16

  • ITK ix1 micro (現在は FreeBSD 3.x のみ)

  • ITK ix1 micro V.3 (現在は FreeBSD 3.x のみ)

  • Sagem Cybermod (ISA PnP, おそらく動作します)

  • Sedlbauer Win Speed

  • Siemens I-Surf 2.0

  • Stollman Tina-pp (開発途中)

  • Teles 社製 S0/8

  • Teles 社製 S0/16

  • Teles 社製 S0/16.3 (16.3c などの “c” バージョンはサポートされません!)

  • Teles 社製 S0 PnP (実験的なドライバ, おそらく動作します)

  • 3Com/USRobotics 社製 Sportster ISDN TA 内蔵 (non-PnP バージョン)


2.3.5. サウンドデバイス

次のサウンドカードおよびコーデックがサポートされます ('実験的なドライバ' と書かれているものをサポートしているのは, FreeBSD-CURRENT のみであり, 不安定かもしれません):

  • 16550 UART (Midi) (実験的なドライバ, ヒントファイル中にトリックが必要です)

  • Advance 社製 Asound 100, 110 および Logic ALS120

  • Aureal 社製 Vortex1/Vortex2 および Vortex Advantage ベースのサウンドコーデックは サードパーティのドライバ でサポートされます

  • Creative Labs 社製 SB16, SB32, SB AWE64 (Gold を含む), Vibra16, SB PCI (実験的なドライバ), SB Live! (実験的なドライバ) およびほとんどの SoundBlaster 互換のカード

  • Creative Labs 社製 SB MIDI ポート (実験的なドライバ), SB OPL3 シンセサイザ (実験的なドライバ)

  • Crystal Semiconductor 社製 CS461x/462x オーディオアクセラレータ, CS461x MIDI ポートのサポートは実験的なものです

  • Crystal Semiconductor 社製 CS428x オーディオコントローラ

  • CS4237, CS4236, CS4232, CS4231 (ISA)

  • ENSONIQ AudioPCI ES1370/1371

  • ESS 社製 ES1868, ES1869, ES1879, ES1888

  • Gravis 社製 UltraSound PnP, MAX

  • NeoMagic 社製 256AV/ZX (PCI)

  • OPTi931 (ISA)

  • OSS-互換シーケンサ (Midi) (実験的なドライバ)

  • Trident 社製 4DWave DX/NX (PCI)

  • ヤマハ OPL-SAx (ISA)


2.3.6. その他のデバイス

  • AST 4 ポート シリアルカード (シェアード IRQ 使用)

  • ARNET 8 ポート シリアルカード (シェアード IRQ 使用)

  • ARNET (現在は Digiboard) 570/i high-speed 同期シリアルカード

  • Boca BB1004 4 ポート シリアルカード (モデムはサポートしません)

  • BOCA IOAT66 6 ポート シリアルカード (モデムをサポート)

  • Boca BB1008 8 ポート シリアルカード (モデムはサポートしません)

  • Boca BB2016 16 ポート シリアルカード (モデムをサポート)

  • Cyclades Cyclom-y シリアルボード

  • Moxa SmartIO CI-104J 4 ポート シリアルカード

  • STB 4 ポート カード (シェアード IRQ 使用)

  • SDL Communications RISCom/8 シリアルボード

  • SDL Communications RISCom/N2 and N2pci high-speed 同期シリアルボード

  • Specialix SI/XIO/SX マルチポート シリアルカード, SIHOST2.x より古いものおよび “拡張” (transputer ベース, aka JET) ホストカード どちらもサポートされます: ISA, EISA および PCI

  • Stallion マルチポート シリアルボード: EasyIO, EasyConnection 8/32 & 8/64, オンボード 4/16 および Brumby

  • Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound および Roland MPU-401 サウンドカード

  • Connectix QuickCam

  • Matrox Meteor Video フレームグラバー

  • Creative Labs Video Spigot フレームグラバー

  • Cortex1 フレームグラバー

  • Brooktree BT848 チップ および BT878 チップベースのフレームグラバー

  • HP4020, HP6020, Philips CDD2000/CDD2660 および Plasmon CD-R ドライブ

  • バスマウス

  • PS/2 マウス

  • 標準的な PC ジョイスティック

  • X-10 power コントローラ

  • GPIB および Transputer ドライブ

  • Genius および Mustek ハンドスキャナ

  • Floppy テープドライブ (いくつかのより古いモデルのみ, ドライバは不完全です)

  • Lucent Technologies 社製 WaveLAN/IEEE 802.11 PCMCIA および ISA standard speed (2Mbps) および turbo speed (6Mbps) ワイヤレス ネットワークアダプタ および同様に動作するもの (NCR WaveLAN/IEEE 802.11, Cabletron RoamAbout 802.11 DS)

    Note: これらのアダプタの ISA バージョンは, 実際には PCMCIA カードと ISA - PCMCIA ブリッジカードを組み合わせたものなので, どちらのデバイスも同じドライバで動作します.


2.4. トラブルシューティング

この節では基本的なインストールの際の, 報告された標準的な問題に対するトラブルシューティングのための情報が 書いてあります. また, FreeBSD と MS-DOS のデュアルブートを行う際の いくつかの質問と回答も書いてあります.


2.4.1. なにかおかしいときには何をすればよいでしょうか

PC アーキテクチャの様々な制限により, 100% 確実に原因を突き止めることは不可能ですが, いくつか失敗した時に できることがあります.

サポートされているハードウェア を調べて, あなたのハードウェアがサポートされているかどうか 確認してください.

もしあなたのハードウェアがサポートされているにもかかわらず, 動作しなかったり他の問題点がある時は, コンピュータをリセットして, ビジュアルカーネルコンフィギュレーション オプションを与えているときにはそれを選択してください. ここで設定することで, あなたのハードウェアを通過するようにしたり, システムに対して情報を与えたりすることができます. 起動ディスクのカーネルは, ほとんどのハードウェアデバイスの IRQ, IO アドレス, DMA チャンネルは出荷されたままの状態であるとして 設定されています. もしハードウェアの設定が変更されていると, コンフィギュレーションエディタを使用してこれらの値を設定しなければ なりません.

存在しないデバイスを認識してしまうことにより, その後実際に存在するデバイスの認識を失敗してしまうことがあります. このような場合は, 衝突しているドライバを無効にします.

Warningスクリーン (sc0) などのインストールに必要なドライバを無効にしないでください. もし, コンフィギュレーションエディタを終了したあと, インストーラが動かなくなったり, 不思議な失敗をする場合は, 削除したり変更したりしてはいけないものを, 削除あるいは変更してしまった可能性があります. 再起動してやり直してください.

コンフィギュレーションモードでは, 次のことができます:

  • カーネルにインストールされているドライバの一覧表示.

  • システムに存在しないドライバの変更.

  • デバイスドライバが使用する IRQ, DRQ および IO ポートアドレスの変更.

カーネルをハードウェアの設定にあわせた後, Q と叩くことで, 新しい設定で起動します. インストールが終了すると, コンフィギュレーションモードで変更した 設定は保存されますので, 毎回起動するたびに設定する必要はありません. また, カスタムカーネル を作りたくなるかもしれません.


2.4.2. X サーバーの設定

ここはダミー


2.4.3. MS-DOS ユーザの質問と回答

多くのユーザは, FreeBSD を MS-DOS が入っている PC にインストールしようとするでしょう. このようなシステムへの FreeBSD のインストールに関して, よく聞かれる質問が以下にあります.

2.4.3.1. 助けて! FreeBSD をインストールする容量がありません! まずはじめに, すべてを消去しなければいけないのですか?
2.4.3.2. FreeBSD から 圧縮された MS-DOS のファイルシステムを利用することができますか?
2.4.3.3. 拡張 MS-DOS パーティションをマウントすることができますか?

2.4.3.1. 助けて! FreeBSD をインストールする容量がありません! まずはじめに, すべてを消去しなければいけないのですか?

あなたのマシンではすでに MS-DOS が動いていて, FreeBSD をインストールする容量がないとしても, すべての望みがなくなったわけではありません. FreeBSD CDROM や 様々な FreeBSD の FTP サイトの tools ディレクトリにある FIPS ユーティリティを使うことができます.

FIPS を使用することで, すでにある MS-DOS パーティションを, もともとの内容を保存したままのパーティションと, 何も入っていない FreeBSD をインストールすることのできる パーティションの二つに分割することができます. まず, Windows のデフラグ (DEFRAG) ユーティリティ (エクスプローラ上で ハードドライブを右クリックして, デフラグ (DEFRAG) を選択) か, ノートンディスクツールを使用して, 指示に従ってデフラグメントを行ってください. その後, 再起動して, 新しい空いているスライスに, FreeBSD をインストールすることができます. あなたが行うインストール方法では, どの程度の空き容量が必要なのかということについては, Distributions メニューを見てください.

また, PowerQuest 社の Partition Magic という, とても便利な製品があります. このアプリケーションは, FIPS よりも優れた機能をもっており, あなたが (わたしのように) 良くオペレーティングシステムを追加したり, 削除したりしようとしているのであれば, 強く推奨します. しかし, このアプリケーションは, お金がかかりますし, あなたが FreeBSD を一度インストールして, そのまま使用しようと考えているのであれば, FIPS が最も良いでしょう.

2.4.3.2. FreeBSD から 圧縮された MS-DOS のファイルシステムを利用することができますか?

できません. Stacker(tm) や DoubleSpace(tm) などのユーティリティを使用している場合は, FreeBSD からは圧縮していない部分しか扱うことができません. 残りのファイルシステムは, 一つの巨大なファイル (Stack された, または Double Space されたファイル) として見えるでしょう. このファイルを削除しないでください. さもないと強く後悔するでしょう!

別の圧縮されていない標準 MS-DOS パーティションを作成して, MS-DOS と FreeBSD との間のやりとりに使うのがよいでしょう.

2.4.3.3. 拡張 MS-DOS パーティションをマウントすることができますか?

できます. DOS 拡張パーティションは FreeBSD では, D: ドライブは /dev/da0s5, E: ドライブは /dev/da0s6 などといったように, その他のスライスの終わりに配置されます. これはもちろん, 拡張パーティションが SCSI のドライブ 0 にある場合の例です. IDE ドライブでは, da の代わりに, 4.0-RELEASE およびそれ以降の場合は ad を, それ以前のバージョンでは wd を使用してください. それ以外の点では, 拡張パーティションをマウントする際も, 他の DOS ドライブをマウントするときと同様に, 以下のようにします:

# mount -t msdos /dev/ad0s5 /dos_d

Chapter 3. Unix の基礎知識

改訂Chris Shumway.

訳: 中井 幸博 , 1996 年 10 月 12 日.


3.1. この章では

改訂: Chris Shumway , 2000 年 3 月 10 日.

この章では FreeBSD オペレーティングシステムの基本的なコマンドと機能について記述しています。 ここに書かれてあることのほとんどは、 どんな Unix オペレーティングシステムにもあてはまります。 この章に書いてあることに馴染みがあるなら、 この章は気軽に流し読みしてください。 あなたが FreeBSD の初心者なら、 何か質問する前にこの章を読んでおいた方がきっといいはずです。

この章を読んで分かることは、次のようなことです。

  • Unix のファイルの許可属性の仕組み

  • プロセス、デーモンとシグナルとはなにか

  • シェルとはなにか。 また、デフォルトのログイン環境を変える方法

  • テキストエディタの基本的な使い方

  • さらに詳しい情報を得るためのマニュアルページの読み方

  • FreeBSD の “仮想コンソール” の使い方


3.2. 許可属性

FreeBSD は BSD Unix の直系の子孫であり、 いくつかの鍵となる Unix 思想にもとづいています。 まず最も際だった特徴として最初に言えるのは、FreeBSD がマルチユーザのオペレーティングシステムだということです。 FreeBSD は同時に働いている複数のユーザすべてを、 完全に分離したタスク上で処理する能力を持っています。 また FreeBSD は、ハードウェアデバイス、周辺装置、メモリ、 CPU 時間等への要求を、各ユーザが平等に利用できるように適切に共有し、 管理する役割を担っています。

システムがマルチユーザをサポートしているため、 システムが管理する資源はすべて、 誰がその資源を読み・書き・実行できるかを支配する、 一組の許可属性を持っています。 これらの許可属性は 3 つの部分からなる 2 桁の 8 進数の形で格納されています。 それはそのファイルの所有者(owner)に対するもの、 そのファイルが所属するグループ(group)に対するもの、 その他(others)に対するものの 3 つです。 これを数字を使って表現すると、次のようになります。

許可属性 ディレクトリの表示
0 読み込み不可、書き込み不可、実行不可 ---
1 読み込み不可、書き込み不可、実行可能 --x
2 読み込み不可、書き込み可能、実行不可 -w-
3 読み込み不可、書き込み可能、実行可能 -wx
4 読み込み可能、書き込み不可、実行不可 r--
5 読み込み可能、書き込み不可、実行可能 r-x
6 読み込み可能、書き込み可能、実行不可 rw-
7 読み込み可能、書き込み可能、実行可能 rwx

ls(1) に対してコマンドライン引数 -l を使うと、 詳細なディレクトリリストを見ることができ、 ファイルの所有者、グループ、その他への許可属性を示す欄があるのがわかります。 次に示すのは、ls -l の最初の部分だけ抜き出したものです。

-rw-r--r--

最初の(一番左の)文字は、それが 普通のファイルなのか、ディレクトリなのか、 キャラクタ型のデバイス特殊ファイルなのか、 ソケットなのか、 その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です。 この場合、- という文字は、 普通のファイルであることを示します。 この例でその次に来る rw- と書かれた 3 文字は、 そのファイルの所有者に許可を与えるものです。 その次の r-- の 3 文字は、 そのファイルが所属しているグループに許可を与えます。 最後の r-- の 3 文字は、 システムに存在するその他のユーザに許可を与えます。 “-” は許可が与えられていないことを示します。 このファイルの例では、ファイルの所有者はこのファイルを読み書きでき、 ファイルの所属しているグループに属するユーザはファイルを読むことだけでき、 そのどちらでもないユーザは、 このファイルを読むだけできるように許可属性が与えられています。 上の表によれば、このファイルに与えられた許可属性は 644 となります。 ここで各数字は、このファイルの許可属性の 3 つの部分を表しています。

ファイルについてはここまでの説明で十分です。 しかし、 デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は、大部分のハードウェアをファイルとして取り扱います。 そのため、プログラムからは普通のファイルとまったく同じようにオープンし、 データの読み書きができるようになっています。 これらのデバイス特殊ファイルは /dev ディレクトリに収められています。

ディレクトリもまた、ファイルと同様に扱われます。 それは読み込み/書き込み/実行の許可属性を持ちます。 ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます。 ディレクトリが実行可能になっているとき、 そのディレクトリに移動することができます。 つまり、そのディレクトリに “cd” することが可能です。 また、実行可能属性がついているディレクトリでは、 名前が分かっているファイルにアクセスすることもできます (もちろんそのファイル自体の許可属性によります)。

特に、ディレクトリの中の一覧を表示するには、 そのディレクトリに読み込み属性が設定されていなければなりません。 一方、名前が分かっているファイルを削除するには、 そのファイルが含まれているディレクトリに 書き込み属性実行属性 の両方が必要です。

この他にも許可属性ビットはありますが、いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます。 ファイルの許可属性そのものについて、 また、それらの設定のしかたに関する詳しい情報は、 chmod(1) マニュアルページを参照してください。


3.3. ディレクトリ構造

FreeBSD のディレクトリ構造は、 システム全体を理解するに当たって重要です。 把握しておくべき最も重要なものは、“/” ディレクトリです。 このディレクトリは起動時に一番最初にマウントされ、 オペレーティングシステムをマルチユーザで動作させるために 必要な基本システムが含まれています。 また、ルートディレクトリには、 他のファイルシステムをマウントするためのマウントポイントも含まれます。

マウントポイントとはルートファイルシステムに存在する、 追加のファイルシステムと接続するためのディレクトリのことです。 標準的なマウントポイントには /usr, /var, /mnt, /cdrom があります。 通常これらのディレクトリについては、 /etc/fstab というファイル中のエントリが参照されます。 /etc/fstab はさまざまなファイルシステムとマウントポイントの表であり、 システムが参照します。 /etc/fstab に書かれたファイルシステムは noauto オプションが指定されていなければ、 起動時に rc(8) スクリプトによって自動的にマウントされます。 /etc/fstab ファイルの書式やオプションに関しての詳細は fstab(5) をご覧ください。

ファイルシステム構造を網羅した説明は hier(7) に書かれています。 ここでは、もっともよく使われるディレクトリについて簡単に 見るだけで十分でしょう。

ディレクトリ 説明
/ ファイルシステムのルートディレクトリ
/bin/ シングルユーザ環境とマルチユーザ環境の両方で重要な ユーザユーティリティ
/boot/ オペレーティングシステムの起動時に使われるプログラムと設定ファイル
/boot/defaults/ デフォルトの起動設定ファイル; loader.conf(5) 参照
/dev/ デバイスノード; intro(4) 参照
/etc/ システム設定ファイルとスクリプト
/etc/defaults/ デフォルトのシステム設定ファイル; rc(8) 参照
/etc/mail/ sendmail(8) のようなメール転送エージェントの設定ファイル
/etc/namedb/ named 設定ファイル; named(8) 参照
/etc/periodic/ cron(8) 経由で毎日・毎週・毎月実行されるスクリプト; periodic(8) 参照
/etc/ppp/ ppp 設定ファイル; ppp(8) 参照
/mnt/ システム管理者が一時的なマウントポイントとしてよく使う 空のディレクトリ
/proc/ プロセスファイルシステム; procfs(5)mount_procfs(8) 参照
/root/ root アカウントのホームディレクトリ
/sbin/ シングルユーザ環境とマルチユーザ環境の両方で重要な システムプログラムと管理ユーティリティ
/stand/ スタンドアロン環境で使われるプログラム
/tmp/ 一時的なファイル、mfs(8) メモリファイルシステムであることが多い (普通 /tmp の内容はシステムの再起動で失われる)
/usr/ 大部分のユーザユーティリティとアプリケーション
/usr/bin/ よく使うユーティリティとプログラミングツールとアプリケーション
/usr/include/ C の標準ヘッダファイル
/usr/lib/ ライブラリ
/usr/libdata/ いろいろなユーティリティのデータファイル
/usr/libexec/ システムデーモンとシステムユーティリティ (他のプログラムから実行される)
/usr/local/ ローカルのプログラムやライブラリなど。 FreeBSD ports 構成のデフォルトインストール先としても使われます。 /usr/local 内では、 hier(7) に書かれている /usr のための一般構造が使われます。 例外は man ディレクトリで、 /usr/local/share の下ではなく /usr/local の下に直接置かれ、 ports 関係文書は share/doc/port にあります。
/usr/obj/ /usr/src ツリーのビルドで作られる アーキテクチャ依存のターゲットツリー
/usr/ports FreeBSD ports 集 (インストールしなくてもよい)。
/usr/sbin/ (ユーザが実行する)システムデーモンとシステムユーティリティ
/usr/share/ アーキテクチャに依存しないファイル
/usr/src/ BSD のソースファイルまたはローカルのソースファイル、 あるいは両方
/usr/X11R6/ X11R6 のプログラム、ライブラリなど(インストールしなくてもよい)
/var/ ログ・一時的なファイル・スプールファイルなどいろいろな用途
/var/log/ いろいろなシステムログファイル
/var/mail/ ユーザのメールボックスファイル
/var/spool/ プリンタとメールシステムのスプールディレクトリなどなど
/var/tmp/ システムが再起動しても消えない一時的なファイル
/var/yp NIS のマップ



3.4. ファイルシステムのマウントとアンマウント

ファイルシステムは / をルート (根) とする木構造として考えると視覚的に理解しやすいでしょう。 ルートディレクトリにある /dev/usr、 その他のディレクトリは枝に相当し、 それらには、/usr/local などのように、さらに枝分かれすることができます。

さまざまな理由がありますが、 ディレクトリをいくつかの異なるファイルシステム上に構築するのが良いでしょう。 たとえば /var には、 log/spool/ など、さまざまな種類の一時ファイルを置くディレクトリがあるため、 あふれてしまう可能性があります。 ルートファイルシステムをあふれさせるのは得策ではありませんので、 普通は /var/ から分離します。

また、次のような場合も、ディレクトリツリーを 別のファイルシステムに置く理由として良くあげられます。 それは、たとえば物理的に別のディスクにディレクトリツリーを置く場合、 ネットワークファイルシステム (Network File System) や CDROM ドライブのような別の仮想ディスクに置くという場合です。


3.4.1. fstab ファイル

/etc/fstab に書かれているファイルシステムは (noauto オプションがなければ) 起動プロセスの途中で 自動的にマウントされます。

/etc/fstab ファイルは、 次のような書式で書かれた行のリストになっています。

device       /mount-point fstype     options      dumpfreq     passno
device

デバイスの名前 (存在していなければなりません)。 Section 15.2 に説明があります。

mount-point

ファイルシステムがマウントするディレクトリの名前 (存在していなければなりません)。

fstype

mount(8) に渡されるファイルシステムタイプ。 FreeBSD ファイルシステムのデフォルトは ufs です。

options

読み書きするファイルシステムには rw、読み込み専用のファイルシステムには ro を、必要な他のオプションの前に指定します。 よく使われるオプションは noauto で、 起動時にはマウントされないファイルシステムに使います。 その他のオプションは mount(8) マニュアルページに載っています。

dumpfreq

これは dump(8) が使うもので、 どのファイルシステムにダンプが必要なのかを決めます。 この項目がなければ、0 であるものとみなされます。

passno

これはファイルシステムをチェックする順番を決めます。 ファイルシステムチェックを飛ばしたいファイルシステムには、 passno を 0 に設定してください。 ルートファイルシステム (どれよりも先にチェックしなければなりません) は passno を 1 に設定してください。 他のファイルシステムの passno は 1 以上に設定してください。 同じ passno のファイルシステムがあった場合、 fsck(8) は可能であれば並行してファイルシステムのチェック を行なおうとします。


3.4.2. mount コマンド

mount(8) コマンドは、 ファイルシステムをマウントするために使われるものです。

基本的には、次のように使います。

# mount device mountpoint

mount(8) マニュアルページにはたくさんのオプションが書かれていますが、 いちばんよく使われるのは次のものです。

マウントオプション

-a

/etc/fstab にある全てのファイルシステムをマウントします。 例外は “noauto” の印がついているものと、 -t フラグで除外されたものと、 すでにマウントされているファイルシステムです。

-d

実際にシステムコールする以外の全てのことをします。 このオプションは -v フラグと組み合わせて使い、 mount(8) が実際なにをしようとしているのか調べるのに便利です。

-f

クリーンでないファイルシステムを強制的にマウントします (危険です)。もしくは、ファイルシステムのマウント状態を 読み書き可能から読み込みのみに変更するとき、 書き込みアクセスを強制的に取り消します。

-r

ファイルシステムを読み込み専用でマウントします。 これは rdonly 引数を -o オプションに使うのと同じです。

-t fstype

ファイルシステムを指定のファイルシステムタイプでマウントします。 または、-a を使った場合、 指定したタイプのファイルシステムのみマウントします。

デフォルトのファイルシステムタイプは “ufs” です。

-u

ファイルシステムのマウントオプションを更新します。

-v

詳細な出力にします。

-w

ファイルシステムを読み書き可能にマウントします。

-o には、 次のようなオプションを複数カンマで区切って指定します。 以下に挙げるのはその一部です。

nodev

ファイルシステム上のスペシャルデバイスを解釈しません。 セキュリティのために有用なオプションです。

noexec

そのファイルシステム上のバイナリの実行を禁止します。 セキュリティのために有用なオプションです。

nosuid

そのファイルシステム上の setuid や setgid フラグを解釈しません。 これもセキュリティのために有用なオプションです。


3.4.3. umount コマンド

umount(8) コマンドは、パラメータとしてマウントポイントの一つ、 デバイス名、もしくは -a-A といったオプションを取ります。

いずれの形式でも -f で強制的なアンマウントを行ない、 -v で詳細な出力を出します。 ただしほとんどの場合、-f は使わないほうがよいでしょう。 強制的にファイルシステムをアンマウントすると、 計算機がクラッシュしたりファイルシステム上部のデータが 破壊されたりする恐れがあるためです。

オプション -a-A はマウントされているファイルシステムすべてをアンマウントするのに使います。 -t にファイルシステムタイプを指定すると、 指定されたものだけがアンマウントされます。 また、-A を使うとルートファイルシステムはアンマウントしません。


3.5. プロセス

FreeBSD はマルチタスクのオペレーティングシステムです。 つまり、1つ以上のプログラムがあたかも同時に動いているかのように見える、 ということです。動作中のプログラムはそれぞれ プロセス と呼ばれます。 コマンドを実行すると、最低でも1つの新しいプロセスがスタートします。 システムを正常に機能させるために常に動作しているシステムプロセスもたくさんあります。

各プロセスはプロセス ID、もしくは PID と呼ばれる数字でただ一つに識別されます。 また、ファイルのように各プロセスには所有者とグループがあります。 所有者とグループの情報は、 これまでに見たファイル許可属性を用い、 そのプロセスが開けるファイルやデバイスを決定するために使われます。 多くのプロセスには親プロセスもあります。 親プロセスとは、そのプロセスをスタートさせたプロセスのことです。 例えば、シェルにコマンドを打ち込んでいるときはシェルがプロセスで、 動かすコマンドもまたどれもプロセスです。 このようにして起動するプロセスはそれぞれシェルが親プロセスになります。 これの例外は init という特別なプロセスです。 init は常に最初のプロセスなので、 PID は必ず 1 になります。 init は FreeBSD がスタートするときカーネルによって自動的に起動されます。

ps(1)top(1) という2つのコマンドが システム上のプロセスを確認するために特に便利です。 ps(1) コマンドは現在動作中のプロセスのリストを見るために使い、 PID やプロセスが使っているメモリの量、 どういうコマンドラインで起動されたのか、 などを表示させることができます。 top(1) コマンドは動作中の全てのプロセスを表示し、 数秒ごとに表示を更新するので、 計算機がなにをしているのかインタラクティブに知ることができます。

デフォルトでは、ps(1) は動作中かつ所有者が自分のコマンドのみを表示します。 例えば:

% ps
  PID  TT  STAT      TIME COMMAND
  298  p0  Ss     0:01.10 tcsh
 7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
72210  p0  R+     0:00.00 ps
  390  p1  Is     0:01.14 tcsh
 7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
 6688  p3  IWs    0:00.00 tcsh
10735  p4  IWs    0:00.00 tcsh
20256  p5  IWs    0:00.00 tcsh
  262  v0  IWs    0:00.00 -tcsh (tcsh)
  270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
  280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
  284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
  285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

この例で分かるとおり、 ps(1) の出力はいくつかの行に整形されています。 PID は先ほど見たプロセス ID です。 PID は 1 から順に 99999 まで割り当てられ、 足りなくなると最初に戻って使い回されます。 TT はプログラムが動いている tty を示します。 差し当たって無視してもかまわないでしょう。 STAT はプログラムの状態を示しますが、 これもまた無視してよいでしょう。 TIME はプログラムがその CPU 上で動いている時間の長さです--これはプログラムをスタートさせたとき からの経過時間であるとはかぎりません。 CPU 上で時間を使う必要があるまでかなりの時間を費すようなプログラムもあるからです。 最後に、COMMAND はそのプログラムを起動するのに使われたコマンドラインとなります。

ps(1) は表示する情報を変えるためのオプションをたくさんサポートしています。 いちばん便利なのは auxww でしょう。 a は自分のプロセスだけではなく、 動作中のプロセス全部についての情報を表示します。 u はプロセスの所有者の名前をメモリ使用量と同様に表示します。 x はデーモンプロセスについての情報を表示し、 ww で、スクリーンに入りきらないほど長くなったコマンドラインでも省略せず、 ps(1) に全コマンドラインを表示させます。

top(1) の出力も同様です。 例は以下の通りです。

% top
last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
47 processes:  1 running, 46 sleeping
CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
 7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
  281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
  296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
  175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
 7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
...

出力は2つのセクションに分かれています。 ヘッダ(最初の5行です)は動作している最新のプロセスの PID、 システムの平均負荷(システムがどれくらい忙しいかの指標)、 システムの稼働時間(最後の再起動からの時間) と現在の時刻を示します。 ヘッダの中の他の数字は動作中のプロセスの数(この場合 47 ですね)、 使われているメモリとスワップ領域の量、 そしてシステムが異なる CPU 状態に消費した時間と関係します。

その下には ps(1) の出力と同じような情報を持った行が続きます。 前と同様 PID にユーザ名、消費 CPU 時間と実行中のコマンドを知ることができます。 top(1) を使うとデフォルトでプロセスが使っているメモリ容量も分かります。 メモリ使用量の欄は2項目に分かれており、 一方は合計使用量、 そしてもう一方は実使用量です--合計使用量はアプリケーションが必要としているメモリ量で、 実使用量はその時点で実際に使われているメモリ量です。 この例では、Netscape がだいたい 30 MB の RAM を必要としていますが、 いまのところ 9 MB しか使っていないことが分かります。

top(1) は自動的に2秒ごとに画面を更新します。 s オプションを使えば更新間隔を変更することができます。


3.6. デーモン、シグナルとプロセス終了

エディタを使っている場合、エディタを操作するのは簡単です。 ファイルを開く、などと動かせばよいのです。 このように操作できるのは、エディタにそういった機能があり、 かつエディタが端末に関連づけられているからです。 一方、ユーザから始終入力があるように設計されていないプログラムもあり、 そういったプログラムは最初から端末と切り離されます。 例えば、ウェブサーバは一日中ウェブのリクエストばかり処理するので、 通常全く入力を必要としません。 サイトからサイトへとメールを転送するプログラムも、 こういった種類のアプリケーションの一例です。

このようなプログラムは、デーモンと呼ばれます。 デーモンはギリシャ神話の登場人物で、 善でも悪でもなく、大雑把にいうと、 人間のために役立つことをしてくれる小さな妖精さんです。 今日の便利なウェブサーバやメールサーバととてもよく似ていますね。 このため、長い間 BSD のマスコットはスニーカーをはいてフォークを携えた かわいらしい姿のデーモンなのです。

通常デーモンとして動作するプログラムには末尾に “d” を持った名前をつける慣習があります。 BIND は Berkeley Internet Name Daemon ですし (実際実行されるプログラムは named という名前です)、 Apache ウェブサーバのプログラムは httpd と呼ばれますし、 ラインプリンタスプーリングデーモンは lpd、 などなどです。 これは単なる慣習で、しっかりがっちりとしたルールではありません。 例えば、Sendmail アプリケーションの主なメールデーモンは sendmail という名前で、 連想しそうな maild ではありません。

時々、デーモンプロセスと通信したいときがあります。 この通信はシグナルと呼ばれ、 デーモンにシグナルを送ることによってデーモン (に限らずどんな動作中のプロセスでも)と通信することができます。 送信可能なシグナルはたくさんあります--特別な意味があるものもあれば、 アプリケーションによって解釈されるものもありますし、 アプリケーションがシグナルをどう解釈するかは そのアプリケーションの文章を読めば分かるでしょう。 自分が持っているプロセスにしかシグナルを送ることはできません。 他人のプロセスに kill(1)kill(2) を使ってシグナルを送っても、許可されないでしょう。 これの例外は root ユーザで、 ルートユーザは誰のプロセスでもシグナルを送ることができます。

FreeBSD もアプリケーションにシグナルを送ることがあります。 アプリケーションを下手に書くと、 予想外のメモリにアクセスしようとするので、 FreeBSD がプロセスに セグメンテーション違反 シグナル (SIGSEGV) を送ります。 ある程度の時間が経ったら alarm(3) システムコールを使って警告してもらうようなアプリケーションには、 警告シグナル (SIGALRM) が送信される、 などです。

プロセスを止めるためには2つのシグナル、 SIGTERMSIGKILL を使います。 SIGTERM は穏かにプロセスを終了させる方法です。 プロセスはシグナルを受け取ることができ、 終了させたいのだなということを理解し、 開いているログファイルを全部を閉じ、 一般的に終了前にしていたことを終えることができます。 中断できない処理の途中だと、SIGTERM をプロセスが無視することもあるかもしれません。

プロセスは SIGKILL を無視することができません。 これは、“なにをしていようが構わないから今すぐ止まれ” というシグナルです。 プロセスに SIGKILL を送ると、 FreeBSD はそのプロセスをそこで止めます[1]

使う可能性のあるシグナルは、他に SIGHUPSIGUSR1、と SIGUSR2 があります。 これらは一般的な用途のシグナルで、 このシグナルが送信されたときアプリケーションによって別のことをします。

ウェブサーバの設定ファイルを変更したとしましょう--ウェブサーバに新しい設定を再読み込みさせたいですね。 httpd を止めて再起動することもできますが、 そうするとウェブサーバは一瞬ながら停止してしまいますし、 ちょっとでも止まってほしくないこともあるでしょう。 ほとんどのデーモンは SIGHUP シグナルに対して設定ファイルを再読み込みする反応を返すよう書かれています。 従って、httpd を止めて再起動する代わりに、 SIGHUP シグナルを送りましょう。 これらのシグナルへの標準的な反応というものがないために、 デーモンごとに行動が違うので、 疑問があれば必ずそのデーモンの文書を読んでください。

kill(1) コマンドを使って送るシグナルはこの例をご覧ください。

プロセスにシグナルを送る

この例では、inetd(8) にシグナルを送る方法を示します。 inetd(8) の設定ファイルは /etc/inetd.conf で、 inetd(8)SIGHUP が送信されるとこの設定ファイルを再読み込みします。

  1. シグナルを送りたいプロセスのプロセス ID を探します。 それには ps(1)grep(1) を使います。 grep(1) コマンドは出力を検索するために使い、 指定した文字列を探します。 このコマンドは一般ユーザで実行しますが、 inetd(8)root で実行されているので、 ps(1) には ax オプションを与える必要があります。

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW
    

    ということで、inetd(8) の PID は 198 です。 grep inetd コマンドがこの出力に出てくる場合もあります。 それは、ps(1) が動作中のプロセスのリストを見つける方法によります。

  2. kill(1) を使ってシグナルを送ります。 inetd(8)root で起動されているために、 まず su(1) を使って root にならなければなりません。

    % su
    Password:
    # /bin/kill -s HUP 198
    

    大部分の Unix コマンドと同じく、 成功したら kill(1) は何の出力も表示しません。 自分のものではないプロセスにシグナルを送ると、 “kill: PID: Operation not permitted” と表示されます。 PID を打ち間違えると、 悪いことに間違ったプロセスにシグナルを送ってしまうか、 もしくは運がよければその時点で使われていない PID にシグナルを送ったことになり、“kill: PID: No such process” と表示されます。

    なぜ /bin/kill を使うんでしょう?: 多くのシェルは kill コマンドを組み込みコマンドとして備えています。 つまり、/bin/kill を実行するのではなく、 シェルが直接シグナルを送ります。 これはとても便利なのですが、 シェルが違うと送るシグナルの名前の指定の仕方が違います。 シェルによって異なるシグナルの指定の仕方を全部覚えようとはせずに、 /bin/kill ... コマンドを直接使うほうが簡単です。

他のシグナルの送り方はほとんど同じで、 コマンドラインの TERMKILL を必要に応じて変えるだけです。

Important: システム上のランダムプロセスを終了させるのはよくありません。 特に、プロセス ID が 1 の init(8) は特別です。 /bin/kill -s KILL 1 を使うといとも簡単にシステムをシャットダウンさせることができます。 Return を押すkill(1) を実行する引数を二重にチェックするをつけてください。


3.7. シェル

FreeBSD では日々の作業のほとんどは、 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます。 シェルの主な仕事はコマンドを入力チャンネルから受け取り、 そしてそれらを実行することです。 大部分のシェルはさらに組み込みの機能を持っていて、日々の作業、 ファイル管理やファイル名の展開、コマンドライン編集、 コマンドマクロ、環境変数などに便利です。 FreeBSD には sh (Bourne Shell) や tcsh (高機能 C-shell) が含まれています。 また、 これ以外にも zshbash などたくさんのシェルが FreeBSD Ports Collection から利用可能です。

「あなたは、どのシェルを使いますか?」という質問は、 まったく趣味の問題です。 あなたが C のプログラマだったとすれば、 tcsh のような C 風のシェルの方が落ち着くかもしれません。 Linux から来た人や Unix のコマンドラインインタフェイスになじみがなければ、 bash を試すのも良いでしょう。 ポイントは、それぞれのシェルは、 あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ、 そして、どのシェルを使うことにするかを決めるのはあなた自身だということです。

シェルの一般的な機能の一つに、ファイル名の補完があります。 コマンドやファイル名の最初の数文字を与えて Tab キーを押すことで、 シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます。 例をあげましょう。 二つのファイル foobar, foo.bar が あったとします。 ここで foo.bar の方を削除するには、 rm fo[Tab].[Tab] と入力します。

するとシェルは rm foo[BEEP].bar と出力するでしょう。

[BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です。 これは複数のファイルがマッチしたため、 ファイル名の補完を完全に行なえなかったことを伝えています。 foobarfoo.bar は 両方とも fo ではじまるため、 補完できるのは foo までです。 ここで . を入力して Tab を押せば、 シェルはファイル名の残りの部分を補完できます。

もう一つあげられるシェルの特徴として、環境変数があります。 環境変数とは、シェルの環境変数空間におけるキーと値とのペアです。 この変数空間は、そのシェルから起動されたプログラムから参照でき、 それを利用してプログラムの設定を保存するのに利用されます。 下の表は、一般的な環境変数とその意味を示したものです。

変数名 意味
USER 現在のログインユーザのユーザ名。
PATH コロンで区切られた実行ファイル探索のための ディレクトリのリスト。
DISPLAY 接続する X11 ディスプレイのネットワーク名(存在する場合のみ)。
SHELL 現在のシェル。
TERM ユーザの端末名。 端末のケーパビリティを決定するのに使われる。
TERMCAP 種々の端末の機能を実現する端末のエスケープコードの データベースのエントリ。
OSTYPE オペレーティングシステムの種別。 たとえば FreeBSD。
MACHTYPE システムが動作している CPU のアーキテクチャ。
EDITOR ユーザの選んだテキストエディタ。
PAGER ユーザの選んだテキストページャ。
MANPATH コロンで区切られたマニュアルページ探索のための ディレクトリのリスト。

環境変数をセットする方法は、 それぞれのシェルごとに多少異なります。 たとえば、tcshcsh 等の C シェルでは setenv を使います。 shbash 等の Bourne シェルでは setexport を使います。 たとえば cshtcshEDITOR 環境変数の値を /usr/local/bin/emacs に セットするか変更するには、次のようにします。

% setenv EDITOR /usr/local/bin/emacs

Bourne シェルでは次のようになります。

% export EDITOR="/usr/local/bin/emacs"

ほとんどのシェルでは、 コマンドライン中の変数名の前に $ 文字を置くことで、 環境変数を展開させることができます。 たとえば、 echo $TERM$TERM が セットされている内容を表示します。 それはシェルが $TERM を展開して echo に渡しているからです。

シェルはさまざまな特殊文字を、特別なデータを表すものとして扱います。 その特殊文字はメタキャラクタと呼ばれます。 もっとも一般的なものは * で、 これはファイル名に含まれる、あらゆる文字を表します。 これらの特殊なメタキャラクタはファイル名の展開に使われます。 たとえば、echo * と入力すると ls と入力したのとほとんど同じ結果を得られます。 これはシェルが * とマッチするすべてのファイルを 受け取って echo のコマンドラインに渡し、表示するからです。

これらの特殊文字をシェルに解釈させないようにするため、 特殊文字の前にバックスラッシュ文字 (\) を置くことができます。 echo $TERM は、 あなたの端末が何にセットされているかを表示します。 echo \$TERM$TERM と そのまま表示します。


3.7.1. シェルの変更

シェルを変更する一番簡単な方法は chsh コマンドを使うことです。 chsh を実行すると 環境変数 EDITOR で示されたエディタが立ち上がります。 環境変数をセットしていなかった時は vi が立ち上がります。 “Shell:” の行を適宜変更してください。

chsh-s オプションをつけると、 エディタを起動せずにシェルを変更することが可能です。 たとえば、シェルを bash に変えたいなら、次のようにしてください。

% chsh -s /usr/local/bin/bash

chsh をパラメータなしで実行し、 エディタでシェルを変更しても同じことができます。

Note: 使おうと思っているシェルは必ず /etc/shells 中に書かれているものでなければなりません。 シェルを Ports コレクションから インストールしていたのであれば、すでにそれは行なわれていますが、 手動でインストールした場合は、それを忘れずに行ってください。

たとえば、bash を手動で /usr/local/bin にインストールした場合 以下のようにする必要があります。

# echo "/usr/local/bin/bash" >> /etc/shells

そして chsh を実行してください。


3.8. テキストエディタ

さまざまな FreeBSD の設定は、テキストファイルを編集することで行われます。 そのため、テキストエディタの扱いに慣れると良いでしょう。 FreeBSD には、基本システムの一部として二、三提供されるものと、 Ports collection から利用できる、たくさんのテキストエディタが用意されています。

最も学習が簡単なエディタは、 easy editor の略で ee と呼ばれるものです。 ee を立ち上げるには、コマンドラインから ee filename と入力します。 ここで filename は、 編集しようとしているファイルの名前です。 たとえば、/etc/rc.conf を編集するには ee /etc/rc.conf と入力します。 一旦 ee の中に入れば、 エディタの機能を操作するコマンドはすべてディスプレイの上部に 表示されています。キャレット ^ 文字は キーボードの Ctrl キーを意味しますので、 ^e はキーのコンビネーション Ctrl+e を押すという意味になります。 ee を終了するには Esc キーを押し、 そして leave editor を選びます。 ファイルが更新されていたときは、 エディタは変更をセーブするかどうかプロンプトを出します。

FreeBSD には、基本システムの一部として vi、 一方 emacsvim といった他のエディタは Ports Collection の一部として、 より強力なテキストエディタが用意されています。 これらのエディタはやや学習が複雑ですが、より強力で高い機能性を提供します。 しかし、あなたが多量のテキストを編集することを考えているなら、 vimemacs といった強力なエディタを習得することは、 より多くの時間を節約することでしょう。


3.9. デバイスとデバイスノード

デバイスとはシステム上のハードウェアに関するものに対してよく使われる用語で、 ディスクやプリンタ、グラフィックカードやキーボードが含まれます。 FreeBSD が起動するとき、FreeBSD が表示しているものの大部分は検出されたデバイスです。 /var/run/dmesg.boot を眺めれば起動メッセージを読み直すことができます。

例えば、acd0 は最初の IDE CDROM ドライブで、kbd0 はキーボードを表します。

Unix オペレーティングシステムにおけるデバイスのほとんどは、 デバイスノードと呼ばれる /dev ディレクトリにあるスペシャルファイルを通してアクセスしなければなりません。


3.9.1. デバイスノードを作成する

新しいデバイスをシステムにつけ足したり、 追加デバイスのサポートをコンパイルして加えたりするときは、 デバイスノードを追加で作成しなければならない場合があります。


3.9.1.1. MAKEDEV スクリプト

DEVFS がないシステム (5.0 より前の全 てのバージョンの FreeBSD にあてはまります) では、 以下に示すように MAKEDEV(8) スクリプトを使ってデバイスノードを作成します。

# cd /dev
# sh MAKEDEV ad1
   

この例では、取りつけられたとき2番目に当たる IDE ドライブにとって適切なデバイスノードを作ります。


3.9.1.2. DEVFS (デバイスファイルシステム: Device File System)

デバイスファイルシステム DEVFS は、 グローバルファイルシステム名前空間の中のカーネルデバイス名前空間へのアクセスを提供します。 デバイスノードを作成したり変更したりするのではなく、 DEVFS がこの特別なファイルシステムを管理するのです。

詳しくは devfs(5) マニュアルページをご覧ください。

FreeBSD 5.0 では DEVFS がデフォルトで使われています。


3.10. 仮想コンソールと端末

FreeBSD は様々な使い方ができます。その中の一つが、 テキスト端末でコマンドを入力することです。この方法で FreeBSD を使えば、 UNIX オペレーティングシステムの能力と柔軟性を手にすることができます。 この節では、“コンソール” と “端末” はどのようなもので、FreeBSD でどう使うかを 説明します。


3.10.1. コンソール

起動時に自動的にグラフィカルな環境が起動するように FreeBSD を設定していなければ、システムが起動してスタートアップ スクリプトが実行されると、すぐにログインプロンプトが出てくるでしょう。 次のようものが表示されるはずです。

Additional ABI support:.
Local package initialization:.
Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.example.org) (ttyv0)

login:

あなたのシステムではメッセージが多少異なるかもしれませんが、 似たようなものが見られるはずです。 最後の 2 行が、今関心を向けているものです。 最後から 2 行目は、以下のようになっています。

FreeBSD/i386 (pc3.example.org) (ttyv0)

この行には、 起動したばかりのシステムについていくばくかの情報があります。 あなたは、x86 アーキテクチャ上の Intel または その互換プロセッサ上で動作している “FreeBSD” の コンソールを目にしているのです[2]。このマシンの名称 (どの UNIX 機にも名前がついて います) は pc3.example.org で、 あなたはそのシステムコンソール、ttyv0 端末に向かっています。

最後の行は、常に以下のものになります。

login:

ここは、FreeBSD にログインするために “ユーザ名” を入力するところです。次の節でどうするか説明します。


3.10.2. FreeBSD にログインする

FreeBSD は、マルチユーザ、マルチプロセスなシステムです。 これは、1 台のマシンで何人もの人が交互に多くのプログラムを 動かせるシステムに与えられる正式な説明です。

あらゆるマルチユーザシステムには、ある “ユーザ” を他のユーザと区別する何がしかの手段が必要です。 FreeBSD (とすべての UNIX ライクなオペレーティングシステム) では、 すべてのユーザに対してプログラムの実行を可能にするのに、システムに “ログイン” することを義務付けてこれを実現しています。 どのユーザにも、一意な名前 (“ユーザ名”) と個人的な秘密の鍵 (“パスワード”) があります。 FreeBSD はユーザにプログラムの実行を許可する前に、 この 2 つの入力を要求します。

FreeBSD が起動してスタートアップスクリプトを実行し終わった 直後に[3]、プロンプトを表示して有効なユーザ名の入力を促します。

login:

この例では john というユーザ名を使う ことにしましょう。このプロンプトに対して john と入力して、Enter を 押してください。そうすると、 次のような“パスワード”の入力を要求するプロンプトが 表示されます。

login: john
Password:

それでは john のパスワードを入力して Enter を押してください。パスワードは 表示されません。これについては、当面は 気にする必要はありません。セキュリティのためといえば十分でしょう。

パスワードを正確に入力したら、FreeBSD にログインして 利用可能なすべてのコマンドを試せるようになっているはずです。


3.10.3. 多数のコンソール

一つのコンソールで UNIX コマンドを動かすのは結構なことですが、 FreeBSD は多くのプログラムを一度に動かせます。 コマンドを入力できるコンソールが一つというのは、 FreeBSD のようにいくつものプログラムを同時に動かせる オペレーティングシステムの場合は少しもったいないことです。 ここで、“仮想コンソール” が非常に役に立ちます。

FreeBSD は、異なる仮想コンソールを複数 表示するように設定できます。キーボード上である組合せのキーを押せば、 その中の一つから他の仮想コンソールのどれかに切り替えられます。 それぞれのコンソールは、個別の出力チャンネルを持っており、 また FreeBSD はある仮想コンソールから次に切り替えるのに応じて、 キーボード入力とモニター出力を適切につなぎ直します。

FreeBSD は、コンソールを切り替えるために、 特別なキーの組合せを予約しています[4]。FreeBSD では Alt-F1, Alt-F2 から Alt-F8 までを、 別の仮想コンソールに切り替えるのに使えます。

あるコンソールから他に切り替えるのに応じて、FreeBSD は画面 への出力を保存して戻します。結果として、FreeBSD で動かすコマン ドを入力するのに使える複数の画面とキーボードを “仮想的に” 実現できるのです。 ある仮想コンソールで実行したプログラムは、 そのコンソールが見えなくなっている時も実行を停止しません。 別の仮想コンソールに切り替えても動き続けます。


3.10.4. /etc/ttys ファイル

初期設定では、FreeBSD は 8 つの仮想コンソールを立ち上げます。 この設定はもともと埋め込まれているわけではなく、 インストールしたものが、もっと多いまたは少ない数の仮想コンソールで 起動するように、容易にカスタマイズできます。仮想コンソールの数と 設定は /etc/ttys ファイルに書かれています。

FreeBSD の仮想コンソールを設定するには /etc/ttys ファイルを利用します。 このファイルのコメントアウトされていない (# 文字で始まっていない) 行は、一つの端末または仮想コンソールの 設定があります。FreeBSD の初期設定では、 仮想コンソールを 9 つ設定し、そのうち 8 つを有効にしています。 ttyv で始まる行がそれです。

# name  getty                           type    status          comments
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

このファイルのそれぞれのカラムと仮想コンソールに設定可能な 全オプションの詳しい説明は、ttys(5) のマニュアルを 参照してください。


3.10.5. シングルユーザモードのコンソール

“シングルユーザモード” とは何かという詳しい説明は、 Section 12.6.2 にあります。FreeBSD を シングルユーザモードで動かしている場合は一つしかコンソールが ないということは注意しておくに値するでしょう。仮想コンソールは 利用できません。シングルユーザモードのコンソールの設定は、同じく /etc/ttys ファイルにあります。 console で始まる行を探してください。

# name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off secure

Note: console 行の上のコメントが示すように、 この行を編集して secureinsecure に変更できます。そうすると、 FreeBSD がシングルユーザモードで起動した場合にも root のパスワードを要求します。

ただし、これをinsecure に 変更する場合は十分注意してください。 root のパスワードを忘れてしまったら、 シングルユーザモードで起動するのは少しややこしくなります。 できることはできますが、FreeBSD の起動の過程とそれに関わる プログラムにあまり親しんでいない人には少し難しいかも知れません。


3.11. さらに詳しい情報を得るには...

3.11.1. オンラインマニュアル

FreeBSD についてのもっとも包括的な文書は、 マニュアルページの形式になっているものです。 FreeBSD システム上のほとんどすべてのプログラムには、 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています。 これらのマニュアルは man コマンドで見ることができます。man コマンドの使い方は簡単です。

% man コマンド名

コマンド名 のところには、知りたいコマンドの名前を入れます。 たとえば ls コマンドについて知りたい場合には、 次のように入力します。

% man ls

オンラインマニュアルは、 セクション番号で分類されています。

  1. ユーザコマンド

  2. システムコールとエラー番号

  3. C のライブラリ関数

  4. デバイスドライバ

  5. ファイル形式

  6. ゲームや娯楽

  7. さまざまな情報

  8. システムの管理と操作のためのコマンド

  9. カーネル開発者のための情報

時折、 同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります。 たとえば、chmod ユーザコマンドと chmod() システムコールの場合がそれに該当します。 この場合、man コマンドにセクション番号を与えることで、 どちらを参照したいかを指定することができます。

% man 1 chmod

上のようにすれば、 ユーザコマンド chmod のマニュアルページが表示されます。 オンラインマニュアルの特定セクションへの参照は、 慣習的に書かれている文書で括弧の中に示されます。 すなわち、chmod(1)chmod ユーザコマンドを、chmod(2) はシステムコールの方を示しています。

コマンドの名前を知っていて、 単純にその使い方を知りたい場合はここまでの説明で十分でしょう。 しかし、 もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? man-k スイッチをつければ、 コマンド解説(description)の文章から、 指定したキーワードを検索することができます。

% man -k mail

このコマンドにより、 “mail” というキーワードをコマンド解説に含むコマンドの一覧が表示されます。 実際には、これは apropos コマンドを使う場合と同等の機能です。

それでは、/usr/bin にあるさまざまなコマンドすべてを見ていて、 それらが実際にどう働くのかが、まったく見当もつかないときには どうしたら良いでしょう? そのときは単純に、

% cd /usr/bin
% man -f *

とするか、あるいは同じ働きをする

% cd /usr/bin
% whatis *

としてください。


3.11.2. GNU の Info ファイル

FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています。 これらのプログラムには、マニュアルページに加えて info ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています。 この文書は info コマンド、 あるいは emacs をインストールしているなら emacs の info モードで読むことができます。

info(1) コマンドを使うには、単に次のように入力します。

% info

h と入力すると、 簡単な手引きを読むことができます。 クイックコマンドリファレンスは ? を入力してください。


Chapter 4. アプリケーションのインストール - packages と ports

4.1. この章では

FreeBSD の基本システムには数多くのシステムツールが含まれています。 しかしながら、サードパーティ製のアプリケーションをインストールしないと 実用的にはそれほどたくさんのことはできません。 FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、 ソースコードをコンパイルしてインストールする Ports Collection と コンパイル済みのバイナリをインストールする packages という相補的な 2 つの技術を提供しています。 どちらのシステムを用いても、お気に入りのアプリケーションの最新版を ローカルメディアやネットワーク上からインストールできます。

この章を読むと、以下のことがわかります。

  • packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法

  • Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法

  • インストールした packages や ports を削除する方法

  • Ports Collection が用いるデフォルトの設定を変更する方法

  • お望みのソフトウェア package を探しだす方法

  • アプリケーションをアップグレードする方法


4.2. ソフトウェアのインストール

UNIX システムを使ったことのある人なら、 サードパーティ製ソフトウェアの典型的なインストール手順が 以下のようになることをご存知でしょう。

  1. ソースコード、またはバイナリ形式で 配布されているソフトウェアをダウンロードする。

  2. 配布時のフォーマット (一般的には compress(1), gzip(1) または bzip2(1) で圧縮された tarball) からソフトウェアを取り出す。

  3. ドキュメント (INSTALL または README ファイル、あるいは doc/ サブディレクト中のファイル) を探しだし、 ソフトウェアのインストール方法を調べる。

  4. ソース形式でソフトウェアが配布されている場合はコンパイルを行う。 ここでは、Makefile の編集、 または、configure スクリプトの実行、 あるいは他の作業を伴うことがある。

  5. ソフトウェアの動作を確認し、インストールする。

すべてがうまくいったならば、インストール作業は以上です。 もしインストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなければ、 適切に動くようコードを調べ、編集する必要があるかもしれません。

あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに “従来” の方法を使い続けることができます。 しかしながら、FreeBSD は インストール時にかかるたくさんの労力を軽減する 2 つの技術、 すなわち packages と ports を提供しています。 この文書を書いている時点では、 20,000 を越えるサードパーティ製アプリケーションがこれらの方法で 利用可能となっています。

FreeBSD package では、いかなるアプリケーションに対しても ダウンロードする必要のあるファイルはただ一つです。 package には、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントが含まれています。 FreeBSD に用意されている pkg_add(1), pkg_delete(1), pkg_info(1) といった package 管理コマンドで、 ダウンロードした package ファイルを扱うことができます。 新しいアプリケーションをインストールするには、 たった一つのコマンドを実行するだけです。

FreeBSD port は、アプリケーションをソースコードからコンパイルする際の 処理を自動化するように設計されたファイルの集まりです。

プログラムをコンパイルする時のことを思い出して下さい。 通常、とてもたくさんの手順 (ダウンロード、展開、パッチ作業、コンパイル、インストール) を踏まなくてはなりません。 port を構成するファイルは、 これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。 いくつかの簡単なコマンドを実行すると、 自動的にアプリケーションのソースコードがダウンロードされ、展開、 パッチ作業、コンパイル、そして、インストール作業が行われます。

さらに ports システムは、pkg_add コマンドや他の package 管理コマンドで扱うことのできる packages を生成できます。 これらのコマンドについては後の節で簡単に紹介します。

packages と ports は依存関係を理解します。 ある特定のライブラリに依存する アプリケーションをインストールするとします。 また、アプリケーションとライブラリは FreeBSD ports や packages によって 入手可能であるとします。 アプリケーションを追加するために pkg_add コマンドまたは ports システムを用いると、 インストールされていないライブラリが検出され、 先に依存するライブラリが自動的にインストールされます。

2 つの技術が非常に類似していて、 なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。 packages と ports にはそれぞれ独自の特徴があり、 どちらを使うかはあなたの好みによります。

package の利点

  • 一般的に、あるアプリケーションの package の tarball は、 ソースコードを含む tarball より小さなサイズとなります。

  • packages はコンパイル作業を必要としません。 このことは、Mozilla, KDE, または GNOME といった大きなアプリケーションで重要となります。 特にシステムが遅い場合にはなおさら重要です。

  • packages を用いれば、 ソフトウェアのコンパイルに関する知識は必要ありません。

ports の利点

  • packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からインストールすることで、 たとえば Pentium 4 や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。

  • アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。

    設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。

  • ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。

  • バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。

  • ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。

  • ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。

ports の更新状況を把握するために、 FreeBSD ports メーリングリストFreeBSD ports bugs メーリングリスト を購読するとよいでしょう。

Warningアプリケーションをインストールする前に、 そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。

また、 インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる ports-mgmt/portaudit をインストールしてもよいでしょう。 このコマンドは、ビルド前の port についても調査します。 インストールされている packages を確認する場合には、 portaudit -F -a コマンドを使ってください。

この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアの インストール方法や管理方法について説明します。


4.3. アプリケーションの探し方

どんなアプリケーションをインストールするにしても、 まずあなたが何を望んで、 またその名前がなんというのかを理解している必要があります。

FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 幸運にも、多くの方法で望むものを探すことができます。

  • FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で http://www.FreeBSD.org/ports/ において公開しています。 ports はカテゴリに分類されています。 アプリケーションは、(名前を知っているならば) 名前で検索でき、 あるカテゴリで利用可能な アプリケーションをすべて表示させることもできます。

  • Dan Langille は http://www.FreshPorts.org/ で FreshPorts を公開しています。 FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。 一つまたはそれ以上の ports を “監視” することができ、 変更があるとメールで更新情報を送ってくれます。

  • ご希望のアプリケーションの名前がわからなければ、 FreshMeat (http://www.freshmeat.net/) のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。

  • port の正確な名前を知っていて、 どのカテゴリに分類されているのかを知りたいだけなら、 whereis(1) コマンドで調べることができます。 単に whereis file と入力してください。file の部分にはインストールしたいプログラム名を入れます。 システム上でプログラムが見つかったら、 そのプログラムのパスが次のように表示されます。

    # whereis lsof
    lsof: /usr/ports/sysutils/lsof
    

    この表示は、lsof (システムユーティリティの一つ) が /usr/ports/sysutils/lsof というディレクトリにあることを示しています。

  • さらに、以下の例のように echo(1) を使って port が存在するかどうかを簡単に調べることもできます。

    # echo /usr/ports/*/*lsof*
    /usr/ports/sysutils/lsof
    

    この方法では /usr/ports/distfiles 以下にダウンロードされたファイル名にもマッチします。

  • また、Ports Collection に備わっている検索機能を利用して port を検索する方法もあります。 この検索機能を利用するには、カレントディレクトリが /usr/ports である必要があります。 そのディレクトリに移動したら、 make search name=プログラム名 と入力してください。 プログラム名の部分には検索したいプログラム名を入れます。 たとえば、lsof を探したい場合には次のようにします。

    # cd /usr/ports
    # make search name=lsof
    Port:   lsof-4.56.4
    Path:   /usr/ports/sysutils/lsof
    Info:   Lists information about open files (similar to fstat(1))
    Maint:  obrien@FreeBSD.org
    Index:  sysutils
    B-deps: 
    R-deps:
    

    出力のうち特に注意して見なければならないのは “Path:” という行です。 この行は port がどこにあるかを示しています。 出力される他の情報は port をインストールする際には必要となるものではありませんので、 ここでは触れないでおきます。

    もっと詳しく検索するには、 make search key=string と入力してください。 string の部分には検索したいテキストを入れます。 port 名、コメント、説明文および依存情報が検索されます。 探しているプログラムの名前を知らない場合でも、 ある目的に関連した ports の検索に利用できます。

    どちらの場合でも、 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 “LSOF” を検索した結果は、 “lsof” と同じ検索結果になります。


4.4. packages システムの利用

寄稿: Chern Lee.

FreeBSD には packages を管理するツールが複数あります。

  • sysinstall からシステムに packages をインストールしたり削除できます。 また、インストールされた packages や利用可能な packages の一覧を表示できます。 詳細については、インストール後の作業 を参照してください。

  • この章では、コマンドラインの package 管理ツールについて説明します。


4.4.1. package のインストール

pkg_add(1) は、ローカルファイルやネットワーク上のサーバから FreeBSD ソフトウェア package を インストールするためのユーティリティです。

Example 4-1. 手動で package をダウンロードしてローカルからインストールする

# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

(FreeBSD CD-ROM セットのような) ローカルな packages がない場合は、 pkg_add(1)-r オプションをつける方が楽でしょう。 このユーティリティは、このオプションを指定して実行すると 自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP サイトからダウンロードしてインストールします。

# pkg_add -r lsof

上の例では適当な package がダウンロードされた後、インストールされます。 ユーザはこのほかに何もする必要はありません。 メインの配布サイトではなく FreeBSD Package ミラーサイトの package を使うには、 PACKAGESITE 環境変数に利用したいサイトを設定してください。 pkg_add(1) は、FTP_PASSIVE_MODE, FTP_PROXY, FTP_PASSWORD といった環境変数を参照する fetch(3) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 環境変数の一覧については fetch(3) をご覧ください。 また、上の例で lsof-4.56.4 の代わりに lsof を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 package のバージョン番号を取り除かなければなりません。 pkg_add(1) は自動的に最新版のアプリケーションを取得します。

Note: FreeBSD-CURRENT または、FreeBSD-STABLE を使用している場合、 pkg_add(1) は最新版のアプリケーションをダウンロードします。 -RELEASE を使用している場合には、 そのバージョンのリリース時にビルドされた package がダウンロードされます。 この設定は PACKAGESITE を上書きすることで変更できます。 たとえば、FreeBSD 5.4-RELEASE を使用している場合には、 pkg_add(1) を実行するとデフォルトで ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/ から packages をダウンロードします。 もし、pkg_add(1) を使って FreeBSD 5-STABLE の packages をダウンロードしたければ、 PACKAGESITE 環境変数を ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/ に設定してください。

package は .tgz.tbz という拡張子を持つファイルとして配布されており、 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ や FreeBSD CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 /packages ディレクトリに packages が あります。packages のレイアウトは、 /usr/ports ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 All ディレクトリにはすべての package があります。

package システムのディレクトリ構造は ports のレイアウトと同一です。 両者が組み合わさって package/port システムが構成されます。


4.4.2. packages の管理

pkg_info(1) は、インストールされている packages の一覧と説明を表示するユーティリティです。

# pkg_info
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...

pkg_version(1) は、インストールされている packages のバージョンを要約して表示するユーティリティです。 package のバージョンを、現在の ports ツリーのバージョンと 比較します。

# pkg_version
cvsup                       =
docbook                     =
...

2 列目の記号は、インストールされているバージョンの ローカル ports ツリーのバージョンに対する 新旧を表します。

記号 意味
= インストールされている package のバージョンは、 ローカル ports ツリーのものと一致しています。
< インストールされているバージョンは、 ローカル ports ツリーのものより古いです。
> インストールされているバージョンは、 ローカル ports ツリーのものより新しいです (おそらくローカル ports ツリーは古くなっています)。
? インストールされた package を ports インデックスの中に見つけることができません (インストールされた port が Ports Collection から削除されたり、 名前が変更された場合などに起こります)。
* 複数のバージョンの package が存在します。
! インストールされた package はインデックス中に存在しますが、何らかの理由で、 インストールされた package のバージョン番号をインデックス中のエントリと比較できません。

4.4.3. package の削除

インストールされている package を削除するには、 pkg_delete(1) ユーティリティを使ってください。

# pkg_delete xchat-1.7.1

pkg_delete(1) は package 名とバージョン番号の両方を必要とします。 すなわち、先ほどの例において xchat-1.7.1xchat とした場合には動作しません。 インストールされている package のバージョンは、 pkg_version(1) を使うと簡単に調べることができます。 バージョン番号のかわりにワイルドカードも使えます。

# pkg_delete xchat\*

上の例では、名前が xchat で始まるすべての packages が削除されます。


4.4.4. その他

package に関するすべての情報は /var/db/pkg ディレクトリ以下に置かれています。 このディレクトリの下にあるファイルの中に、 インストールされたファイルの一覧やインストールされた各 package についての説明が含まれています。


4.5. Ports Collection の利用

このセクションでは、Ports Collection を利用してシステムにプログラムをインストールしたり、 システムから削除したりする基本的な手順について説明します。 利用可能な make のターゲットや環境変数についての詳細は ports(7) をご覧ください。


4.5.1. Ports Collection の準備

ports をインストールするためには、まず Ports Collection を用意しなくてはなりません。 Ports Collection とは、/usr/ports 以下に置かれる Makefile, 修正パッチ、 説明文などの一連のファイルのことです。

FreeBSD のシステムインストール時に、 sysinstall が Ports Collection をインストールするかどうかを尋ねてきたはずです。 No を選んだ場合、以下の作業をおこない Ports Collection をインストールしてください。

CVSup を利用する方法

ここでは、CVSup プロトコルを利用して Ports Collection をインストールする方法や最新の状態に保つ方法を簡単に説明します。 CVSup についてもっと知りたいのであれば、 CVSup を使う をご覧ください。

Note: csup は、 FreeBSD システムにおける CVSup プロトコルの実装です。 FreeBSD 6.2 から導入されました。 古い FreeBSD release のユーザは、 net/csup port/package からインストールしてください。

はじめて csup を使う際には、 /usr/ports が空であることを確認してください! 他の方法により Ports Collection がすでに用意されていると、 csup は削除されたパッチを Ports Collection から取り除かないでしょう。

  1. csup を実行してください。

    # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
    

    cvsup.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。

    Note: 自分用の ports-supfile を使って、 コマンドラインから CVSup サーバを指定することを省略したいと思う方もいるでしょう。

    1. そのような場合には、 まず root ユーザ権限で、 /usr/share/examples/cvsup/ports-supfile/root や、あなたのホームディレクトリなどへコピーしてください。

    2. 次に ports-supfile を編集します。

    3. CHANGE_THIS.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。

    4. その後、以下のように csup を実行してください。

      # csup -L 2 /root/ports-supfile
      
  2. csup(1) コマンドを時間をおいて実行すると、 最新の変更点がダウンロードされて、あなたの手元の Ports Collection に加えられます。 Ports Collection 全体が再度ダウンロードされることはありません。

Portsnap を利用する方法

Portsnap は Ports Collection を配布するための新しいシステムです。 Portsnap の機能についての詳細は Portsnap を使う を参照してください。

  1. 圧縮された Ports Collection のスナップショットを /var/db/portsnap にダウンロードしてください。 この作業が終われば、ネットワークへの接続を終了してもかまいません。

    # portsnap fetch
    
  2. 初めて Portsnap を使う時は、 スナップショットをまず /usr/ports に展開してください。

    # portsnap extract
    

    すでに /usr/ports が用意されていて、 アップデートだけを行ないたいのであれば、 代わりに以下のコマンドを実行してください。

    # portsnap update
    

sysinstall を利用する方法

ここでは、sysinstall を利用してインストールメディアから Ports Collection をインストールする方法について説明します。 この方法では、リリース時の古い Ports Collection がインストールされることに注意してください。 もし、インターネットへの接続が可能であれば、 これまでに説明した方法を使ってください。

  1. root ユーザ権限で、以下のように sysinstall (5.2 より前の FreeBSD では /stand/sysinstall) を実行してください。

    # sysinstall
    
  2. スクロールダウンして Configure を選び、 Enter を押してください。

  3. スクロールダウンして Distributions を選び、 Enter を押してください。

  4. スクロールダウンして ports を選び、 Space キーを押してください。

  5. Exit までスクロールアップして、 Enter を押してください。

  6. CDROM や FTP といったインストールメディアを選択してください。

  7. Exit までスクロールアップして、Enter を押してください。

  8. X を押して、 sysinstall を終了してください。


4.5.2. ports のインストール

一番最初に知らなければならないのは、 Ports Collection は “スケルトン” と呼ばれるもので構成されているという事実です。 port スケルトンは簡単に言うと、アプリケーションを FreeBSD 上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。 それぞれの port スケルトンには、次のファイルが含まれています。

  • MakefileMakefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、 さまざまな命令文が含まれています。

  • distinfo ファイル。 このファイルには、その port を構築するためにダウンロードする必要があるファイルのファイル名と、 それらのファイルがダウンロードによって壊れていないかを (md5(1)sha256(1) を使って) 確認するためのチェックサム情報が含まれています。

  • files ディレクトリ。 このディレクトリには FreeBSD システム上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 修正パッチ (patch) とは基本的に、 個々のファイルに対する変更点を表した小さなファイル群のことです。 ファイルはプレインテキスト形式で、 “10 行目を削除” や “26 行目を ... に変更” などと書かれています。 修正パッチは、“diff (差分)” とも呼ばれます。 これは、修正パッチが diff(1) プログラムで作成されるからです。

    このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。

  • pkg-descr ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。

  • pkg-plist ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。

これらの他に pkg-message といったファイルを含む ports もあります。 ports システムは、 このようなファイルを用いて特殊な状況にも対応しています。 これらのファイルについての詳細および ports の一般的な説明については、port 作成者のためのハンドブック をご覧下さい。

port はソースコードからアプリケーションを構築する方法を 提供しますが、実際のソースコードは含んでいません。 ソースコードは CD-ROM やインターネットから入手できます。 ソースコードはソフトウェア作者のお気に入りの形式で配布されます。 たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、 他のツールで圧縮されていたり、圧縮されずに配布されることもあります。 どのような形式で配布されているかに関わらず、 これらのプログラムのソースコードは “distfile” と呼ばれています。 以下では FreeBSD port をインストールする 2 つの方法について説明します。

Note: ports をインストールするには、 root としてログインする必要があります。

Warningport をインストールする前に、 Ports Collection が最新であることを確認してください。 また、そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。

アプリケーションをインストールする前に、 portaudit を使って セキュリティに関する脆弱性を自動的に調べることができます。 このツールは Ports Collection (ports-mgmt/portaudit) に用意されています。 新しく port をインストールする前に、 portaudit -F コマンドを実行すると、 最新の脆弱性に関するデータベースがダウンロードされます。 セキュリティの検査およびデータベースの更新は、 日々のセキュリティチェックで行なわれます。 詳しくは、portaudit(1) および periodic(8) のマニュアルページを参照してください。

Ports Collection は、ネットワークに接続できることを想定しています。 もし接続できなければ、distfile のコピーを /usr/ports/distfiles に手動で置いてください。

まず、インストールしたい port のディレクトリに移動してください。

# cd /usr/ports/sysutils/lsof

lsof ディレクトリに移動すると、 port スケルトンがあるのが確認できると思います。 次に行なうのは、port のコンパイルまたは “ビルド (build)” です。 これは、プロンプトから単に make と入力するだけで行なえます。 そうすると、次のような出力が現われるはずです。

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
#

コンパイルが終了してプロンプトに戻ることを確認してください。 次に port のインストールを行ないます。 port をインストールするのに必要なのは、 make コマンドに一つの単語、 install を指定することだけです。

# make install
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#

プロンプトに戻ったら、 インストールしたプログラムは実行できるようになっています。 lsof は高い権限で動作するプログラムなので、 セキュリティに関する警告が表示されます。 ports のコンパイルや インストール中に表示されるこれらの警告に注意してください。

コンパイル時に作成される作業用ディレクトリを削除すると良いでしょう。 このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。 このディレクトリを残しておくと、ディスク容量を消費するだけでなく、 port を新しいバージョンへアップデートする際に問題を引き起こす可能性があります。

# make clean
===>  Cleaning for lsof-4.57
#

Note: makemake install および make clean と三つに分けられた手順の代わりに、 最初から make install clean と実行することで、 余分な手順を二つ省くことができます。

Note: シェルによってはコマンドの実行ファイルを探す時間を短縮するために、 環境変数 PATH に登録されている ディレクトリのコマンド一覧をキャッシュするものがあります。 このようなシェルを使っているのであれば、 port をインストールしたあとで、 新しくインストールされたコマンドを用いる前に、 rehash コマンドを実行する必要があります。 このコマンドは tcsh などのシェルで動作します。 sh のようなシェルを使っているのであれば hash -r を実行してください。 詳細については、 あなたの使っているシェルのドキュメントをご覧ください。

FreeBSD Mall の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM 製品の中には distfiles を収録しているものがあります。 これらを Ports Collection で使うことができます。 DVD-ROM を /cdrom にマウントしてください。 ほかのマウントポイントを使用したければ、 CD_MOUNTPTS 変数を設定してください。 ディスク上に必要な distfiles が存在すると、 自動的に利用されます。

Note: port には CD-ROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CD-ROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります。

ports は、FTP_PASSIVE_MODE, FTP_PROXY, FTP_PASSWORD といった環境変数を参照する fetch(1) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することなります。 環境変数の一覧については fetch(3) をご覧ください。

ネットワークに常時接続できないユーザのために make fetch コマンドが用意されています。 (ネットワークに接続している時に) このコマンドを ports のトップディレクトリ (/usr/ports) で実行してください。 必要なファイルがダウンロードされます。 このコマンドは /usr/ports/net といった、より下の階層のカテゴリにおいても使うことができます。 ある port がライブラリやその他の ports に依存している場合には、 それらの distfiles はダウンロードされないことに注意してください。 port が依存しているものもダウンロードしたければ fetch の代わりに fetch-recursive を使って下さい。

Note: 前述した make fetch と同じように、トップディレクトリで make を実行するとすべての port がビルドされます。 しかしながら ports の中には同時に存在できないものがあったり、 異なる ports の別のファイルが同じ名前で インストールされる場合があることに注意してください。

めったにないことかもしれませんが、 MASTER_SITES (ファイルをダウンロードしてくる場所) に書かれているサイト以外から tarball を持ってくることが必要になる場合があります。 そのような場合には以下のように MASTER_SITES を変更してください。

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

上の例では MASTER_SITESftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ に変更しています。

Note: ports の中にはビルドオプションを指定できる (または要求してくる) ものがあります。 このオプションを指定することで、 アプリケーションの機能の一部を有効もしくは無効にできます。 また、セキュリティオプションを設定したり、 その他のカスタマイズを行うことができます。 このようなアプリケーションには www/mozilla, security/gpgmemail/sylpheed-claws などがあります。 利用可能なオプションがある場合にはメッセージが表示されます。


4.5.2.1. ports ディレクトリの変更

作業ディレクトリやターゲットディレクトリを デフォルトのものから変更したほうが有用な場合 (もしくは変更しなければならない場合) があります。 WRKDIRPREFIX 変数と PREFIX 変数を変更することで、 違うディレクトリを使用することができます。 たとえば、

# make WRKDIRPREFIX=/usr/home/example/ports install

とすると、ports は /usr/home/example/ports でコンパイルされ、すべて /usr/local 以下にインストールされます。

# make PREFIX=/usr/home/example/local install

この場合、コンパイルは /usr/ports でおこない、 /usr/home/example/local にインストールします。

もちろん、

# make WRKDIRPREFIX=../ports PREFIX=../local install

とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが、 考え方は理解していただけたと思います)。

あるいは、これらを環境変数に設定する方法もあります。 どのようにすれば良いかについては、 あなたの使っているシェルのマニュアルページを参照してください。


4.5.2.2. imake の使用

(X Window System に含まれる) imake を使用する ports の場合は PREFIX が機能せず、 /usr/X11R6 にインストールしようとします。 また、Perl 関連の ports も同様に PREFIX を無視して Perl ツリーにインストールします。 これらの ports で PREFIX がきちんと参照されるように変更するのは、ほとんど不可能です。


4.5.2.3. ports の再構築

ports をコンパイルする際、ビルドオプションを設定するために ncurses ベースのメニューが表示されることがあります。 port の構築後、再びこのメニューを表示させてオプションの追加や削除、設定の変更を行いたいと思うことがあるでしょう。 このための方法はたくさんあります。 一つ目の方法は port のディレクトリに移動し、 make config と入力する方法です。 現在の設定を反映させたメニューが再び表示されます。 別の方法は make showconfig を使う方法です。 port の設定可能なオプションがすべて表示されます。 他の方法は make rmconfig の実行です。 このコマンドを実行すると選択されているすべてのオプションが削除され、 設定をもう一度やり直すことができます。 これらの方法や他の方法についての詳細は、 ports(7) マニュアルで説明されています。


4.5.3. インストールした ports の削除

ports のインストール方法について知ればおそらく、 インストールした後になって間違っていたことに気付いた時などに備えて、 それらを削除するにはどうすれば良いのか疑問に感じることでしょう。 さて、前の例 (例のまま何も変更していない人は lsof) を削除してみましょう。 packages を削除する時とまったく同じく (packages の章 で説明したように) pkg_delete(1) コマンドで ports を削除できます。

# pkg_delete lsof-4.57

4.5.4. ports のアップグレード

まず最初に pkg_version(1) コマンドを使って、 古くなってしまった ports の中で新しいバージョンにアップデート可能なものを Ports Collection からリストアップしてください。

# pkg_version -v

4.5.4.1. /usr/ports/UPDATING

Ports Collection を更新したら、port をアップグレードする前に /usr/ports/UPDATING ファイルに目を通してください。 このファイルには port をアップグレードする際にユーザが遭遇するであろう問題や、 追加で必要な作業などが記述されています。 例えば、ファイル形式の変更や設定ファイルの場所の変更、 前のバージョンと互換性がなくなったことなどが書かれています。

もし、この節に書いてあることと UPDATING に書かれていることが矛盾している場合には、 UPDATING を優先してください。


4.5.4.2. portupgrade を用いた ports のアップグレード

portupgrade は、 インストールした ports のアップグレードを簡単に行なうためのユーティリティです。 ports-mgmt/portupgrade port から利用できます。 他の port と同じように make install clean コマンドでインストールしてください。

# cd /usr/ports/ports-mgmt/portupgrade
# make install clean

pkgdb -F コマンドを使って、 インストールされている ports を調べてください。 矛盾が検出された場合には修復してください。 アプリケーションをアップデートする前には、 この作業を定期的に行なうとよいでしょう。

portupgrade -a を実行すると、 portupgrade はシステムにインストールされている port の中で古くなったものをすべてアップデートします。 もし、すべての ports に対して個別にアップグレードするかどうかを確認したいのであれば、 -i オプションを使ってください。

# portupgrade -ai

ports で利用可能なすべてのアプリケーションではなく、 ある特定のアプリケーションだけを更新したいのであれば、 portupgrade pkgname を実行してください。 アップグレードするアプリケーションが依存しているすべての ports をまず先に更新したい場合には、 -R オプションを使ってください。

# portupgrade -R firefox

ports ではなく packages を用いてインストールを行ないたい場合には、 -P オプションを使ってください。 このオプションを使うと、portupgradePKG_PATH に登録されているローカルディレクトリを検索します。 ローカルに packages が見つからなければ、 リモートサイトからダウンロードを試みます。 packages をローカルに見つけることができず、 リモートサイトからもダウンロードできない場合には、 portupgrade は ports からインストールを行ないます。 ports を使用したくなければ、-PP オプションを指定してください。

# portupgrade -PP gnome2

また、ビルドやインストールを行なわず、 distfiles (-P が指定されている場合は packages) だけをダウンロードしたければ、 -F オプションを指定してください。 詳細は portupgrade(1) を参照してください。


4.5.4.3. Portmanager を用いた ports のアップグレード

インストールした ports のアップグレードを簡単に行なうためのもうひとつのユーティリティが Portmanager です。 ports-mgmt/portmanager port から利用できます。

# cd /usr/ports/ports-mgmt/portmanager
# make install clean

インストールされているすべての ports を次のような簡単なコマンドでアップグレードできます。

# portmanager -u

Portmanager の作業を確認しながら行いたい場合には、 -ui オプションを使ってください。 Portmanager を使って、 システムに新しい ports をインストールすることもできます。 通常の make install clean コマンドと異なり、 選択した port をビルドしインストールする前に、 依存している port をすべてアップグレードします。

# portmanager x11/gnome2

選択した port の依存関係について問題が発生した場合には、 Portmanager を使って修復することができます。 修正が終ったら、問題を含んでいた port は再構築されます。

# portmanager graphics/gimp -f

詳細については portmanager(1) を参照してください。


4.5.4.4. Portmaster を用いた ports のアップグレード

インストールした ports のアップグレードを行うためのもう一つのユーティリティが Portmaster です。 Portmaster は、 どの ports をアップグレードすべきかの判断を、 (他の ports に依存せずに) “base” システムのツールと /var/db/pkg/ の情報から行うよう設計されています。 ports-mgmt/portmaster から利用できます。

# cd /usr/ports/ports-mgmt/portmaster
# make install clean

Portmaster は、ports を 4 つのカテゴリに分類します。

  • Root ports (他の port に依存しません。他の port からも依存されません。)

  • Trunk ports (他の port に依存しませんが、他の port から依存されます。)

  • Branch ports (他の port に依存し、他の port からも依存されます。)

  • Leaf ports (他の port に依存しますが、他の port からは依存されません。)

-L オプションを使うと、 インストールした ports やアップデート可能な port の一覧が表示されます。

# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
        ===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
        ===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
        ===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports

===>>> 137 total installed ports
        ===>>> 83 have new versions available

以下のコマンドを使って、インストールされているすべての ports を簡単にアップデートできます。

# portmaster -a

Note: Portmaster のデフォルトの設定では、 インストールされている port を削除する前にバックアップ用の package が作成されます。 このバックアップは、新しいバージョンのインストールに成功すると削除されます。 -b オプションを使うと、 Portmaster はバックアップを自動的に削除しません。 -i オプションを追加すると、 Portmaster をインタラクティブモードで使用できます。 このモードでは、各 port をアップグレードするかどうかの選択を対話的に行うことがでます。

アップグレードの過程でエラーに遭遇した場合には、 -f オプションを使ってすべての ports のアップグレードや再構築をできます。

# portmaster -af

Portmaster を使ってシステムに新しい ports をインストールしたり、新しい port のコンパイルやインストール前に依存するすべての port をアップグレードできます。

# portmaster shells/bash

詳細については portmaster(8) を参照してください。


4.5.5. ports とディスク容量

Ports Collection を使い続けていると、 そのうちディスクを食いつぶしてしまうでしょう。 ports からソフトウェアをビルドしてインストールした後には、 常に作業用の work ディレクトリを make clean コマンドで削除するようにしましょう。 以下のコマンドで Ports Collection を掃除することができます。

# portsclean -C

distfiles ディレクトリには、たくさんのソースファイルがたまっていきます。 手動でそれらのファイルを削除してもよいのですが、 どの ports からも使われていない distfiles を次のコマンドで削除できます。

# portsclean -D

また、システムにインストールされている port から使われていない distfiles をすべて削除するには、以下のコマンドを使ってください。

# portsclean -DD

Note: portsclean ユーティリティは portupgrade ツール群の一部です。

インストールした ports のうちで、 必要なくなったものは削除してください。 ports-mgmt/pkg_cutleaves port は、 この作業を自動化するツールです。


4.6. インストール後の作業

新しいアプリケーションのインストールが終わったら、 次に付属のドキュメントを読みたいと思うでしょう。 また、必要な設定ファイルを編集したり、 (デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。

port のインストール後に追加で行わなければならない作業の詳細は、 アプリケーションごとに異なります。 しかしながら、新しいアプリケーションをインストールしたばかりで、 “次は何 ?” と思っているのであれば、 以下の tips は役に立つでしょう。

  • どのようなファイルがどこにインストールされているのかを知りたければ、 pkg_info(1) を使ってください。 たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、 以下を実行してください。

    # pkg_info -L foopackage-1.0.0 | less
    

    上のコマンドを実行すると package としてインストールされているすべてのファイルが表示されます。 特に、man/, etc/, doc/ ディレクトリのファイルに注目してください。 それぞれ、マニュアルページ、 設定ファイル、より包括的なドキュメントが設置されています。

    もし、アプリケーションのバージョンがわからなければ、 次のコマンドを実行してください。

    # pkg_info | grep -i foopackage
    

    インストールされた packages の中から、名前に foopackage を含む package が表示されます。 必要に応じてコマンドラインの foopackage を置き換えてください。

  • アプリケーションのマニュアルページがインストールされているのであれば、 man(1) を使ってマニュアルを読んでください。 同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。

  • アプリケーションのウェブサイトがあれば、 そのサイトに更なるドキュメントや FAQ がないかを調べてください。 ウェブサイトのアドレスがわからなければ、 次のコマンドで表示されるかもしれません。

    # pkg_info foopackage-1.0.0
    

    ウェブサイトが存在すると、 URL が WWW: を含む行に表示されます。

  • (インターネットサーバのように) システム起動時に立ち上げる必要のある port は、 サンプルスクリプトを通常 /usr/local/etc/rc.d にインストールします。 このスクリプトを調べ、 必要があれば編集したりスクリプトの名前を変更してください。 詳細は サービスの起動 をご覧ください。


4.7. うまく動作しない ports に遭遇した場合には

port がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。

  1. その port に対する修正案が提出されていないかどうかを 障害報告 (Problem Report) データベース で調べてください。 もし提案されていれば、 その修正を使うことができるかもしれません。

  2. port の保守担当者に対応してもらいましょう。 make maintainer と入力するか、 Makefile を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (Makefile$FreeBSD: 行)、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。

    Note: 特定の保守担当者が存在せず、かわりに メーリングリスト が保守している ports があります。 そのような場合には、メールアドレスは のようになります。 質問する際には、このことに気をつけてください。

    特に が保守している ports には、保守担当者が本当にいません。 そのメーリングリストを購読する人々からなるコミュニティが、 修正や対応をおこなっています。 もっとボランティアが必要です!

    保守担当者から返信がなければ、send-pr(1) を使ってバグレポートを提出しても構いません ( FreeBSD 障害報告の書き方 をご覧ください)。

  3. 自分で直しましょう! “Ports” システムに関する詳細な情報は port 作成者のためのハンドブック にあります。 このセクションを読むと、壊れてしまった port を直したり、 自分で作った port を提出したりできるようになります!

  4. 近くの FTP サイトから package を入手しましょう。 “マスタ” package コレクションは、 ftp.FreeBSD.orgpackage のディレクトリ にありますが、 まずはあなたの地域の ミラーサイト最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、pkg_add(1) を使います。


Chapter 5. X Window System

5.1. この章では

FreeBSD では、ユーザに強力なグラフィカルインタフェイスを提供 するために XFree86 を採用しています。 XFree86 は X Window System のオープン ソースな実装です。この章では FreeBSD における XFree86 のインストールと設定について 解説します。XFree86 についての情報や、 対応しているビデオハードウェアについては XFree86 の Web サイトをご覧ください。

この章を読めば以下のことがわかります。

  • X Window System の様々なコンポーネントと、それらが互いにどのように連携しているか。

  • XFree86 のインストールと設定について

  • 様々なウィンドウマネージャのインストール方法

  • XFree86 での TrueType フォントの使い方

  • GUI ログイン (XDM) のセットアップ方法

この章を読み始める前に以下のことに注意してください。

  • サードパーティ製ソフトウェアのインストール方法について知っていること (Chapter 4)。


5.2. X を理解する

初めて X を使う場合、Microsoft Windows や Mac OS といった他の GUI 環境に慣れている人は多少ショックを受けるでしょう。

様々な X のコンポーネントについての詳細の全てや、それらがどのようにやり取りするかについては理解する必要はありませんが、基本的なことをいくつか知っていると X を使う際に強力な武器になるでしょう。


5.2.1. なぜ X?

X は、UNIX 用に書かれた最初のウィンドウシステムではありませんが、最もポピュラーなものです。X のオリジナルの開発チームは X を書く前に別のウィンドウシステムを開発していました。そのシステムの名前は “W” (“Window”の W) です。X は単にローマ字でその次の文字だというだけなのです。

X は “X”、“X Window System”、“X11”、もしくはその他の用語で呼ぶことができます。X11 を “X Windows” と呼ぶと気を悪くする人もいます。詳しくは X(1) をご覧ください。


5.2.2. X のクライアント/サーバモデル

X は最初からネットワークを意識してデザインされており、“クライアント - サーバ”モデルを採用しています。 X では、“X サーバ”はキーボードやモニター、マウスが接続されたコンピュータ上で動きます。このサーバはディスプレイの表示を管理したり、キーボード、マウスなどからの入力を処理したりします。各 X アプリケーション (XTermNetscape など) は “クライアント”になります。クライアントは“この座標にウィンドウを描いてください”といったメッセージをサーバへ送り、サーバは“ユーザが OK ボタンを押しました”といったようなメッセージを送り返します。

家庭や小さなオフィスのような環境で、1 台しかコンピューターがないという場合には、X サーバと X クライアントは同じコンピューター上で動くことになるでしょう。しかし、X サーバを非力なデスクトップコンピューターで動かし、X アプリケーション (クライアント) は例えばオフィス全体を捌くような高機能で高価なマシンで動かすことも可能なのです。この場合、X のクライアントとサーバの通信はネットワーク越しに行なわれます。

これは、ある人々を混乱させることがあります。X での用語は彼らが想定するものとは正反対だからです。彼らは“X サーバ”は地下にある大きなパワフルなマシンであり、“X クライアント”が自分たちのデスク上にあると想像するのです。

Xサーバとはモニターとキーボードがついているマシンのことであり、Xクライアントとはウィンドウを表示するプログラムだということを思い出してください。

X のプロトコルには、クライアントとサーバのマシンが同じ OS で動いていなければならないといったことを強制するものはなにもありませんし、同じ機種で動いている必要もありません。X サーバを Microsoft Windows や Apple の Mac OS で動かすことも可能ですし、そのようなソフトウェアもフリーのものから商用のまでいろいろとあります。

FreeBSD に付いてくる X サーバは XFree86 と呼ばれるもので、FreeBSD のライセンスに似たライセンスに従ってフリーで配布されています。FreeBSD 用の商用 X サーバも入手可能です。


5.2.3. X ウィンドウマネージャ

X のデザイン哲学は UNIX のそれに非常によく似ており、“ツールであってポリシーではない”のです。 つまり、X はあるタスクがどのように達成されるべきかを示すものではありません。その代わり、ユーザにはツールが与えられ、それらをどうするかはユーザに委ねられているのです。

この哲学は、X ではスクリーン上でウィンドウがどのように見えるべきか、マウスでそれらをどうやって動かすか、ウィンドウ間を移動するのにどういうキーストロークを使うべきか (例えば Microsoft Windows における Alt+Tab)、各ウィンドウのタイトルバーはどのように見えるべきか、それらはクローズボタンを持つべきかどうか、といったことを示すものではないというところまで拡大して解釈できます。

その代わりに、X ではそういったことを“ウィンドウマネージャ”と呼ばれるアプリケーションに任せるのです。X 用のウィンドウマネージャは以下のようにたくさんあります。AfterStepBlackboxctwmEnlightenmentfvwmSawfishtwmWindow Maker、などなど。これらのウィンドウマネージャはそれぞれ異なるルックアンドフィールを持っていますし、いくつかは“バーチャルデスクトップ”をサポートしていますし、いくつかはデスクトップのマネージメントにキーストロークをカスタマイズできたり、“スタート”ボタンやそれに類するものを持っているものもありますし、“テーマのサポート”をしており新しいテーマを適用することによってルックアンドフィールを完全に変えることができるものもあります。これらのウィンドウマネージャやさらに多くのものはportsコレクションの x11-wm というカテゴリーからインストールすることが可能です。

加えて、KDEGNOME といったデスクトップ環境はともにそれぞれのデスクトップに統合された独自のウィンドウマネージャを持っています。

それぞれのウィンドウマネージャはまた異なる設定機構を備えており、手で設定ファイルを編集しなければならないものや、設定作業のほとんどを GUI ツールですることができるものもあります。少なくとも 1 つ (sawfish) は Lisp 言語の変種で書かれた設定ファイルを持っています。

フォーカスポリシー: ウィンドウマネージャのもう一つの機能はマウスの“フォーカスポリシー”に関するものです。 全てのウィンドウシステムは、ウィンドウを選択しキーストロークを受け付けるようにするための方法が必要です。 そして、どのウィンドウがアクティブなのかを示す必要もあります。

よく知られているフォーカスポリシーは “click-to-focus” と呼ばれるもので、このモデルは Microsoft Windows で利用されており、あるウィンドウ内でマウスをクリックすればそのウィンドウがアクティブになる、というものです。

X は特定のフォーカスポリシーを採用していません。代わりにウィンドウマネージャがそれをコントロールします。それぞれのウィンドウマネージャが、それぞれのフォーカスポリシーをサポートしています。全てのものは click-to-focus をサポートしていますし、多くのものは他の方法もサポートしています。

最もポピュラーなフォーカスポリシーは次のものでしょう

focus-follows-mouse

マウスポインターの下にいるウィンドウがフォーカスされるというものです。ウィンドウは最前面にある必要はありません。フォーカスを変えるには他のウィンドウにマウスポインターを動かすだけです。クリックする必要はありません。

sloppy-focus

これは focus-follows-mouse を少し拡張したものです。focus-follows-mouse では、マウスがルートウィンドウ (背景) に移動した時には、フォーカスされているウィンドウがなくなり、キーストロークは単に破棄されます。sloppy-focus であればポインターが別のウィンドウに移った時のみフォーカスが変わり、現在のウィンドウから出ただけでは変わりません。

click-to-focus

アクティブなウィンドウはマウスクリックにより選択されます。 ウィンドウは“持ち上げられ”、他の全てのウィンドウの前にきます。 ポインターが別のウィンドウに動いた時でも、全てのキーストロークがこのウィンドウに届きます。

多くのウィンドウマネージャはこういったものに加え、他のポリシーもサポートしています。ウィンドウマネージャ自身のドキュメントもよく読んでください。


5.2.4. ウィジェット

X のツールを提供してもポリシーは提供しないというアプローチは、各アプリケーションでスクリーンに現われるウィジェットにも適用されます。

“ウィジェット”はクリック可能であったり、他の方法で操作可能な全てのユーザインタフェイス用アイテムを指す用語です。ボタンやチェックボックス、ラジオボタン、アイコン、リスト、などがそうです。Microsoft Windows はこれらを“コントロール”と呼んでいます。

Microsoft Windows や Apple の Mac OS はともに非常に厳密なポリシーをウィジェットに課しています。アプリケーション開発者は共通のルックアンドフィールに確実に従うことを想定されているわけです。X では、グラフィカルなスタイルやウィジェットのセットが特定のものに合わせたりすることに対してそれほど意識していませんでした。

すなわち、X アプリケーションに共通のルックアンドフィールを期待してはいけません。いくつかのポピュラーなウィジェットセットやその亜種があります。MIT のオリジナルの Athena ウィジェットや Motif (Microsoft Windows をモデルにした、斜めになったエッジやグレイの陰影のウィジェットセットを持っている)、OpenLook などです。

比較的新しい X アプリケーションのほとんどが、KDE で使われている Qt や GNOME プロジェクトで使われている GTK のようにモダンな見た目を持ったウィジェットセットを使っています。この点で言えば、UNIX のルックアンドフィールは収斂されてきており、初心者がより簡単に使えるようになってきています。


5.3. XFree86 のインストール

XFree86 をインストールする前にどのバージョンを動かすかを決めてください。 XFree86 3.xXFree86 におけるメンテナンスブランチです。 これは非常に安定しており、非常にたくさんの数のグラフィックカードをサポートしているのですが、もう新しい機能は追加されません。XFree86 4.X はシステムを完全に見直して設計したものであり、フォント自体のもっと良いサポートやアンチエイリアスなどといった多くの新しい機能も追加されています。残念ながら、この新しいアーキテクチャーではビデオドライバーの書き直しが必要なため、3.X でサポートされていたいくつかの古いカードはまだサポートされていません。 新規の開発と新しいグラフィックカードへの対応は全てこのブランチで行われているため、XFree86 4.X は現在 FreeBSD におけるデフォルトの X Window System になっています。

FreeBSD のセットアッププログラムを使えば、OS のインストール時に XFree86 4.X をインストールして設定することができます (Section 2.4.2に書かれています)。 XFree86 3.x をインストールして動かしたい場合は、まずベースとなる FreeBSD をインストールしてから XFree86 のインストールを行うことになります。 例えば、XFree86 3.X を ports コレクションからビルドしてインストールする場合には次のようにします。

# cd /usr/ports/x11/XFree86
# make all install clean

他に、XFree86 の Webサイトで直接提供されている FreeBSD 用のバイナリを利用して、いずれかのバージョンの XFree86 をインストールするという方法もあります。 XFree86 4.X については pkg_add(1) ツールを用いるバイナリパッケージも提供されています。

この章の残りでは、XFree86 をどのように設定すればいいか、また productive なデスクトップ環境をどのように設定するかについて解説します。


5.4. XFree86 の設定

寄稿: Christopher Shumway.

5.4.1. はじめに

XFree86 4.Xの設定を始める前に、 次の情報が必要となります。

  • モニターの仕様

  • ビデオアダプタのチップセット

  • ビデオアダプタのメモリー

モニターの仕様は、XFree86 がどの解像度とリフレッシュレートで動くかを決定するために用いられます。 こういった仕様は、通常はモニターに付いてくるドキュメントや製造元のWebサイトから取得することができます。必要なものは二つの数字の範囲、一つは水平走査周波数でもう一つは垂直同期周波数、です。

ビデオアダプタのチップセットは XFree86 がグラフィックハードウェアとやり取りするためにどのドライバーモジュールを使うかを定義します。ほとんどのチップセットが自動認識されますが、正常に認識されない時のために知っておくとよいでしょう。

ビデオメモリーは、グラフィックアダプタがどの解像度とどの色数で動くことができるかを決めます。 これは、ユーザが自分のシステムにおける制限を理解するために知っておくことが重要です。


5.4.2. XFree86 4.Xの設定

XFree86 4.X の設定は複数のステップの処理に分けられます。 まずは XFree86-configure オプションを付けて初期設定ファイルを作りましょう。スーパーユーザになって次のようにしてください。

# XFree86 -configure

これにより、現在のワーキングディレクトリに XF86Config.new という XFree86 の設定ファイルのスケルトンが生成されます。 XFree86 プログラムはシステム上のグラフィックハードウェアを検出し、 そのハードウェア用の適切なドライバーを読み込む設定ファイルを作ります。

次のステップは、作成した設定ファイルで XFree86 が動くことを確認することです。 そのためには以下のようにします。

# XFree86 -xf86config XF86Config.new

黒とグレーのグリッドと X のマウスポインターが現われればその設定は成功です。 テストから抜け出すためには単に次のキーを同時に押します。 Ctrl+Alt+Backspace

次は XF86Config.new を好みに合うように調整します。 emacs(1)ee(1) のようなテキストエディターでファイルを開いてください。 まずモニターの周波数を加えます。これらは水平と垂直の同期周波数と表現されるのが普通です。 これらの値は XF86Config.new の "Monitor" のセクションに次のように加えます。

   Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
    EndSection
     

HorizSyncVertRefresh というキーワードが設定ファイル中にない場合があります。その場合には、 Horizsync キーワードの後には水平走査周波数の、 VertRefresh キーワードの後には垂直同期周波数の正しい値を加えてください。 上の例では対象となるモニターの周波数が書かれています。

X はモニターが対応していれば DPMS (Energy Star) 機能を使うことができます。 'xset' プログラムでタイムアウトをコントロールしたり、強制的にスタンバイ、サスペンドや電源オフにすることができます。 モニターの DPMS 機能を有効にしたい場合は、"Monitor" のセクションに次の行を加えてください。

Option       "DPMS"

XF86Config.new はエディターで開いたままにしておき、 デフォルトの解像度と色数を好みで選びましょう。 Screen セクションに以下のように書きます。

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

DefaultDepth というキーワードはデフォルトで動く色数について記述するためのものです。 XFree86(1) のコマンドラインスイッチ -bpp が使用された場合はこちらが優先されます。 Modes というキーワードは与えられた色数におけるデフォルトの解像度を記述しておくためのものです。 上の例ではデフォルトの色数はピクセルあたり24ビットであり、この色数での解像度は1024ピクセル×768ピクセルです。

1024x768の解像度で動かすためには DefaultDepth というキーワードに 24 という値を与えて書き加えておき、 "Display" サブセクションに求める DepthModes のキーワードを書いておきます。 ターゲットのシステムのグラフィックハードウェアによって定義されているように、VESAスタンダードモードのみがサポートされていることに注意してください。

最後に、設定ファイルを保存し、上の例にあるようにテストしてみてください。全てうまくいったなら、XFree86(1) が見つけることができる共通の場所に設定ファイルを置きます。 これは、通常は /etc/X11/XF86Config/usr/X11R6/etc/X11/XF86Config です。

# cp XF86Config.new /etc/X11/XF86Config

設定ファイルを共通の場所に置いたら、設定は完了です。 startx(1)XFree86 4.X を起動するために x11/wrapper ポートをインストールします。 また、XFree86 4.Xxdm(1) で立ち上げることも可能です。


5.4.3. 高度な設定

5.4.3.1. Intel i810 グラフィックチップセットの設定

Intel i810 統合チップセットを設定するには、XFree86にカードを制御させるためにAGP プログラミングインタフェイスである agpgart が必要になります。 agpgart を利用するには、kldload(8) を使って agp.ko というカーネルローダブルモジュールをカーネルにロードしておく必要があります。 これは、/boot/loader.conf に次のように書いておけば loader(8) がブート時に自動的にやってくれます。

agp_load="YES"

次に、プログラミングインタフェイス用にデバイスノードを作る必要があります。 AGP のデバイスノードを作るには、/devMAKEDEV(8) を次のように起動します。

# cd /dev
# sh MAKEDEV agpgart

これで他のグラフィックカードと同様に設定を行うことができるようになります。

もし XFree86 4.1.0 (もしくはそれ以降) を使っており、 fbPictureInit といったようなシンボルが見つからないというメッセージが現われるなら、 XFree86 設定ファイルで Driver "i810" の後に次のような行を入れてみてください。

Option "NoDDC"

5.5. XFree86 でのフォントの使用

寄稿: Murray Stokely.

5.5.1. Type1 フォント

XFree86 に付いてくるデフォルトのフォントは通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです。 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし、 Netscape での小さなフォントは頭が悪そうに見えます。 しかし、世の中には質の高い Type1 (PostScript) フォントがいくつかあり、 XFree86 ではバージョン 3.X でも 4.X でもそれらを簡単に利用することができます。 例えば、URW フォントコレクション (x11-fonts/urwfonts) には高品質の Type1 フォント (Times Roman、Helvetica、Palatino など) が含まれています。 freefont コレクション (x11-fonts/freefont) にはもっとたくさんのフォントが含まれていますが、 それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり、 スクリーンフォントとしては十分ではありません。さらに、XFree86 は簡単に TrueType フォントを使うように設定することも可能です。 後に出てくる TrueType フォントのセクション を参照してください。

上記の Type1 フォントコレクションを ports から入れる場合には次のコマンドを実行してください。

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

freefont や他のコレクションでも同じようにします。 X サーバにこれらのフォントがあることを教えるには (XFree86 バージョン 3 の場合は /etc/、 バージョン 4 では /etc/X11/ にある) XF86Config の適切な場所に次のような行を加えます。

FontPath "/usr/X11R6/lib/X11/fonts/URW/"

別の方法としては、X のセッション中に次のようなコマンドラインを実行します。

% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash

これは動くのですが、X のセッションが終了すると消えてしまいます。 消えないようにするには X の起動時に読み込まれるファイル (通常の startx セッションの場合は ~/.xinitrc, XDM のようなグラフィカルなログインマネージャを通してログインする時は ~/.xsession) に加えておきます。 三番目の方法は新しい XftConfig ファイルを使うことです。 これに関しては アンチエイリアスのセクションを参照してください。


5.5.2. TrueType フォント

XFree86 4.X には TrueType フォントのレンダリング機能が組み込まれています。 この機能を実現するために二つの異なるモジュールがあります。 ここでは、"freetype" のほうがより他のフォントレンダリングバックエンドと似ているため、 このモジュールを使うことにします。 freetype モジュールを使うためには /etc/X11/XF86Config ファイルに以下の行を追加するだけです。

Load  "freetype"

XFree86 3.3.X の場合、 TrueType フォントサーバが別に必要となります。 Xfstt がよく使われるものです。 Xfstt をインストールするのは簡単で、 x11-servers/Xfstt ポートを利用してください。

さて、まずは TrueType フォント用のディレクトリ (例えば /usr/X11R6/lib/X11/fonts/TrueType) を作り、そこに TrueType フォントを全て放り込みましょう。 Macintosh の TrueType フォントは、そのままでは使うことができませんので注意してください。 XFree86 で使うには Unix/DOS/Windows 用のフォーマットでなければなりません。 ファイルを置いたら ttmkfdir を使って fonts.dir ファイルを作ってください。 このファイルにより、X は新しいファイルがイントールされたことを理解します。 ttmkfdir は FreeBSD Ports コレクション、 x11-fonts/ttmkfdir、からインストールできます。

# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir > fonts.dir

次に TrueType フォントのディレクトリをフォントパスに追加します。 上の Type1 フォントの場合と同じように、

% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash
とするか、もしくは XF86Config ファイルに FontPath 行を追加するのです。

これで終わりです。NetscapeGimpStarOffice といった全ての X アプリケーションから TrueType フォントを使うことができます。 (高解像度なディスプレイで見る Web ページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう。


5.5.3. フォントのアンチエイリアス

XFree86 では 4.0.2 以降でフォントのアンチエイリアスをサポートしています。 今のところ、ほとんど全てのソフトがこの新しい機能を使うメリットを亨受するようにはなっていません。 しかし、Qt (KDE デスクトップ用のツールキット) はサポートしていますので、 XFree86 4.0.2 以降と Qt 2.3 以降及び KDE を使う場合には全ての KDE/Qt アプリケーションでアンチエイリアスなフォントを使うことができます。

アンチエイリアスを使うように設定するには、 /usr/X11R6/lib/X11/XftConfig ファイルを作ります (既にある場合には編集してください)。 このファイルを使えばいくつかの先進的な機能を使うことができるのですが、 このセクションでは最も簡単なところだけを解説します。

まず、X サーバに対してアンチエイリアスをかけるべきフォントを指定します。 それぞれのフォントディレクトリに対して次のような行を加えます。

dir "/usr/X11R6/lib/X11/Type1"

アンチエイリアスをかけたい他のフォントのディレクトリ (URW や truetype など) についても同じようにします。 アンチエイリアスはスケーラブルなフォント (基本的には Type1 と TrueType) にのみ有効ですので、ビットマップフォントのディレクトリは加えないようにしてください。 ここに含めたディレクトリは XF86Config ではコメントアウトします。

アンチエイリアスをかけることによって境界が少しぼやけ、 そのためにとても小さなテキストはさらに読みやすくなり、 大きなフォントでは“ギザギザ”が消えるのです。 しかし、普通のテキストにかけた場合には目が疲れることになります。 9から13ポイントのサイズのフォントについて、アンチエイリアスをかけないようにするには次の行を加えます。

match
    any size > 8
    any size < 14
    edit
    antialias = false;

いくつかの等幅フォントは、 アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります。 特に KDE でその傾向があるようです。 解決策の一つとして、そういったフォントのスペーシングを100に設定する方法があります。 そうするためには次の行を加えてください。

match any family == "fixed"      edit family =+ "mono";
    match any family == "console"    edit family =+ "mono";

(これによりfixedというフォントに他の "mono" という名前のエイリアスを付けます) そして次の行も加えてください。

match any family == "mono" edit spacing = 100;

等幅フォントが必要な時にはつねに Lucidux を使うように (このフォントは実際見目もよく、スペーシングの問題もありません) するためには最後の行を次のように変更します (最後の行は異なるものに同じファミリー名を付けています)。

match any family == "mono"       edit family += "LuciduxMono";
    match any family == "Lucidux Mono"      edit family += "LuciduxMono";
    match any family == "LuciduxMono"       edit family =+ "Lucidux Mono";

最後に、このファイルを自分の .xftconfig として保存し、次のコマンドを追加します。

includeif  "~/.xftconfig"

最後に一つ。LCD スクリーンではサブピクセルサンプリングが必要な場合があります。 これは、基本的には (水平方向に分かれている) 赤、緑、 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので、 そうすることによって劇的な結果が得られます。 これを有効にするには XftConfig ファイルに次の行を加えます (ディスプレイの種類にもよりますが最後は ``rgb'' ではなく ``bgr''や ``vrgb''、``vbgr'' の場合もあるので、試してみて最も良いものを使ってください)。

match edit rgba=rgb;

アンチエイリアスは、次に X サーバを立ち上げた時から有効になります。 しかし、上でも述べたようにその恩恵を受けるにはプログラム側での対処も必要です。 今のところ Qt は対応しているため、KDE 環境全体でアンチエイリアスのかかったフォントを用いることができます (KDE についての詳しいことは Section 5.7.3.2 をご覧ください)。 gtk+ を同じようにするパッチもありますので、そのパッチを当てた gtk+ を使ってコンパイルし直せば GNOME 環境や Mozilla もまたアンチエイリアスなフォントを使うことができます。 実際には x11/gdkxft という port があり、 リコンパイルしなくてもアンチエイリアスなフォントを使うことができます。 詳しくは Section 5.7.1.3 をご覧ください。

アンチエイリアスは、FreeBSD や XFree86 ではまだ新しい機能ですが、その設定はもっと簡単になるでしょうし、 すぐにもっとたくさんのアプリケーションがサポートするようになるでしょう。


5.6. X ディスプレイマネージャ

寄稿: Seth Kingsley.

5.6.1. 概要

X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり、ログインセッションの管理に用います。 最低限の機能を実装した “X 端末”やデスクトップ、 大規模なネットワークディレプレイサーバといった場面ではこれが有用です。 X Window System はネットワークとプロトコルから独立しているため、 ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります。 XDM はどのディスプレイサーバに接続するかを選択でき、ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェイスを提供しています。

XDM がユーザに getty(8) (詳しくはSection 18.3.3をご覧ください) と同じ機能を提供することを考えてみてください。 つまり、ディスプレイ上でシステムへのログインができ、ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです。 それからXDMは、ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます。 この時点で、XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示することができるのです。


5.6.2. XDM の使用

XDM のデーモンプログラムは /usr/X11R6/bin/xdm にあります。 このプログラムは root になればいつでも起動することができ、 ローカルマシン上のディスプレイの管理を始めます。 マシンをブートする際、いつも XDM を起動したい場合には、/etc/ttys にそのためのエントリを加えておくのが簡単です。 このファイルのフォーマットや使用方法についての詳細は Section 18.3.3.1 を参照してください。デフォルトの /etc/ttys ファイルには仮想端末上で XDM のデーモンプログラムを起動するための行:

ttyv8  "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure
があります。このエントリーはデフォルトでは無効になっており、 有効にするには 5 番目のカラムを off から on にし、Section 18.3.3.6 の指示に従って init(8) を再起動します。最初のカラムはこのプログラムが管理する端末の名前で、 この場合 ttyv8 になります。 つまり、XDM は 9 番目仮想端末で起動されるということです。


5.6.3. XDM の設定

XDM の設定用ディレクトリは /usr/X11R6/lib/X11/xdm です。 このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります。 だいたいは以下のような感じです。

ファイル 説明
Xaccess クライアント認証のルールセット
Xresources デフォルトの X リソース
Xservers 管理すべきリモートやローカルのディスプレイのリスト
Xsession デフォルトのログイン時のセッションスクリプト
Xsetup_* ログインインタフェイスの前にアプリケーションを起動するためのスクリプト
xdm-config このマシンで動いている全てのディスプレイのグローバルな設定
xdm-errors サーバプログラムによって生成されるエラー
xdm-pid 現在動いている XDM のプロセス ID

このディレクトリにはまた、XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります。 それぞれのファイルの目的を簡単に解説しましょう。 正確な文法や使い方は xdm(1) に記述されています。

デフォルトの設定では、単純な四角のログインウィンドウがあり、 そこにはマシンのホスト名が大きなフォントで表示され、“Login:” と “Password:” のプロンプトがその下に表示されています。 XDM スクリーンのルックアンドフィールを変えるにはここから始めるのがいいでしょう。


5.6.3.1. Xaccess

XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます。 このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます。 デフォルトでは、どんなクライアントからの接続も許可するようになっていますが、 xdm-config を変更してリモートからのコネクションを待ち受けるようにしない限り問題ではありません。


5.6.3.2. Xresources

これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです。 このファイルでログインプログラムの見た目を変更することができます。 フォーマットは XFree86 のドキュメントで記述されている app-defaults ファイルのものと同じです。


5.6.3.3. Xservers

これは、chooser が選択肢として提供するリモートのディスプレイの一覧です。


5.6.3.4. Xsession

XDM でログインした後に実行されるデフォルトのセッションスクリプトです。 通常、各ユーザは ~/.xsessionrc というカスタマイズしたセッションスクリプトを持っており、こちらが優先されます。


5.6.3.5. Xsetup_*

これらは chooser やログインインタフェイスが表示される前に自動的に実行されます。 それぞれのディスプレイには、 Xsetup_ に続けてローカルのディスプレイ番号を付けたもの (例えばXsetup_0) を名前とするスクリプトがあります。 典型的な使い方は xconsole のようなバックグラウンドで動かすプログラムを一つか二つ起動することです。


5.6.3.6. xdm-config

app-defaultsの書式で書かれた、このインストレーションで管理されるすべてのディスプレイに適用される設定を保持しています。


5.6.3.7. xdm-errors

このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます。 XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合、 このファイルのエラーメッセージを見てください。 そういったメッセージは各ユーザの ~/.xsession-errors にもセッション毎に書き出されます。


5.6.4. ネットワークディスプレイサーバの起動

あるディスプレイサーバに他のクライアントが接続することができるようにするために、 アクセスコントロールのルールを編集し、コネクションリスナーを有効にします。 デフォルトでは保守的な設定になっています。 XDM がそういったコネクションを待ち受けるようにするためには xdm-config にある次の行をコメントアウトします。

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0
そして、XDM を再起動します。 app-defaults ファイルにおけるコメントは “!” であっていつものような “#” ではないことに注意してください。 アクセス制限はもっと厳しくしたいかもしれません。 Xaccess にある例を参考にしたり、オンラインマニュアル xdm(1) を参照したりしてください。


5.6.5. XDM の代わりになるもの

デフォルトの XDM に代わるものがいくつかあります。 一つは KDM (KDE に付属しています) はその一つであり、この章の後ろで解説します。 KDM はログイン時にウィンドウマネージャを選ぶことができるのに加え、 見た目もかなり綺麗にしてくれます。


5.7. デスクトップ環境

寄稿: Valentino Vaschetto.

このセクションでは、FreeBSD 上の X で利用可能ないくつかのデスクトップ環境について解説します。 “デスクトップ環境”とは、単なるウィンドウマネージャから KDEGNOME といったような完全なデスクトップアプリケーションスイートまでカバーします。


5.7.1. GNOME

5.7.1.1. GNOME について

GNOME はユーザフレンドリーなデスクトップ環境で、 ユーザはコンピューターを簡単に使ったり設定したりできるようになります。 GNOME にはパネル (アプリケーションを起動したり状態を表示したりするもの) 、デスクトップ (データやアプリケーションが置かれる場所)、 標準的なデスクトップツールやアプリケーションのセット、 そしてアプリケーションが互いにうまくやり取りできるような仕組みが含まれています。 他の OS や環境に慣れている人でも GNOME の提供するグラフィック環境であれば心地よく感じるでしょう。


5.7.1.2. GNOME のインストール

GNOME をインストールする最も簡単な方法は、 第 2 章で解説した FreeBSD のインストールメニューの“デスクトップ環境の設定”を通して行うことです。 また、package や ports を利用しても簡単にインストールできます。

GNOME packageをネットワークからインストールするには、 以下のようにするだけです。

# pkg_add -r gnome

GNOME をソースから構築する場合、 次のように ports ツリーを使いましょう。

# cd /usr/ports/x11/gnome
# make install clean

GNOMEがインストールできたら、デフォルトのウィンドウマネージャの代わりに GNOME を起動するように X サーバに教えます。 自分の .xinitrc が既にある場合には、ウィンドウマネージャを起動するところの行を /usr/X11R6/bin/gnome-session を起動するように変更するだけです。 特にこのファイルを用意していない場合には次のようにすれば十分でしょう。

% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc

次に、startx とタイプすれば GNOME デスクトップ環境が起動します。

Note: もし XDM のようなディスプレイマネージャを使っているなら、 この方法ではうまくいきません。その代わり、実行可能な .xsession というファイルを作成し、 同じコマンドを起動するようにします。 そのためには、このファイルを編集してウィンドウマネージャを /usr/X11R6/bin/gnome-session で置き換えます。

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

もう一つの方法は、ログイン時にウィンドウマネージャを選択できるようにディスプレイマネージャを設定することです。 KDE2 の詳細についてのセクションで KDE のディスプレイマネージャである kdm を使ってどのようにすればいいのかを解説しています。


5.7.1.3. GNOME でアンチエイリアスなフォントの使用

XFree86 デスクトップでは、フォントのアンチエイリアスは KDE 環境ではじめて登場し標準のインストールでサポートされていますが、 GNOME 環境のような gtk アプリケーションでも可能です。 最も素直なやり方は恐らく x11/gdkxft port にある libgdkxftライブラリ を使うことです。 この port をインストールしたら /usr/X11R6/share/doc/gdkxft/README を注意深く読んでください。

あとは gtk アプリケーションにフォントのレンダリング関数を標準の libgdk.so よりも前に libgdkxft.so から探すようにさせるだけです。 これは、環境変数が正しい位置を指すようにするだけでできます。 Bourne シェル (/bin/sh) 系のシェルの場合、 (Gimp を起動するなら) 次のようにタイプします。

% LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so gimp

csh 系のシェルであれば次のようにしてください。

% setenv LD_PRELOAD /usr/X11R6/lib/libgdkxft.so 
% gimp

もしくは、

     LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so
      export LD_PRELOAD
   

というコマンドを、X をどのように立ち上げるかに依って .xinitrc.xsession, もしくは /usr/X11R6/lib/X11/xdm/Xsession に書いておきます。 ただし、こうすると GTK の Linux バイナリを起動する時にトラブるかもしれません。


5.7.2. KDE2

5.7.2.1. KDE2 について

KDE は最近の簡単に使えるデスクトップ環境です。 KDE によりユーザは以下のようなメリットを亨受します。

  • 美しい現代風のデスクトップ

  • ネットワーク透過なデスクトップ

  • KDE デスクトップやそのアプリケーションを使う際の便利で統一されたヘルプにアクセスできるような統合されたヘルプシステム

  • 全ての KDE アプリケーションで統一されたルックアンドフィール

  • 標準化されたメニュー、ツールバー、キーバインディング、カラースキームなど

  • 国際化: KDE は 40を越える言語で利用可能

  • 集中したダイアログベースのデスクトップ設定

  • 膨大な数の KDE アプリケーション

KDE はその “KParts” テクノロジーをベースにしたオフィススイートを持っており、 それにはスプレッドシート、プレゼンテーションアプリケーション、オーガナイザー、 ニュースクライアントなどが含まれています。 KDE にはまた Konqueror と呼ばれる Web ブラウザーも付属しており、これは Unix システム上の他の Web ブラウザーの強力な競争相手です。 KDE の詳細については KDE の Webサイトをご覧ください。


5.7.2.2. KDE2 のインストール

GNOME や他のデスクトップ環境と全く同じように、 KDE をインストールする最も簡単な方法は第 2 章にある FreeBSD のインストールメニューでの“デスクトップ設定”を利用することです。 またまた同じことですが、package や ports コレクションからインストールするのも簡単です。

ネットワーク越しに KDE2 package をインストールするには次のようにします。

# pkg_add -r kde2

ソースから KDE を構築するには次のように ports ツリーを使いましょう

# cd /usr/ports/x11/kde2
# make install clean

KDE2 がインストールできたら X サーバに、デフォルトのウィンドウマネージャの代わりにこのアプリケーションを立ち上げるように教えます。 .xinitrc ファイルを次のように編集しましょう。

% echo "/usr/X11R6/bin/startkde" > ~/.xinitrc

さぁ、これで startx でいつ X Window System を立ち上げても KDE2 がデスクトップになります。

xdm のようなディスプレイマネージャを使っている場合、 設定は少し異なります。 代わりに .xsession ファイルを編集しましょう。 kdm 用の説明はこの章の後のほうにあります。


5.7.3. KDE2 の詳細について

さぁ、KDE2 のインストールができました。 ほとんどのことはヘルプページを見たりいろんなメニューをつつけばわかるでしょう。 Windows や Mac のユーザにも簡単なはずです。

KDE2 の最も良いリファレンスはオンラインドキュメントです。 KDE には独自の Web ブラウザー Konqueror が付属してますし、膨大な数の便利なアプリケーションや詳しいドキュメントもあります。 このセクションの残りではなんとなく使っているだけでは理解し難い技術的なところを解説します。


5.7.3.1. KDE ディスプレイマネージャ

マルチユーザシステムの管理者であれば、ユーザを迎えるにあたってグラフィカルなログインスクリーンが欲しいと思うかもしれません。 xdm は上で述べたようにその目的で使うことができます。 しかしながら、KDE にはその代わりになる KDM が付いており、より魅力的な見た目で、ログイン時のオプションもたくさんあります。 特に、(メニューを使って) ログイン後にどのデスクトップ環境か (KDE2GNOME など) を簡単に選ぶこともできます。

まず最初に rootKDE2 のコントロールパネル kcontrol を起動しましょう。 一般には X 環境全体を root で動かすのは安全ではありませんので、 ウィンドウマネージャは普通のユーザで起動しておいて (xtermKDEkonsole のような) ターミナルウィンドウを開き、su コマンドで root になり (そのユーザは wheel グループに入ってなければなりません) kcontrol とタイプします。

左側にあるシステム と書かれたアイコンをクリックし、 ログインマネージャ をクリックします。 右側には様々な設定オプションがあり、これらについては KDE のマニュアルに細かく解説されています。右側にある セッション をクリックしてください。 新規追加 をクリックして様々なウィンドウマネージャやデスクトップ環境を加えます。 これらはただのラベルですので startkdegnome-session ではなく KDEGNOME とできます。 failsafe というラベルも入れてください。

他のメニューでも遊んでみてください。それらはだいたい見た目に関するもので、 見ればわかります。終わったら下のほうにある 適用 ボタンをクリックしてコントロールセンターを終了します。

(KDEGNOME といった) ラベルが何かを kdm が確実に理解してくれるように、 xdm で使われているファイルを編集します。

Note: KDE 2.2 では、これは変更され kdm は独自の設定ファイルを持ちます。 詳しくは KDE 2.2 のドキュメントを参照してください。

ターミナルウィンドウで root/usr/X11R6/lib/X11/xdm/Xsession ファイルを編集します。 中ほどに次のような行があるはずです。

case $# in
1)
        case $1 in
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

このセクションにもう少し行を追加する必要があります。 “KDE2” や “GNOME” というラベルが付いてると仮定すると、 以下の行を追加してください。

case $# in
1)
        case $1 in
        kde)
                exec /usr/local/bin/startkde
                ;;
        GNOME)
                exec /usr/X11R6/bin/gnome-session
                ;;
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

KDE を尊重してログイン時のデスクトップのバックグラウンドを変える場合には /usr/X11R6/lib/X11/xdm/Xsetup_0 に次の行を加えます。

/usr/local/bin/kdmdesktop

最後に、次のブート時で立ち上がるように /etc/ttyskdm を書きます。 上の xdm のセクションの解説で /usr/X11R6/bin/xdm となっている部分を /usr/local/bin/kdm とすればいいだけです。


5.7.3.2. アンチエイリアスフォント

4.0.2 以降、XFree86 ではその "RENDER" 拡張によってアンチエイリアスがサポートされています。 (KDE で利用されているツールキットである) Qt では 2.3 以降でこの拡張がサポートされています。 その設定は X11 フォントでのアンチエイリアスに関して Section 5.5.3 で解説されています。従って最新のソフトウェアであれば KDE2 デスクトップ上でアンチエイリアスを利用することが可能なのです。 KDE2 のメニューから 設定 -> ルックアンドフィール -> フォント と辿り、 “フォントとアイコンをアンチエイリアス表示” をクリックしてください。 KDE の一部になっていない Qt アプリケーションの場合、 QT_XFT という環境変数をプログラムを起動する前に設定する必要があります。


5.7.4. XFCE

5.7.4.1. XFCE について

XFCEGNOME で使われている GTK ツールキットをベースにしたデスクトップ環境ですが、非常に軽く、 使用や設定が簡単なのにも関わらずシンプルで効率的なデスクトップです。 見ためとしては商用 Unix システムが採用している CDE にかなり似ています。XFCE の機能のいくつかを下に挙げておきます。

  • シンプルで使いやすいデスクトップ

  • マウスのドラッグアンドドロップなどで全ての設定が可能

  • CDE に似たメインパネルとメニューやアプレット、ランチャー

  • 統合されたウィンドウマネージャ、ファイルマネージャ、サウンドマネージャと GNOME 準拠のモジュールなど

  • (GTK なので) テーマをサポート

  • 速くて軽くて効率的: 古いマシンや遅いマシン、メモリーの限られたマシン向き

XFCE に関する詳しい情報は XFCE の Web サイトから得られます。


5.7.4.2. XFCE のインストール

(この文章を書いている時点で) xfce のバイナリーパッケージがあります。インストールするにはただ次のようにタイプするだけです

# pkg_add -r xfce

また、ports コレクションを利用してソースから作ることも可能です

# cd /usr/ports/x11-wm/xfce
# make install clean

次に X が起動した時に XFCE が起動されるように設定します。 次のようにしてください。

% echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc

次に X が起動する時 XFCE のデスクトップが立ち上がります。 上と同様に、xdm のようなディスプレイマネージャを使っている場合には GNOME のセクションに書いてあるのと同じように .xsession ファイルを作り、/usr/X11R6/bin/startxfce を起動するようにします。 もしくは、kdm のセクションにあるようにディスプレイマネージャから XFCE を選ぶことができるように設定します。

II. 日々の生活

第 1 部では基礎的なことがらを説明したので、 FreeBSD ハンドブックの第 2 部では FreeBSD でよく使われる機能について説明します。 各章の内容は以下のとおりです。

  • ブラウザ、生産的なツール、ドキュメントビューアといった、 人気があって便利なデスクトップアプリケーションの紹介

  • FreeBSD で利用可能なマルチメディアツールの紹介

  • システムで特別な機能を有効にするために、 カスタムカーネルを構築する手順の説明

  • デスクトップおよびネットワーク接続両方のプリンタの設定に関する、 印刷システムの詳細な説明

  • FreeBSD システムで Linux アプリケーションを実行する方法

これらの章では、読み飛ばしを推奨しているものもあります。 これについてはそれぞれの章の始めにある概要に書かれています。


Chapter 6. デスクトップアプリケーション

寄稿: Christophe Juniet.

6.1. この章では

FreeBSD では、Web ブラウザやワードプロセッサといった たくさんの種類のデスクトップアプリケーションを利用できます。 その多くは packages や Ports Collection を用いて導入できます。 新しいユーザの多くは、 デスクトップにこの種のアプリケーションがあることを期待しているでしょう。 この章では、人気の高いデスクトップアプリケーションを packages や Ports Collection から簡単にインストールする方法について説明します。

ports からプログラムをインストールする場合、 そのプログラムはソースからコンパイルされることに注意してください。 コンパイルする対象やマシンの性能にもよりますが、 この作業にはとても時間がかかることがあります。 ソースからコンパイルする時間がない場合には、 Ports Collection に収録されているほとんどのプログラムを、 あらかじめコンパイルされた packages からインストールできます。

FreeBSD における Linux バイナリ互換機能によって、Linux 用に開発された多くのアプリケーションを あなたのデスクトップでも利用できます。 どんな Linux アプリケーションをインストールする場合でも、 事前に Chapter 10 を読んでおくことをおすすめします。 Linux バイナリ互換機能を用いた port の多くは “linux-” からはじまる名前となっています。 whereis(1) などを使って特定の port を探す場合には、このことを思い出してください。 この章では、Linux アプリケーションをインストールする前に Linux バイナリ互換機能を有効にしてあることを前提とします。

この章では、以下の分野について説明します。

  • Web ブラウザ (Firefox, Opera, Konqueror など)

  • 生産的なアプリケーション (KOffice, AbiWord, GIMP, OpenOffice.org など)

  • ドキュメントビューア (Acrobat Reader®, gv, Xpdf, GQview など)

  • 財務管理ソフトウェア (GnuCash, Gnumeric, Abacus など)

この章を読む前に、以下のことを理解しておく必要があります。

  • サードパーティ製ソフトウェアのインストール方法 (Chapter 4)

  • Linux ソフトウェアのインストール方法 (Chapter 10)

マルチメディア環境を整える方法については Chapter 7 を、 電子メールを設定して使いたい場合には Chapter 20 を参照してください。

訳注: この文書は英語で書かれている原文をそのまま邦訳したものです。 必ずしも各アプリケーションで日本語が扱えるとは限らないことに注意してください。 日本語に対応したアプリケーションは、Ports Collection の japanese ディレクトリにあるかもしれません。


6.2. Web ブラウザ

FreeBSD では Web ブラウザは事前にインストールされていません。 そのかわり、Ports Collection の www ディレクトリには数多くの Web ブラウザ が用意されており、 すぐにインストールできます。ソースからコンパイルする時間がない場合 (ソースからのコンパイルは大変な時間がかかることがあります)、 多くのプログラムを packages からインストールできます。

KDEGNOME では、はじめから HTML ブラウザが用意されています。 これらのデスクトップ環境を設定するための情報については Section 5.7 を参照してください。

軽快な Web ブラウザを探している場合には、Ports Collection から www/dillo, www/links, www/w3m を試してみてください。

この節では次のアプリケーションについて説明します。

アプリケーション名 必要なリソース port からのインストール 実行に必要となる主な環境
Firefox Gtk+
Opera FreeBSD 版と Linux 版を利用することができます。 Linux 版のバイナリを実行するには、 Linux バイナリ互換機能を有効にし、 linux-openmotif をインストールする必要があります。
Konqueror KDE ライブラリ

6.2.1. Firefox

Firefox は、 先進的で無料かつオープンソースの安定したブラウザです。 FreeBSD に完全に対応しています。 標準によく準拠した HTML 表示エンジン、タブブラウジング、ポップアップブロック、 拡張性、高い安全性などが特徴です。 FirefoxMozilla のコードベースから派生したブラウザです。

package をインストールするには以下のように入力してください。

# pkg_add -r firefox

上の例では、Firefox 2.X がインストールされます。 Firefox 3.X を利用したい場合には、 かわりに以下のように入力してください。

# pkg_add -r firefox3

ソースコードからコンパイルする方が好きなら、Ports Collection を使って以下のようにインストールすることもできます。

# cd /usr/ports/www/firefox
# make install clean

Firefox 3.X を利用する場合は、 上のコマンドの firefoxfirefox3 に置き換えてください。


6.2.2. Firefox と Java™ プラグイン

Note: 本節と次節では、Firefox があらかじめインストールされていることを前提とします。

FreeBSD Foundation は、Sun Microsystems 社から Java Runtime Environment (JRE™) と Java Development Kit (JDK™) の FreeBSD バイナリを配布するライセンスを獲得しています。 FreeBSD のバイナリパッケージは、FreeBSD Foundation のウェブサイトよりダウンロードできます。

Java™ を Firefox に追加するには、 まず java/javavmwrapper port をインストールしてください。 その後 http://www.freebsdfoundation.org/downloads/java.shtml から Diablo JRE package をダウンロードし、 pkg_add(1) を使ってインストールしてください。

ブラウザを起動し、ロケーションバーに about:plugins と入力して Enter を押してください。 インストールされているプラグイン一覧のページが表示されます。 Java プラグインが一覧に追加されているでしょう。 一覧にない場合は、 root 権限で以下のコマンドを実行してください。

# ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \
  /usr/local/lib/browser_plugins/

その後、ブラウザを再起動してください。


6.2.3. Firefox と Macromedia® Flash™ プラグイン

FreeBSD 用の Macromedia® Flash™ プラグインは提供されていません。 しかしながら、Linux バージョンのプラグインを実行するためのソフトウェアレイヤ (wrapper) が存在します。 この wrapper は、Adobe® Acrobat® プラグインや RealPlayer® プラグインなどにも対応しています。

Warning以下では最近の -STABLE ブランチである FreeBSD 7.1-RELEASE 以降に、 Flash 9.X をインストールする方法について説明します。 古い FreeBSD を使っている場合や問題に遭遇した場合には、 かわりに www/linux-flashplugin7 をインストールし、 以下の linprocfs(5) に関する説明は飛ばしてください。

www/nspluginwrapper port をインストールします。 この port は、emulators/linux_base-fc4 という大きな port を必要とします。

次に、www/linux-flashplugin9 port をインストールします。 port をインストールしたら、各ユーザごとに nspluginwrapper を使ってプラグインをインストールしてください。

% nspluginwrapper -v -a -i

Flash アニメーションを再生したいのであれば、 Linux® プロセスファイルシステム linprocfs(5)/usr/compat/linux/proc にマウントする必要があります。 以下のコマンドでマウントしてください。

# mount -t linprocfs linproc /usr/compat/linux/proc

/etc/fstab に以下の行を追加すると、 起動時に自動的にマウントされます。

linproc    /usr/compat/linux/proc  linprocfs   rw  0   0

その後、ブラウザを起動し、 ロケーションバーに about:plugins と入力して Enter を押してください。 現在利用可能なプラグインの一覧が表示されます。


6.2.4. Firefox と Swfdec Flash プラグイン

Swfdec は Flash アニメーションのデコードやレンダリングを行うライブラリです。 Swfdec-Mozilla は、Firefox ブラウザにおいて SWF ファイルを実行するためのプラグインで、Swfdec ライブラリを利用しています。 このライブラリは、現在でも盛んに開発されています。

もし、コンパイルできなかったり、コンパイルしたくない場合には、 ネットワークから package をダウンロードしてインストールしてください。

# pkg_add -r swfdec-plugin

package を入手できない場合は、Ports Collection からコンパイルしてインストールしてください。

# cd /usr/ports/www/swfdec-plugin
# make install clean

その後、ブラウザを再起動してプラグインを有効にしてください。


6.2.5. Opera

Opera は、 機能満載で、標準規格に準拠した Web ブラウザです。 また、メールおよびニュースリーダや、IRC クライアント、 RSS/Atom フィードリーダ、その他いろいろなものが組み込まれています。 それにもかかわらず、Opera は比較的軽く、非常に速く動作します。 FreeBSD “ネイティブ”バージョンと、 Linux バイナリ互換機能によって動作するバージョンの 2 つがあります。

FreeBSD 版の Opera で Web を見るには、次の package をインストールします。

# pkg_add -r opera

一部の FTP サイトでは、すべての packages は用意されていません。 以下のように入力することで、Opera を Ports Collection からインストールできます。

# cd /usr/ports/www/opera
# make install clean

Linux 版の Opera をインストールするには、上の例で operalinux-opera に置き換えてください。 Adobe Acrobat Reader のように、Linux 版しか入手できないプラグインを利用したい状況では Linux 版が有用です。他のすべての点で、FreeBSD 版と Linux 版は同じように機能するでしょう。


6.2.6. Konqueror

KonquerorKDE を構成するソフトウェアです。 ただし、KDE をインストールしなくても、 x11/kdebase3 をインストールすることにより、単体で動作させることができます。 Konqueror はブラウザであると同時に、 ファイルマネージャおよびマルチメディアビューアの役割も果たします。

Konqueror にはプラグイン一式が用意されており、 misc/konq-plugins を利用してインストールできます。

KonquerorFlash にも対応しています。 KonquerorFlash を導入するための “How To” ガイドが http://freebsd.kde.org/howtos/konqueror-flash.php にあります。


6.3. 生産的なアプリケーション

生産的なアプリケーションということになると、 新しいユーザはしばしば魅力的なオフィススイートや 親しみのあるワードプロセッサを求めるでしょう。 デフォルトアプリケーションではありませんが、 KDE のような デスクトップ環境 はオフィススイートを提供しています。 FreeBSD は、デスクトップ環境にかかわらず 必要なものはすべて提供しています。

この節では次のアプリケーションについて説明します。

アプリケーション名 必要なリソース port からのインストール 実行に必要となる主な環境
KOffice KDE
AbiWord Gtk+ または GNOME
Gimp Gtk+
OpenOffice.org 莫大 JDK 1.4, Mozilla

6.3.1. KOffice

KDE コミュニティはデスクトップ環境とともに、 KDE 環境以外でも利用可能な オフィススイートを提供しています。 このオフィススイートには、他のオフィススイートと同様に、 4 つの標準的なアプリケーションが含まれています。 KWord はワードプロセッサ、 KSpread は表計算ソフトウェア、 KPresenter はプレゼンテーションソフトウェア、そして Kontour は図形描画ソフトウェアです。

最新の KOffice をインストールする場合には、事前に KDE を最新のバージョンにしておいてください。

KOffice を package からインストールするには次のようにします。

# pkg_add -r koffice

package を入手できない場合でも Ports Collection を利用できます。 たとえば、KDE3KOffice をインストールするには次のようにします。

# cd /usr/ports/editors/koffice-kde3
# make install clean

6.3.2. AbiWord

AbiWord は、Microsoft Word のような見た目や操作感を持つフリーのワードプロセッサです。 書類や手紙、報告書、メモなどを書くのに適しています。 非常に速く、多くの特徴があり、非常にユーザフレンドリです。

AbiWord は、 Microsoft .doc のような独自仕様を含む多くの形式のファイルを読み書きできます。

次のようにして AbiWord を package からインストールできます。

# pkg_add -r abiword

package を入手できない場合でも Ports Collection を利用できます。 おそらく Ports Collection の方が新しいでしょう。 次のようにしてインストールします。

# cd /usr/ports/editors/abiword
# make install clean

6.3.3. GIMP

画像を描画したり写真を修正することに関して、 GIMP はとても洗練された編集プログラムです。 単純にお絵かきソフトウェアとして使うこともできますし、 高品質な写真の加工ツールとしても使えます。 多くのプラグインに対応しており、 スクリプトインタフェースを特徴としています。 GIMP はさまざまな形式のファイルを読み書きでき、 スキャナやタブレットとのインタフェースにも対応しています。

次のコマンドにより package をインストールできます。

# pkg_add -r gimp

利用している FTP サイトにこの package がない場合でも、 Ports Collection からインストールできます。 Ports Collection の graphics ディレクトリには Gimp マニュアルもあります。 インストールする方法は次のとおりです。

# cd /usr/ports/graphics/gimp
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean

Note: Ports Collection の graphics ディレクトリには GIMP の開発版である graphics/gimp-devel があります。 Gimp マニュアル の HTML バージョンは graphics/gimp-manual-html にあります。


6.3.4. OpenOffice.org

OpenOffice.org は、完全なオフィススイートに必須のアプリケーション (ワードプロセッサ、表計算ソフトウェア、 プレゼンテーションソフトウェア、そして図形描画ソフトウェア) をひととおり揃えています。 ユーザインタフェースは他のオフィススイートと似ており、 広く用いられているさまざまな形式のファイルを読み書きできます。 インタフェース、スペルチェッカ、辞書は国際化されており、 多くの言語で利用できます。

OpenOffice.org のワードプロセッサは、ネイティブのファイル形式に XML を採用することで ポータビリティや柔軟性を高めています。 表計算ソフトウェアにはマクロ機能があり、 外部データベースと接続することもできます。 OpenOffice.org は、すでに Windows, Solaris™, Linux, FreeBSD, Mac OS® X において安定してネイティブに動作しています。 OpenOffice.org についての詳しい情報は、 OpenOffice.org web サイト をご覧ください。また、 FreeBSD OpenOffice.org プロジェクトチーム の Web サイトから、FreeBSD 特有の情報や packages を直接取得することもできます。

OpenOffice.org をインストールするには次のようにします。

# pkg_add -r openoffice.org

Note: FreeBSD のリリース版を使用している場合、この操作は動作します。 それ以外の版を使用している場合、FreeBSD OpenOffice.org Porting Team の web サイトから適切なパッケージをダウンロードして、 pkg_add(1) を使用してインストールしてください。 ここからはリリース版と開発版の両方がダウンロードできます。

package をインストールしたら、以下のコマンドを入力するだけで OpenOffice.org が起動します。

% openoffice.org

Note: 初回起動時に、いくつかの質問が表示され、 ホームディレクトリに .openoffice.org2 フォルダが作成されます。

OpenOffice.org の packages が利用できない場合でも、port を利用する方法があります。 しかしながら、コンパイルするには大きなディスクスペースと 本当にかなり長い時間を必要とすることを心に留めておかなければなりません。

# cd /usr/ports/editors/openoffice.org-2
 # make install clean

Note: 地域化されたバージョンをビルドしたいのなら、 上記コマンドの代わりに以下のコマンドを実行して下さい。

# make LOCALIZED_LANG=your_language install clean

your_language を正しい言語 ISO コードに置き換えてください。 サポートされている言語コードは、同じ port ディレクトリにある files/Makefile.localized ファイルに書かれています。

インストールが終わったら、以下のコマンドで OpenOffice.org を起動することができます。

% openoffice.org

6.4. ドキュメントビューア

UNIX の出現以降、いくつかの新しい文書形式がよく使われるようになりました。 基本システムには、それらの文書が要求するビューアがないかもしれません。 この節ではそれらのドキュメントビューアのインストール方法について説明します。

この節では次のアプリケーションについて説明します。

アプリケーション名 必要なリソース port からのインストール 実行に必要になる主な環境
Acrobat Reader Linux バイナリ互換機能
gv Xaw3d
Xpdf FreeType
GQview Gtk+ または GNOME

6.4.1. Acrobat Reader®

今や多くの文書が “Portable Document Format” を意味する PDF ファイル形式で配布されています。 PDF ファイルを読むのに推奨されるビューアの一つが Acrobat Reader で、 Adobe から Linux 向けにリリースが提供されています。 FreeBSD は Linux バイナリを実行できるので、 FreeBSD でもこのアプリケーションを利用できます。

Ports Collection から Acrobat Reader 7 をインストールするには次のようにします。

# cd /usr/ports/print/acroread7
# make install clean

ライセンスの制限のため、パッケージを利用することはできません。


6.4.2. gv

gvPostScript® と PDF のビューアです。これはもともと ghostview をベースとしていますが、 Xaw3d ライブラリによってより良い外観になっています。 動作が速くて、ユーザインタフェースもシンプルです。 gv は用紙の向きやサイズ、 拡大縮小、アンチエイリアスなどたくさんの機能を持っています。 ほとんどすべての操作はキーボードとマウスの両方で行なうことができます。

package から gv をインストールするには次のようにします。

# pkg_add -r gv

package が手に入らない場合には Ports Collection を使ってください。

# cd /usr/ports/print/gv
# make install clean

6.4.3. Xpdf

FreeBSD 向けの軽い PDF ビューアを使いたいのなら、 Xpdf を試してみてください。 Xpdf は軽くて効率的なビューアです。 とても少ないリソースでも動作し、とても安定しています。 標準の X フォントを利用し、 Motif®, その他の X ツールキットを必要としません。

Xpdf の package をインストールするには次のコマンドを入力します。

# pkg_add -r xpdf

package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。

# cd /usr/ports/graphics/xpdf
# make install clean

インストールが完了したら Xpdf を起動できます。 メニューを表示するにはマウスの右ボタンを押してください。


6.4.4. GQview

GQview は画像管理ソフトウェアです。 クリックひとつで画像ファイルを開いたり、外部エディタを起動したり、 サムネイル画像を作成したり、そのほかにもいろいろできます。 また、スライドショーや基本的なファイル操作機能も備えています。 画像のコレクションを管理でき、重複したファイルも簡単に見つけられます。 GQview は全画面表示もでき、 国際化にも対応しています。

GQview の package をインストールするには次のコマンドを入力します。

# pkg_add -r gqview

package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。

# cd /usr/ports/graphics/gqview
# make install clean

6.5. 財務管理ソフトウェア

FreeBSD デスクトップで個人的な財務管理ができるように、 強力で簡単に使えるアプリケーションが用意されています。 それらのアプリケーションの中には Quicken®Excel などの広く行き渡った形式のファイルと互換性があるものもあります。

この節では次のアプリケーションについて説明します。

アプリケーション名 必要なリソース port からのインストール 実行に必要になる主な環境
GnuCash GNOME
Gnumeric GNOME
Abacus Tcl/Tk
KMyMoney KDE

6.5.1. GnuCash

GnuCash は、 GNOME の一部で、 使いやすくかつ強力なアプリケーションとしてエンドユーザに提供されています。 GnuCash を使えば、 収入や支出、銀行口座、あるいは株を管理できます。 直観的なインタフェースを特徴としていますが、 非常に高度な機能も提供しています。

GnuCash は洗練された登録機能、 階層構造の勘定システム、多くのキーボードショートカット、 自動補完機能を提供しています。 単一のトランザクションをより小さな要素に分解できます。 GnuCash は、 Quicken の QIF ファイルの読み込みやマージができます。 また、国際的な日付および通貨形式も扱えます。

GnuCash をインストールするには次のようにします。

# pkg_add -r gnucash

package が手に入らないならば、Ports Collection を使ってください。

# cd /usr/ports/finance/gnucash
# make install clean

6.5.2. Gnumeric

Gnumeric は、 GNOME デスクトップ環境に含まれている表計算ソフトウェアです。 セルの書式に従ってユーザの入力を自動的に “推測”する便利な機能や、 多くのシーケンスに対する自動補完機能があります。 Excel, Lotus 1-2-3, Quattro Pro といった広く行き渡っている多くの形式のファイルを読みこめます。 Gnumeric は、グラフ描画ソフトウェアの math/guppi を介してグラフ機能を提供しています。 多くの関数を内蔵しており、 数値、通貨、日付、時間などのよく使うセルの書式が利用できます。

package から Gnumeric をインストールするには次のように入力します。

# pkg_add -r gnumeric

package が手に入らないならば、Ports Collection を使ってください。

# cd /usr/ports/math/gnumeric
# make install clean

6.5.3. Abacus

Abacus は、軽くて使いやすい表計算ソフトウェアです。 統計、財務、数学などの分野で 役にたつ多くの関数を内蔵しています。 AbacusExcel 形式のファイルを読み書きでき、 PostScript 形式のファイルも作成できます。

package から Abacus をインストールするには次のようにします。

# pkg_add -r abacus

package が手に入らないならば、Ports Collection を使ってください。

# cd /usr/ports/deskutils/abacus
# make install clean

6.5.4. KMyMoney

KMyMoney は、 KDE の個人用財務管理ソフトウェアです。 商用の個人用財務管理ソフトウェアに見られる機能を取り入れ、 提供することを目指しています。 また、使いやすい複式簿記機能も特徴です。 KMyMoney は標準の Quicken Interchange Format (QIF) ファイルをインポート可能で、 投資履歴や複数通貨の取扱い、財政状況のレポートを提供します。 また、プラグインを用いることにより OFX のインポートもできます。

package から KMyMoney をインストールするには次のようにします。

# pkg_add -r kmymoney2

package が手に入らない場合は、Ports Collection を使ってください。

# cd /usr/ports/finance/kmymoney2
# make install clean

6.6. まとめ

FreeBSD はその性能や安定性によって インターネットサービスプロバイダに人気がある一方で、 日常のデスクトップでの用途にも完全に対応しています。 数千のアプリケーションが packagesports から利用できます。 これらによりあなたのニーズを完全に満たすデスクトップを構築できます。

以下は、この章で説明した デスクトップアプリケーションの一覧です。

アプリケーション名 package 名 port 名
Opera opera www/opera
Firefox firefox www/firefox
KOffice koffice-kde3 editors/koffice-kde3
AbiWord abiword editors/abiword
GIMP gimp graphics/gimp
OpenOffice.org openoffice editors/openoffice-1.1
Acrobat Reader acroread print/acroread7
gv gv print/gv
Xpdf xpdf graphics/xpdf
GQview gqview graphics/gqview
GnuCash gnucash finance/gnucash
Gnumeric gnumeric math/gnumeric
Abacus abacus deskutils/abacus
KMyMoney kmymoney2 finance/kmymoney2

Chapter 7. マルチメディア

編集: Ross Lippert.

7.1. この章では

FreeBSD は数多くの種類のサウンドカードに対応しており、 コンピュータで原音に忠実な出力を楽しむことができます。 これには録音機能と、MPEG Layer 3 Audio (MP3) や WAV, Ogg Vorbis などをはじめとした多くの形式の音楽の再生機能が含まれます。 加えて FreeBSD の Ports Collection には、録音した音楽を 編集したり、音響効果を加えたり、接続された MIDI 機器を制御するためのアプリケーションがあります。

多くの試みによって、FreeBSD ではビデオファイルおよび DVD の 再生ができるようになりました。さまざまなビデオメディアをエンコード、 変換、再生するアプリケーションの数は、 音声用のアプリケーションほど充実していません。 この文書を執筆している時点では、たとえば audio/sox のようなファイル形式を変換するためのすぐれたアプリケーションは Ports Collection にありません。しかしながら、 この分野のソフトウェアの状況は急速に変わりつつあります。

この章ではサウンドカードを設定するために必要な方法を説明します (ただし、高音質で再生するためには若干の微調整が必要かもしれません)。 ビデオカードのハードウェアに関する問題は、 X11 (Chapter 5) のインストールと設定においてすでに扱いましたので、 そちらをご覧ください。

この章を読むと、以下のことがわかります。

  • サウンドカードを認識させるためにシステムを設定する方法

  • サウンドカードがうまく動作しているかどうかテストする方法

  • サウンドの設定に関するトラブルシューティング

  • MP3 およびその他の形式の音声を再生、エンコードする方法

  • X サーバで どのようにビデオに対応しているか

  • ビデオを再生、エンコードするのに役に立つ ports

  • DVD の .mpg ファイルおよび .avi ファイルを再生する方法

  • CD および DVD の情報を抽出する方法

  • TV カードの設定方法

  • 画像スキャナの設定方法

この章を読む前に、以下のことを理解しておく必要があります。

  • 新しいカーネルを設定してインストールする方法 (Chapter 8)

Warningオーディオ CD を mount(8) でマウントしようとすると、少なくともエラーになります。 最悪の場合、カーネルパニックが発生するでしょう。 これらのメディアは通常の ISO ファイルシステムとは異なり、 特別なエンコードが施されているからです。


7.2. サウンドカードの設定

寄稿: Moses Moore. FreeBSD 5.X のための再構成: Marc Fonvieille.

7.2.1. システムを設定する

設定をはじめる前に、あなたが持っているカードのモデル、 そのカードが使用しているチップ、そして PCI, ISA どちらのカードなのかを確認する必要があります。 FreeBSD は PCI および ISA の両方のカードに幅広く対応しています。 使用しているカードが対応しているかどうかは、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 このハードウェアノートには、カードに対してどのドライバを利用すればよいか についても言及されています。

サウンドデバイスを使うために、 適切なデバイスドライバを読み込まなければいけません。 これには二つの方法のどちらかでできるでしょう。 もっとも簡単な方法は kldload(8) を使ってサウンドカードのカーネルモジュールを単に読み込むことです。 次のコマンドで実現できます。

# kldload snd_emu10k1

または /boot/loader.conf ファイルにこのような適切な行を加えて実現することもできます。

snd_emu10k1_load="YES"

以上は Creative SoundBlaster® Live! サウンドカードの例です。 他に利用可能な読み込み可能なサウンドモジュールは /boot/defaults/loader.conf に記載されています。 どのドライバを利用すればいいか確かでなければ、 snd_driver モジュールを読み込んでみてください。

# kldload snd_driver

snd_driver モジュールは、 一般に使用されるカードに対応したドライバをまとめて一度に読み込む メタドライバです。このドライバを使用すれば、 速やかに正しいドライバを探し出すことができるでしょう。 /boot/loader.conf ファイルを使用して、 すべてのサウンドドライバを読み込むこともできます。

snd_driver メタドライバの読み込み後に、 どのドライバがサウンドカードに選択されたのかを知りたいのなら cat /dev/sndstat コマンドで /dev/sndstat ファイルを調べてください。

二つ目の方法は、 サウンドカードのドライバをカーネルへ静的に組み込むことです。 以下の節では、この方法でハードウェアを対応させる方法を説明します。 カーネル再構築の詳細は Chapter 8 を参照してください。


7.2.1.1. サウンドに対応したカスタムカーネルを設定する

はじめに、オーディオフレームワークドライバ sound(4) をカーネルに追加します。 カーネルコンフィグレーションファイルに以下の行を追加してください。

device sound

次に、サウンドカードに対応したドライバを追加します。 それには、どのドライバがカードに対応しているかを知る必要があります。 使用しているカードに対する正しいドライバを決定するために、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 たとえば、Creative SoundBlaster Live! サウンドカードは snd_emu10k1(4) ドライバが対応しています。 このカードを使用するためには、カーネルコンフィグレーションファイルに 以下の行を追加してください。

device snd_emu10k1

ドライバのマニュアルページを読んで、 追加すべき構文を調べてください。 対応しているすべてのサウンドドライバに関する カーネルコンフィグレーションの具体的な構文は、 /usr/src/sys/conf/NOTES にもあります。

すべての PnP 非対応の ISA カードに当てはまるように、 PnP 非対応の ISA サウンドカードでは、 カーネルにカードが使用する資源 (IRQ, I/O ポートなど) を明示的に指定する必要があるかもしれません。 この場合は、/boot/device.hints ファイルを使用してください。 システムの起動時に、loader(8) はこのファイルを読み、設定情報をカーネルに渡します。 たとえば、PnP 非対応の古い Creative SoundBlaster 16 (ISA 接続) には snd_sb16 とともに snd_sbc(4) ドライバを使用します。 このカードを使用する場合には、カーネルコンフィグレーションファイルに 以下の行を追加すると同時に、

device snd_sbc
device snd_sb16

/boot/device.hints ファイルに以下のエントリを追加してください。

hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"

この例では、 I/O ポートに 0x220 を、 IRQ に 5 を使用します。

/boot/device.hints ファイルに用いるべき構文は、 sound(4) ドライバのマニュアルページ、および、 各ドライバのマニュアルページに記載されています。

初期設定は以上の通りです。 カードを使用する状況によっては、 IRQ やその他の設定を変更する必要があるかもしれません。 このカードについての詳細は、 snd_sbc(4) マニュアルページをご覧ください。


7.2.2. サウンドカードのテスト

カーネルを変更して再起動するか、必要となるモジュールを読み込むと、 システムのメッセージバッファ (dmesg(8)) にサウンドカードが認識されたことが示されます。 たとえば、次のようなメッセージが出力されます。

pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>

サウンドカードの状態は、/dev/sndstat ファイルを使用して確認することができます。

# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)

この出力はシステムによって異なるでしょう。 pcm デバイスがなければ、 今までの手順を振り返ってみてください。 カーネルコンフィグレーションファイルをもう一度見直して、 正しいデバイスドライバを選択しているかどうか確認してください。 トラブルシューティングは Section 7.2.2.1 を参照してください。

すべてうまくいけば、サウンドカードが機能するでしょう。 CD-ROM または DVD-ROM ドライブのオーディオ出力端子がサウンドカードと適切に接続されていれば、 cdcontrol(1) を使ってドライブ内の CD を再生できます。

% cdcontrol -f /dev/acd0 play 1

audio/workman のように、よりよいインタフェースを提供する さまざまなアプリケーションがあります。 MP3 オーディオファイルを聴くために audio/mpg123 のようなアプリケーションをインストールしようと思うかもしれません。

手っ取り早くカードをテストするには、 /dev/dsp デバイスにデータを送ってみてください。 たとえば、以下のようにします。

% cat filename > /dev/dsp

ここで filename はどんなファイルでも構いません。 このコマンドラインを実行すると雑音が発生するはずです。 これにより、サウンドカードが実際に動作していることを確認できます。

サウンドカードのミキサレベルは mixer(8) コマンドで変更することができます。 詳細は mixer(8) マニュアルページをご覧ください。


7.2.2.1. よくある問題

エラー 解決方法
sb_dspwr(XX) timed out

使用する I/O ポートが適切に設定されていません。

bad irq XX

使用する IRQ が正しく設定されていません。 サウンドカードの IRQ と設定した IRQ が同じかどうか確かめてください。

xxx: gus pcm not attached, out of memory

デバイスを使用するのに 十分なメモリを確保できません。

xxx: can't open /dev/dsp!

fstat | grep dsp を使って、他のアプリケーションがデバイスを 使用しているか調べてください。 注目すべきトラブルメーカは esoundKDE のサウンド機能です。


7.2.3. 複数音源の利用

寄稿: Munish Chopra.

特定のアプリケーションとのサウンドデバイスの共用に対応していない時、 esound または artsd のように 同時に再生することのできる音源を複数実装していることは、 多くの場合望ましいことです。

FreeBSD では、 仮想サウンドチャネル を使ってこれを実現でき、sysctl(8) で設定できます。 仮想チャネルはカーネル内でサウンドを合成することにより、 サウンドカードの再生を多重化することができます。

仮想チャネルの数を決めるのに二つの sysctl 変数を設定できます。 root ユーザで以下のようにします。

# sysctl dev.pcm.0.play.vchans=4
# sysctl dev.pcm.0.rec.vchans=4
# sysctl hw.snd.maxautovchans=4

上記の例では四つの仮想チャネルを設定しています。 これは通常利用する上で十分実用的な数です。 dev.pcm.0.play.vchans=4dev.pcm.0.rec.vchans=4 は、 pcm0 が再生や録音のために持っている仮想チャネルの数で、 一度デバイスが取り付けられると設定できます。 hw.snd.maxautovchans は、 kldload(8) を用いて認識された新しいデバイスの仮想チャネル数です。 pcm モジュールはハードウェアドライバとは独立して読み込むことができるので、 後でどんなにデバイスを認識しても hw.snd.maxautovchans は仮想チャネルを格納できます。 より詳細な情報については pcm(4) のマニュアルページを参照してください。

Note: デバイスを使用しているときに 仮想チャンネルの数を変更することはできません。 まず、ミュージックプレーヤやサウンドデーモンといった デバイスを使用しているすべてのプログラムを終了してください。

devfs(5) を使用していないのなら、 利用するアプリケーションに /dev/dsp0.x を指定しなければならないでしょう。 上記の例のように dev.pcm.0.rec.vchans を 4 に設定すると x は 0 から 3 となります。 devfs(5) を使用しているシステムでは、 /dev/dsp0 を必要とするプログラムが意識しなくてもこれらが自動的に設定されます。


7.2.4. ミキサチャネルの初期値を設定する

寄稿: Josef El-Rayes.

各ミキサチャネルの初期値は pcm(4) ドライバのソースにハードコーディングされています。 起動時に記録されていた値をミキサに設定する さまざまなアプリケーションやデーモンがありますが、 あまりよい解決方法ではありません。 適切な値を /boot/device.hints ファイルに記述することにより、 ドライバレベルでミキサの初期値を設定することができます。 たとえば、以下のような行を追加します。

hint.pcm.0.vol="50"

この例では、pcm(4) が読み込まれたと同時に、 ボリュームチャネルの初期値を 50 に設定します。


7.3. MP3 オーディオ

寄稿: Chern Lee.

MP3 (MPEG Layer 3 Audio) は CD に匹敵する音質でサウンドを再生できます。あなたの FreeBSD ワークステーションにこのプレイヤをインストールしない理由はないでしょう。


7.3.1. MP3 プレイヤ

XMMS (X Multimedia System) は とても人気のある X11 ベースの MP3 プレイヤです。 XMMS のグラフィカルインタフェースは Nullsoft の Winamp とほとんど同一なので、Winamp のスキンを使うことができます。 XMMS はネイティブプラグインにも対応しています。

XMMSmultimedia/xmms の port または package からインストールできます。

XMMS のプレイリスト、グラフィックイコライザそしてその他のインタフェースは 直感的です。 Winamp を使いなれている人は 簡単に XMMS を使えるでしょう。

audio/mpg123 はコマンドライン上の代替となる MP3 プレイヤの port です。

mpg123 はサウンドデバイスと MP3 ファイルを指定して実行できます。 /dev/dsp1.0 デバイスを使用して MP3 ファイル Foobar-GreatestHits.mp3 を再生するのであれば、次のように実行してください。

# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

7.3.2. CD 音声トラックの抽出

CD 全体または CD トラックを MP3 に変換する前に、CD 上のオーディオデータをハードディスク上に抽出する必要があります。 これには raw CDDA (CD Digital Audio) データを WAV ファイルにコピーします。

sysutils/cdrtools スイートの一部である cdda2wav ツールは CD からオーディオデータを抽出したり、 情報を関係づけるのに使われます。

CD をドライブにいれて次のコマンドを (rootで) 実行して、 CD 全体を (トラックごとに) 個々の WAV ファイルに抽出できます。

# cdda2wav -D 0,1,0 -B

cdda2wav は ATAPI (IDE) CDROM ドライブにも対応しています。 IDE ドライブから抽出するには、 SCSI ユニット番号をデバイス名に置き換えて指定します。 たとえば IDE ドライブから七番目のトラックを抽出するには、 次のようにします。

# cdda2wav -D /dev/acd0 -t 7

-D 0,1,0 は SCSI デバイス 0,1,0 を表します。 これは cdrecord -scanbus の出力に一致します。

個々のトラックを抽出するには、 次のように -t オプションを使用します。

# cdda2wav -D 0,1,0 -t 7

上記の例はオーディオ CDROM の七番目のトラックを抽出します。 範囲を指定して、 たとえば一番目から七番目のトラックまで抽出したい場合、 次のようにします。

# cdda2wav -D 0,1,0 -t 1+7

dd(1) ユーティリティも ATAPI ドライブ上のオーディオトラックを展開するのに使われます。 何ができるか詳しいことは オーディオ CD の複製について Section 15.5.5 を参照してください。


7.3.3. MP3 のエンコード

現在、一般に好まれている MP3 エンコーダは lame です。 lame は Ports Collection の audio/lame に収録されています。

次のコマンドを実行すると、抽出した WAV ファイル audio01.wav を使って audio01.mp3 に変換します。

# lame -h -b 128 \
--tt "曲名" \
--ta "アーティスト名" \
--tl "アルバム名" \
--ty "" \
--tc "コメント" \
--tg "ジャンル" \
audio01.wav audio01.mp3

128 kbits が標準のビットレートのようです。 多くの人はさらに高音質の 160 kbits または 192 kbits を好むでしょう。 ビットレートが高くなるにつれて作成される MP3 ファイルは多くのディスク領域を消費しますが、より高音質となります。 -h オプションを指定すると “低速高品質” モードとなります。 --t ではじまるオプションは ID3 タグを設定します。 このタグにはたいてい曲の情報が含まれており、 MP3 ファイルに格納されます。 lame のマニュアルを参照すれば他のオプションが見つかるでしょう。


7.3.4. MP3 のデコード

MP3 からオーディオ CD を作成するには、 MP3 形式を非圧縮 WAV 形式に変換しなければなりません。 XMMSmpg123 の両方が MP3 から非圧縮ファイル形式への出力に対応しています。

XMMS でディスクへ書き出す方法は次の通りです。

  1. XMMS を起動します。

  2. 右クリックで XMMS メニューを表示します。

  3. Options から Preference を選択します。

  4. Output Plugin を “Disk Writer Plugin” に変更します。

  5. Configure を押します。

  6. 非圧縮ファイルを書き出すディレクトリを入力 (または選択) します。

  7. 普段通り XMMS へ MP3 ファイルを読み込みます。 音量は 100% で イコライザの設定はオフにします。

  8. Play を押します-- XMMS は MP3 を再生しているかのように表示しますが、 音声はきこえません。 実際には MP3 をファイルに出力しています。

  9. 再び MP3 を聴けるように Output Plugin を以前のように元に戻すのを忘れないでください。

mpg123 で標準出力へ書き出す方法は次の通りです。

  1. mpg123 -s audio01.mp3 > audio01.pcm を実行します。

XMMS は WAV 形式でファイルに書き出しますが、 mpg123 は MP3 を PCM オーディオデータに変換します。 両形式は cdrecord を使ってオーディオ CD を作成するのに利用することができます。 burncd(8) を使う場合は raw PCM データが必要です。 WAV ファイルを使用する場合、 それぞれのトラックの先頭に小さなノイズが入るのに気づくでしょう。 これは WAV ファイルのヘッダ情報です。 SoX (audio/sox の port または package からインストールできます) を使うと簡単に WAV ファイルのヘッダ情報を削除できます。

% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

FreeBSD での CD 作成の詳しい情報は Section 15.5 を参照してください。


7.4. ビデオ再生

寄稿: Ross Lippert.

ビデオ再生は今まさに成長中の新しいアプリケーション分野です。 辛抱強くしてください。 音声のようにすべてが順調にいくとは限りません。

設定をはじめる前に、あなたが持っているビデオカードのモデル、 そのカードが使用しているチップを確認する必要があります。 Xorg および XFree86 はさまざまなビデオカードに対応していますが、 ビデオ再生に申し分のない性能を発揮できるカードはわずかです。 あなたのビデオカードの利用している X サーバが対応している拡張機能のリストを得るには、 X11 を実行中に xdpyinfo(1) コマンドを実行してください。

さまざまなプレイヤやオプションを試すのに、 テストファイルとして小さな MPEG ファイルを用意しておくのはよい考えです。 いくつかの DVD プレイヤは DVD メディアを /dev/dvd として 初期設定しているか、ハードコーディングされているので、 次のように適切なデバイスにシンボリックリンクを張っておくと便利かもしれません。

# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd

devfs(5) の仕様により、 このように手動で作成されたリンクは再起動すると消えてしまいます。 システムの起動時にこれらのシンボリックリンクを自動的に作成するには、 /etc/devfs.conf に下記の設定を追加します。

link acd0 dvd
link acd0 rdvd

加えて、特別な DVD-ROM 機能を必要とする DVD 解読は、 DVD デバイスへの書き込み権限が必要です。

共有メモリ X11 インタフェースを改善するために、 いくつかの sysctl(8) 変数の値を増やすことが推奨されています。

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

7.4.1. ビデオ機能の決定

X11 においてビデオ表示性能を改善する方法はいくつかあると思われます。 ちゃんと動作するかどうかはハードウェアに大きく依存しています。 下記に説明したどの方法でも、 ハードウェアが変わると品質が変わるでしょう。 二つ目に、X11 でのビデオレンダリングは最近多くの注目を集めるトピックです。 そして XorgXFree86 のバージョンを追うごとに、著しく改良されているかもしれません。

よく知られたビデオインタフェースは次の通りです。

  1. X11: 共有メモリを用いた通常の X11 出力

  2. XVideo: X11 drawable 内でのビデオ再生に対応した X11 インタフェースの拡張機能

  3. SDL: Simple Directmedia Layer

  4. DGA: Direct Graphics Access

  5. SVGAlib: 低レベルコンソールグラフィックレイヤ


7.4.1.1. XVideo

XorgXFree86 4.X には XVideo (または Xvideo, Xv, xv) と呼ばれる拡張機能があります。 これは特別なアクセラレーションによって drawable オブジェクト に直接ビデオを表示することができます。 この拡張機能によって、 低速なマシンでも、とてもすぐれた品質の再生が可能となります。

この拡張機能が動作しているかどうかを調べるには、 xvinfo を使います。

% xvinfo

以下のような結果が得られたならば、あなたのカードは XVideo に対応しています。

X-Video Extension version 2.2
screen #0
  Adaptor #0: "Savage Streams Engine"
    number of ports: 1
    port base: 43
    operations supported: PutImage
    supported visuals:
      depth 16, visualID 0x22
      depth 16, visualID 0x23
    number of attributes: 5
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 2110)
      "XV_BRIGHTNESS" (range -128 to 127)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_SATURATION" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_HUE" (range -180 to 180)
              client settable attribute
              client gettable attribute (current value is 0)
    maximum XvImage size: 1024 x 1024
    Number of image formats: 7
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x36315652 (RV16)
        guid: 52563135-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x3e0, 0x7c00
      id: 0x35315652 (RV15)
        guid: 52563136-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x7e0, 0xf800
      id: 0x31313259 (Y211)
        guid: 59323131-0000-0010-8000-00aa00389b71
        bits per pixel: 6
        number of planes: 3
        type: YUV (packed)
      id: 0x0
        guid: 00000000-0000-0000-0000-000000000000
        bits per pixel: 0
        number of planes: 0
        type: RGB (packed)
        depth: 1
        red, green, blue masks: 0x0, 0x0, 0x0

リストにある形式 (YUV2, YUV12 など) が XVideo のすべての実装で存在するとは限りません。 対応している形式が少ないために、あるプレイヤでは悪影響が出る かもしれないことにも注意してください。

出力が以下のような場合、

X-Video Extension version 2.2
screen #0
no adaptors present

あなたのカードはおそらく XVideo に対応していないのでしょう。

あなたのカードが XVideo に対応していないとしても、 このことはあなたのディスプレイでビデオを表示するのに、 計算上の要求を満たすことがより困難になるだけのことです。 しかしながら、あなたのビデオカードおよびプロセッサによっては、 それでも満足のいく性能が得られるかもしれません。 性能を向上させるには Section 7.4.3 をよく読むとよいでしょう。


7.4.1.2. Simple Directmedia Layer

Simple Directmedia Layer (SDL) は Microsoft Windows, BeOS そして UNIX の間で サウンドとグラフィックスを効果的に利用した クロスプラットホームアプリケーションを 開発することを目的としたレイヤです。 SDL レイヤはハードウェアに対する低レベルの抽象的概念を提供し、 時には X11 インタフェースを使用するよりも効果的なことがあります。

SDL は devel/sdl12 からインストールできます。


7.4.1.3. Direct Graphics Access

Direct Graphics Access は、 プログラムが X サーバを介せず 直接フレームバッファを変更することを可能にする X11 の拡張機能です。 共有メモリを使用するために 低レベルのメモリマッピングが実行できることを期待しているので、 この機能を使うプログラムは root 権限で実行されなければなりません。

DGA 機能拡張は dga(1) によってテストとベンチマークができます。 dga 実行中はキーボードを押せばいつでもディスプレイ色が変更されます。 中止するには q を押します。


7.4.2. ビデオを扱う ports および packages

この節では Ports Collection で利用可能な、 ビデオの再生に使用できるソフトウェアについて論じます。 ビデオ再生は大変活発なソフト開発分野で、 さまざまなアプリケーションの機能は、 ここでの説明から省かざるをえません。

はじめに、FreeBSD で実行できるビデオアプリケーションの多くは、 Linux アプリケーションとして開発されたということを知ることは重要です。 これらのアプリケーションの多くはまだベータ版の品質です。 FreeBSD でこれらのビデオアプリケーションを使用する際に、 以下のような問題が起こるかもしれません。

  1. あるアプリケーションが、 他のアプリケーションの作成したファイルを再生できない。

  2. あるアプリケーションが、 自身の作成したファイルを再生できない。

  3. 二つの異なるマシンで構築した同じアプリケーションが、 同じファイルを再生する挙動がそれぞれ異なる。

  4. イメージサイズ変更のように見たところではありふれたフィルタが、 バグの多いサイズ変更ルーチンによってひどい人工物を作成する。

  5. アプリケーションがよくコアダンプする。

  6. 文書が port と一緒にインストールされない (文書は web サイトにあったり、その port の work ディレクトリの中に 残っていることがある)。

これらのアプリケーションの多くはさらに “Linux 主義” を主張するかもしれません。 すなわち、アプリケーションの作者が仮定した、 Linux ディストリビューションでのみ実装されている ある標準ライブラリの使用方法や Linux カーネルの特定の機能に起因する問題が生じるかもしれません。 必ずしも port 保守担当者がこれらの問題を把握して作業しているとは限らず、 次のような問題が発生する可能性があります。

  1. プロセッサの特性を検知するための /proc/cpuinfo の利用

  2. 本当はプログラムを終了させるはずであるのに、 停止させてしまうようなスレッドの誤用

  3. 一般的にアプリケーションとともに使用され、まだ FreeBSD の Ports Collection に収録されていないソフトウェアを必要とする

これまで、これらのアプリケーションの開発者は、 移植に必要だったその場しのぎの回避方法を最小化し 問題を解決するために port 保守担当者と協力しています。


7.4.2.1. MPlayer

MPlayer は最近開発され、 急激に成長しつつあるビデオプレイヤです。 MPlayer チームの目的は、 Linux や他の Unix 系 OS 上で高速性と柔軟性をもたらすことです。 このプロジェクトは、 チーム創設者が当時利用可能だったビデオプレイヤの ひどい再生能力にうんざりしたのをきっかけとして始まりました。 合理化された設計のために GUI が犠牲にされたと言う人もいます。 しかしながら、コマンドラインオプションおよびキーボード操作に 一度慣れれば非常によく動作します。


7.4.2.1.1. MPlayer の作成

MPlayermultimedia/mplayer にあります。 MPlayer は 構築の際にさまざまなハードウェアのチェックをするため、 あるシステムで作成されたバイナリは、 別のシステムで利用できないかもしれません。 したがって port から構築し、 バイナリパッケージを利用しないことが重要です。 さらに、Makefile や構築のはじめに説明されるように、 make のコマンドラインで多くのオプションを指定することができます。

# cd /usr/ports/multimedia/mplayer
# make
N - O - T - E

Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html

ほとんどのユーザにとっては port のデフォルトオプションで十分でしょう。 しかしながら、XviD コーデックが必要なら、 WITH_XVID オプションをコマンドラインで指定しなければなりません。 また、デフォルトの DVD デバイスを WITH_DVD_DEVICE オプションで定義することもできます (デフォルトでは /dev/acd0 が使用されます)。

この文書を執筆している時点では、 MPlayer の port は HTML 文書、そして mplayermencoder という二つの実行可能なバイナリを構築します。 mencoder はビデオを再エンコーディングするためのツールです。

MPlayer のための HTML 文書は非常に有益です。この章で不足した ビデオハードウェアおよびインタフェースに関する情報があれば、 MPlayer の文書は非常に詳細な補足になります。 UNIX のビデオ対応情報を探しているのなら、時間を割いて MPlayer の文書を読むべきなのは 明らかです。


7.4.2.1.2. MPlayer の使用

MPlayer を使用する人はすべて、 各自のホームディレクトリ内に .mplayer サブディレクトリを用意しなければなりません。 この必要となるサブディレクトリを作成するために、 次のコマンドを入力します。

% cd /usr/ports/multimedia/mplayer
% make install-user

mplayer のコマンドオプションはマニュアルに記載されています。 さらにより詳細な説明について知りたいなら、HTML 文書をご覧ください。 この節では、一般的な使用法についてほんの少し説明します。

さまざまなビデオインタフェースの一つを用いて testfile.avi というファイルを再生するには、 -vo オプションを指定します。

% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi

ビデオ再生の相対的性能は多くの要因に依存し、 ハードウェアに応じて著しく変わると思われるので、 これらのオプションをすべて試してみる価値はあるでしょう。

DVD を再生するには、 testfile.avidvd://N -dvd-device DEVICE に置き換えてください。 <N> には再生するタイトル番号を、 DEVICE は DVD-ROM のデバイスノードを指定します。 たとえば、/dev/dvd から 2 番目のタイトルを再生するには以下のようにします。

# mplayer -vo xv dvd://3 -dvd-device /dev/dvd

Note: デフォルトの DVD デバイスは、 MPlayer port の構築時に WITH_DVD_DEVICE で定義することができます。 デフォルトでは /dev/acd0 になります。 詳細はこの port の Makefile をご覧ください。

停止、休止、再生などをするにはキーの割り当てを調べてください。 mplayer -h を実行したり、 マニュアルを読めばわかります。

再生に関してさらに重要なオプションがあります。 全画面モードにする -fs -zoom オプションと、 性能を向上させる -framedrop オプションです。

mplayer に指定するコマンドラインが長くなりすぎないように、 .mplayer/config を作成してデフォルトのオプションを設定できます。

vo=xv
fs=yes
zoom=yes

最後に mplayer は DVD タイトルを .vob ファイルに抽出するのに使用できます。 DVD から 2 番目のタイトルをダンプするには次のようにします。

# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd

出力された out.vob ファイルは MPEG 形式で、 この節で説明される他のアプリケーションで編集できます。


7.4.2.1.3. mencoder

mencoder を使う前に、 HTML 文書を読んでオプションに慣れておくのはよい考えです。 マニュアルもありますが、HTML 文書なしではあまり有用ではありません。 品質向上、低ビットレート、形式変換をする方法が無数にあります。 これらの要素の調節具合で、性能が良かったり悪かったりするなど、 結果に違いが出るかもしれません。 ここにいくつか例を示します。 はじめは単純なファイルのコピーです。

% mencoder input.avi -oac copy -ovc copy -o output.avi

コマンドラインオプションを不適切に組合せると、 mplayer でさえ再生できない出力ファイルを作成してしまいます。 したがって、単にファイルを抽出したいときには、 mplayer-dumpfile オプションをつけます。

input.avi を音声に MPEG3 エンコードを使用して MPEG4 コーデックに変換するには次のようにします (audio/lame が必要です)。

% mencoder input.avi -oac mp3lame -lameopts br=192 \
     -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

これは mplayerxine で再生可能な出力ファイルを作成します。

DVD タイトルを直接再エンコードするためには、 上記のコマンドラインの input.avidvd://1 -dvd-device /dev/dvd に置き換えて、 root 権限で実行します。 はじめの作業結果に不満をもつと思われるので、 タイトルをファイルにダンプして、ファイルに対して作業することを おすすめします。


7.4.2.2. xine ビデオプレイヤ

xine ビデオプレイヤは オールインワンのビデオソリューションであるだけでなく、 プラグインで拡張できる再利用可能な基本ライブラリと 実行可能なモジュールを提供する広範囲のプロジェクトです。 multimedia/xine の port と package の両方からインストールできます。

xine プレイヤは開発途上であり まだ非常に荒削りですが、通常の利用には十分安定しています。 実用上、xine を使用するには高速なビデオカードとともに高速な CPU があるか、 またはビデオカードが XVideo 拡張に対応していることが必要です。 GUI も利用できますがすこし扱いにくいです。

この文書を執筆している時点では、 xine と一緒に提供されている CSS エンコードされた DVD を再生する入力モジュールはありません。 このモジュールがあるサードパーティの構築物はいくつかありますが、 これらのどれも FreeBSD の Ports Collection には収録されていません。

xineMPlayer と比べて 利用者にとって多くのことをしてくれますが、 と同時にきめの細かい制御ができません。なお、 xine ビデオプレイヤは、 XVideo インタフェース上で最良の性能を発揮します。

デフォルトでは、xine プレイヤは GUI 付きで起動するでしょう。 その後、メニューを使用して特定のファイルを開くことができます。

% xine

GUI なしでファイルを直ちに再生するには、 次のコマンドを実行します。

% xine -g -p mymovie.avi

7.4.2.3. transcode ユーティリティ

transcode というソフトウェアは、 プレイヤではなくビデオおよびオーディオファイルを再エンコードするためのツール一式です。 transcode を使えば、 stdin/stdout インタフェースとともに コマンドラインツールを用いることによって、 ビデオファイルの統合や、壊れたファイルの修復ができます。

multimedia/transcode port では、数多くのビルドオプションを指定できますが、 以下のコマンドラインのように transcode を構築することをおすすめします。

# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yes

ほとんどのユーザにとっては、この設定で十分です。

transcode の能力を示す例として、DivX ファイルを PAL MPEG-1 (PAL VCD) ファイルに変換する使用例を示します。

% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

作成された MPEG ファイル、 output_vcd.mpg は、 MPlayer を使って再生できます。 また、ファイルを CD-R メディアに書き込むことでビデオ CD も作成できます。 この場合には、multimedia/vcdimager および sysutils/cdrdao プログラムをインストールする必要があるでしょう。

transcode のマニュアルもありますが、 transcode wiki から、更なる情報や使用例を得てください。


7.4.3. さらに進んだ情報

FreeBSD 用のさまざまなビデオソフトウェアは急速に成長しています。 近い将来、ここにあげた問題の多くが解決している可能性は高いでしょう。 それまでの間、FreeBSD の A/V 能力を最大限発揮させたい人々は、 FAQ およびチュートリアルから得た知識を寄せ集めて、 わずかなアプリケーションを使用しなければならないでしょう。 この節は、読者に そのような付加的な情報へのポインタを提供するために存在します。

MPlayer の文書 は技術的に非常に有益です。 おそらく、UNIX ビデオの高水準な専門的知識を得たい人はすべて、 これらの文書を調べるべきです。 MPlayer メーリングリストを購読している人たちは、 文書を面倒がって読まない人には、それが誰であれ反感を持ちます。 そのため、彼らにバグ報告をするときには、マニュアルを読んでください。

xine HOWTO にはすべてのプレイヤに一般的な性能向上についての章が含まれています。

最後に、読者が試みるかもしれない 有望なアプリケーションをいくつかあげます。


7.5. TV カードの設定

原作: Josef El-Rayes. 改訂: Marc Fonvieille.

7.5.1. はじめに

TV カードを使用することで、 TV 放送をコンピュータで見ることができます。 これらの多くは RCA コンポジットまたは S-video 入力端子を備えており、 FM ラジオチューナを装備したカードもあります。

FreeBSD は Brooktree Bt848/849/878/879 または Conexant CN-878/Fusion 878a をビデオキャプチャチップに採用した PCI TV カードに bktr(4) ドライバで対応しています。 対応しているチューナを搭載したボードかどうかを bktr(4) マニュアルページの一覧を参照して確認してください。


7.5.2. ドライバの追加

TV カードを使用するために bktr(4) ドライバを読み込む必要があります。 /boot/loader.conf ファイルに以下の行を追加してください。

bktr_load="YES"

あるいは、カーネルにドライバを静的に組み込むこともできます。 この場合、次の行をカーネルコンフィギュレーションファイルに追加します。

device  bktr
device  iicbus
device  iicbb
device  smbus

カードコンポーネントは I2C バス経由で連結されているため、 bktr(4) ドライバに加えてこれらのデバイスドライバが必要になります。 編集したら新しいカーネルを構築し、インストールします。

システムにドライバを追加したら、計算機を再起動してください。 起動時に TV カードは以下のように認識されるでしょう。

bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

もちろん、これらのメッセージはハードウェアに応じて異なります。 とはいえ、チューナが正しく検知されているかどうか確認するべきです。 sysctl(8) による MIB の設定や、 カーネルコンフィギュレーションファイルオプションで、 検知されたいくつかのパラメータを変更できます。 たとえば、チューナを Philips SECAM チューナとして検知されるようにするには、 カーネルコンフィギュレーションファイルに以下の行を追加します。

options OVERRIDE_TUNER=6

または、直接 sysctl(8) を使用して変更します。

# sysctl hw.bt848.tuner=6

利用可能なオプションの詳細については bktr(4) マニュアルページおよび /usr/src/sys/conf/NOTES ファイルを参照してください。


7.5.3. 便利なアプリケーション

TV カードを使用するためには、以下のアプリケーションの一つをインストールする必要があります。

  • multimedia/fxtv はウィンドウ内に TV 映像を映します。 画像/音声/ビデオを取り込むこともできます。

  • multimedia/xawtv も TV アプリケーションです。 fxtv と同様の機能があります。

  • misc/alevt は文字放送 (ビデオテキスト/テレテキスト) のデコードと表示をします。

  • audio/xmradio は TV カードに搭載された FM ラジオチューナを使用するためのアプリケーションです。

  • audio/wmtune はラジオチューナのためのお手軽なデスクトップアプリケーションです。

他にも多くのアプリケーションが FreeBSD Ports Collection に収録されています。


7.5.4. トラブルシューティング

TV カードに関する問題が起きたときには、 bktr(4) ドライバが本当にビデオキャプチャチップおよびチューナに 対応しているか、オプションが正しく設定されているかどうかをまず確認してください。 TV カードに関するサポートやさまざまな質問に関しては、 freebsd-multimedia メーリングリストに参加したり、 過去のアーカイブを検索してみてください。


7.6. 画像スキャナ

寄稿: Marc Fonvieille.

7.6.1. はじめに

FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) API によって実現されており、 FreeBSD Ports Collection でも提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。

FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 設定を始める前に、 SANE がスキャナに対応しているか確認してください。 SANE には スキャナについての情報とその状況がまとめられている 対応デバイスの一覧 があります。また、FreeBSD の uscanner(4) マニュアルページにも対応 USB スキャナの一覧が記載されています。


7.6.2. カーネルのコンフィグレーション

前述のように、FreeBSD はスキャナのインタフェースとして SCSI と USB の両方に対応しています。 スキャナのインタフェースによって、必要となるドライバが異なります。


7.6.2.1. USB インタフェース

GENERIC カーネルにはデフォルトで USB スキャナに対応するためのデバイスドライバが搭載されています。 カスタムカーネルを使用する際には、 以下の行がカーネルコンフィグレーションファイルにあることを 確認してください。

device usb
device uhci
device ohci
device uscanner

マザーボードにどんな USB チップセットが実装されているかによって、 device uhcidevice ohci のどちらかが必要となります。ただし、両方を カーネルコンフィグレーションファイルに記載しても害はありません。

使用しているカーネルが GENERIC カーネルではなく、 カーネルを再構築したくなければ、 kldload(8) コマンドを使用して uscanner(4) デバイスドライバモジュールを直接読み込むことができます。

# kldload uscanner

このモジュールをシステムを起動するたびに読み込みたければ、 以下の行を /boot/loader.conf ファイルに追加してください。

uscanner_load="YES"

適切なドライバを組み込んだカーネルで再起動するか、 必要となるモジュールを読み込んだ後、 USB スキャナをシステムに接続します。 すると、メッセージバッファ (dmesg(8)) にスキャナが認識されたことを示すメッセージが出力されます。

uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

この例では、スキャナが /dev/uscanner0 デバイスノードを使用していることがわかります。


7.6.2.2. SCSI インタフェース

スキャナに付属しているインタフェースが SCSI であれば、 重要なのはどの SCSI ボードを使用すればよいか把握することです。 使用する SCSI チップセットによって、 カーネルコンフィグレーションファイルを調整する必要があります。 GENERIC カーネルは 一般に使用される SCSI コントローラのほとんどに対応しています。 NOTES ファイルを読んで、 適切な行をカーネルコンフィグレーションファイルに追加してください。 また、SCSI アダプタドライバに加えて、 以下の行をカーネルコンフィグレーションファイルに 記述する必要があります。

device scbus
device pass

カーネルを適切にコンパイルしてインストールすると、 システムの起動時にデバイスがメッセージバッファに出力されるはずです。

pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers

システムを起動する際にスキャナの電源を入れてなければ、 camcontrol(8) コマンドを使用して SCSI バスをスキャンし、 以下のように手動でデバイスを検出させることもできます。

# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful

すると、スキャナは SCSI デバイスの一覧に現れるでしょう。

# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

SCSI デバイスについての詳細は、scsi(4) および camcontrol(8) のマニュアルページをご覧ください。


7.6.3. SANE の設定

SANE システムは、 二つの部分、すなわちバックエンド (graphics/sane-backends) とフロントエンド (graphics/sane-frontends) に分割されています。 バックエンドはスキャナそのものに対するアクセスを提供します。 SANE対応デバイスの一覧 には、どのバックエンドが画像スキャナに対応しているかが記載されています。 デバイスを使用するためには、正しいバックエンドを決定するのは必須です。 また、フロントエンドはグラフィカルなスキャニングインタフェース (xscanimage) を提供します。

はじめに、 graphics/sane-backends の port または package をインストールしましょう。 次に、sane-find-scanner コマンドを使用して、 SANE システムで使用するバックエンドを検出します。

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

この出力から、 スキャナインタフェースの種類と システムに接続されているスキャナが使用するデバイスノードがわかります。 ベンダ名や製品のモデル名は表示されないかも知れませんが、 重要ではありません。

Note: USB スキャナではファームウェアを読み込む必要がある場合があります。 これはバックエンドのマニュアルページで説明されています。 sane-find-scanner(1)sane(7) のマニュアルページも読んでください。

スキャナがフロントエンドで認識されるか調べてみましょう。 デフォルトでは、SANE のバックエンドには scanimage(1) と呼ばれるコマンドラインツールが付属します。 このコマンドを使用すると、 デバイスの一覧を表示したり画像を取得することができます。 -L オプションを使うと、 スキャナデバイスの一覧が出力されます。

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

何も出力が得られなかったり、 スキャナが見つからなかったというメッセージが表示されたら、 scanimage(1) はスキャナを認識できなかったのでしょう。 このような場合は、バックエンドの設定ファイルを編集し、 使用するスキャナデバイスを定義する必要があります。 /usr/local/etc/sane.d/ ディレクトリには、 バックエンドが使用するすべての設定ファイルがあります。 このデバイスの認識による問題は、 特定の USB スキャナで発生するものです。

たとえば、 Section 7.6.2.1 で使用した USB スキャナを接続したシステムで sane-find-scanner コマンドを実行すると、以下のような情報が得られます。

# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

スキャナは正しく検出されました。 USB インタフェースを使用し、 /dev/uscanner0 デバイスノードに接続されていることがわかります。 次に、スキャナが正しく認識されているかどうか確認してみましょう。

# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

スキャナが認識されなかったので、 /usr/local/etc/sane.d/epson.conf ファイルを編集する必要があります。 このスキャナのモデルは EPSON Perfection® 1650 なので、 epson バックエンドを使用すればいいことがわかります。 バックエンドの設定ファイルに書かれているコメントを必ず読んでください。 設定ファイルを変更するのは非常に簡単です。 使用しているスキャナには不適切なインタフェースをすべてコメントアウトし (今回の場合は、USB インタフェースを使用するので scsi という語で始まる行をすべてコメントアウトします)、 ファイルの末尾に使用するインタフェースとデバイスノードを追加します。 この例では、以下の行を追加しました。

usb /dev/uscanner0

詳細と使用すべき構文は、 バックエンドのマニュアルページはもちろんのこと、 バックエンドの設定ファイルに書かれているコメントも読んでください。 以上の設定で、スキャナが認識されたかどうかを確認できます。

# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

USB スキャナが認識されました。 ブランドやモデルがスキャナに一致しなかったとしても、それほど重要ではありません。 着目すべきは `epson:/dev/uscanner0'という部分で、 バックエンド名とデバイスノードが正しく認識されていることがわかります。

scanimage -L コマンドを実行してスキャナが認識されたことがわかれば、設定は終了です。 デバイスはスキャンする準備ができました。

scanimage(1) コマンドを使用すると コマンドラインから画像を取得することができます。その一方で、 GUI を使用して画像を取得できると一層良いでしょう。 SANE は、簡素ですが役に立つグラフィカルなインタフェース xscanimage (graphics/sane-frontends) を提供しています。

Xsane (graphics/xsane) はもう一つのグラフィカルなスキャニングフロントエンドで、 人気があります。 Xsane には、さまざまなスキャニングモード (写真、FAX など)、 色補正、バッチスキャンなど先進的な機能があります。 これらのアプリケーションの両方とも GIMP のプラグインとして使用することができます。


7.6.4. 他のユーザがスキャナにアクセスすることを許可する

前述の操作には、 すべて root 権限が必要となります。 しかしながら、他のユーザがスキャナに アクセスできるようにすることも可能です。 そのためには、スキャナが使用するデバイスノードへの 読み込み権限と書き込み権限をユーザに与えます。 一例として、USB スキャナが、グループ operator が所有する、/dev/uscanner0 デバイスノードを使用しているものとします。 ユーザ joe を グループ operator に加えると、 彼はスキャナを使用できるようになります。

# pw groupmod operator -m joe

詳細は pw(8) のマニュアルページをご覧ください。 また、初期設定では、operator グループに所属するメンバのみが /dev/uscanner0 デバイスノードを読み出すことができます。 このデバイスノードに書き込めるようにするには、 適切な許可属性 (0660 または 0664) を設定する必要があります。 まず、/etc/devfs.rules に次の行を追加してください。

[system=5]
add path uscanner0 mode 660

次に、/etc/rc.conf に以下の行を追加して システムを再起動します。

devfs_system_ruleset="system"

/etc/devfs.rules で設定した内容についての詳細は、devfs(8) のマニュアルページをご覧ください。

Note: もちろん、ユーザをどんなグループ (特にグループ operator) に追加する時はいつでも、 セキュリティ上の理由から二度は検討を行うべきです。


Chapter 8. FreeBSD カーネルのコンフィグレーション

改訂および再構成Jim Mock. 原作Jake Hamby.

8.1. この章では

カーネルは FreeBSD オペレーティングシステムの中核をなすもの です。カーネルは、メモリ管理、セキュリティ制御の強制、ネットワー ク、ディスクアクセスなどを担っています。FreeBSD はどんどん動的に 構成することができるようになっていますが、まだ、時にはカーネルコ ンフィグレーションをやり直して、再構築する必要があります。

この章では、以下のことを扱っています。

  • なぜカスタムカーネルの構築が必要になることがあるのか。

  • コンフィグレーションファイルの書き方や、既存のコンフィグ レーションファイルの置き換え。

  • カーネルコンフィグレーションファイルから新しいカーネルを構 築する方法。

  • 新しいカーネルのインストール方法。

  • /dev 下に必要となる項目を作成する方法。

  • うまく行かないときの問題解決法。


8.2. なぜカスタムカーネルを作るか?

伝統的に、FreeBSD のカーネルは “モノリシック” (monolithic) カーネルと呼ばれるものでした。 これは、カーネルが単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ新しいカーネルを構築して、 コンピュータを再起動して新しいカーネルを動かさなれければならなかった ということです。

今日では FreeBSD は、カーネルの機能のかなりが必要に応じて動 的にカーネルに組み込んだり外したりできるモジュールにおかれている モデルへと、急速に移行しています。こうしてカーネルは (ノート PC の PCMCIA カードのように) 突如使えるようになったハードウェアに対 応したり、カーネルが作成された時点では必要なかった新たな機能を取 り入れられるようになります。くだけた表現では、これは KLD と呼ば れます。

しかしながら、いまだにいくらかは静的にカーネルを構成する必要 があります。ある場合においては、機能がカーネルとあまりに密接に結 びついているため、動的に組み込むことができません。ほかには、単に まだ誰もその機能に対する組み込み可能なカーネルモジュールを書く時 間をとっていないだけということもあります。

システムに合わせたカーネルの構築はほとんどすべての Unix ユーザが 避けて通ることのできない最も重要な通過儀礼の1つです。 この作業は、多くの時間を必要としますが、あなたの FreeBSD システムに多くの利益をもたらします。 広範囲のハードウェアをサポートしなければならない GENERICカーネルとは異なり、 システムに合わせたカーネルは あなたの PC のハードウェアのみをサポートします。これは、 次にあげるような利益をもたらします。

  • 素早く起動します。 カーネルはあなたのシステム上にあるハードウェアしか 検出を行わないので、 あなたのシステムの起動にかかる時間は劇的に短くなります。

  • メモリの消費量が減少します。 システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルは常に実メモリ上に存在しなければならないので、 これは重要なことです。 したがって、RAM が少ないシステムでは、 カーネルの再構築は大変重要です。

  • 追加のハードウェアをサポートします。 システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。


8.3. カスタムカーネルの構築とインストール

まず、 カーネル再構築に必要なディレクトリをざっと見てみましょう。 ここではディレクトリはすべて /usr/src/sys 以下の相対位置で示します。 また、/sys からもアクセス可能です。 ここには、カーネルの各部分を構成するサブディレクトリが いくつもあります。しかし、私たちの目的で最も重要なのは arch/conf です。 ここで、あなたの システムに合わせてカーネルコンフィグレーションを編集します。 それから compileディレクトリ、 ここはカーネルが作られる 場所です。 arch は、i386, alpha, pc98(これは 日本で普及している PC のための開発ブランチです)のいずれかを表します。 各アーキテクチャのディレクトリ内部にあるファイルはすべて そのアーキテクチャでのみ使用され、残りのコードは FreeBSD が他のプラットフォームに移植される際に共有されます。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれ各々のサブディレクトリに分かれている、 という論理的な構成に注意してください。

Note: もし、あなたのシステムに/usr/src/sys 以下のディレクトリがなければ、 カーネルのソースが インストールされていません。 もっとも簡単な方法は (rootで) /stand/sysinstall を用いて以下のようにすることです。 設定 (Configure) を選んでから 配布ファイル (Distribution) を選択し、src の中の sys をインストールしてください。 sysinstall が嫌いで、“公式” FreeBSD CDROM を利用できるなら、 コマンドラインからソースコードをインストールすることもできます。

# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

つぎに、 arch/confに移動して、 GENERIC コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください。たとえば次のようにします。

# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL

慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSDマシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL と呼ぶことにします。

Tip: カーネルコンフィグレーションファイルを、直に /usr/src の下に置くのはよい考えとはいえま せん。なにか問題が起きたときに、 /usr/src を消してやり直したいと思うかもし れません。その後で、あなたがカスタマイズしたカーネルコンフィグ レーションファイルを消してしまったことに気づくのに時間はかから ないでしょう。

カーネルコンフィグレーションファイルは他の場所において、 i386 ディレクトリにシンボリックリンクを張 る方がよいでしょう。

たとえば、次のようにします。

# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL   
# ln -s /root/kernels/MYKERNEL

Note: この作業は root 権限でおこなう必要があります。そうでなければ、 permission denied というエラーが出ます。

では、MYKERNEL をあなたの好きなエディタで編集してください。もし、 システムをインストールしたばかりならば、利用できるエディタは vi だけかもしれません。ここでは使い方の説明はしませんが、 参考図書 にあるような多くの本で詳しく説明 されていますので、 そちらを参照してください。FreeBSD にはより簡単なエディタとして ee があります。初心者の方であればこちらをエディタに選ぶとよいでしょう。 まずファイルの最初の方のコメント行を編集し、あなたのコンフィグ レーションに合せて変更した点などを記述して GENERIC と区別がつく ようにしておきましょう。

もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば、このファイルはとても親しみ やすいでしょう。しかし、DOSのようなその他の オペレーティングシステムしか知らない人から見れば、 GENERIC コンフィグレーションファイルはとても なじみにくいものかもしれません。そのような場合は、 コンフィグレーションファイル の節をゆっくりと注意深く読んでください。

Note: FreeBSD Project の最新のソースファイルと、あなたのソースツリーを同期させている 場合、アップデートを行う際には、必ず /usr/src/UPDATING ファイルをチェックしてください。 このファイルには、FreeBSD をアップデートする際の重要な問題がすべて書かれています。 /usr/src/UPDATING は常にあなたの FreeBSD ソースファイルのバージョンと同期していますので、 ハンドブックの情報よりも正確なものとなっています。

ここで、カーネルのソースコードをコンパイルしなくてはなりませ ん。手順は二つあり、どちらを使うかは、なぜカーネルを再構築するか と、動かしている FreeBSD のバージョンによって決まります。

  • カーネルのソースコードだけインストー ルしているなら、手順 1 にしたがってください。

  • 4.0 より前の FreeBSD を使っていて、 make world を行って FreeBSD 4.0 以上にアップグレードしないなら、 手順 1 にしたがってください。

  • (IPFIREWALL オプションを追加するなど のように) ソースコードを更新せずに新しいカーネルを構築するな らどちらの手順を用いても構いません。

  • make world の一環としてカーネルの再構築を行っているなら、 手順 2 にしたがってください。

手順 1: “伝統的な” 方法によるカーネル構築

  1. カーネルソースコードを生成するため、config(8) を実 行します。

    # /usr/sbin/config MYKERNEL
    
  2. カーネルを構築するためのディレクトリに移動します。

    # cd ../../compile/MYKERNEL
    
  3. カーネルをコンパイルします。

    # make depend
    # make
    
  4. 新しいカーネルをインストールします。

    # make install
    

手順 2: “新しい” 方法によるカーネル構築

  1. /usr/src ディレクトリに移動します。

    # cd /usr/src
    
  2. カーネルをコンパイルします。

    # make buildkernel KERNCONF=MYKERNEL
    
  3. 新しいカーネルをインストールします。

    # make installkernel KERNCONF=MYKERNEL
    

Note: FreeBSD 4.2 とそれ以前の場合は、 KERNCONF= ではなく KERNEL= としなければなりません。 2001 年 2 月 2 日以降の 4.2-STABLE は KERNCONF= を認識します。

何らかの方法であなたのソースツリーをアップグレードして いない 場合 (CVSup, CTM, anoncvs などを実行していない場合)、 config, make depend, make, make install の手順を実行してください。

新しいカーネルはルートディレクトリに /kernelという 名前でコピーされ、 今までのカーネルは /kernel.old という名前へ変更されます。では、システムをシャットダウン、 リブートして新しいカーネルを使ってください。 うまく行かない場合は、この章の終りの 問題が起きた場合には を参照してください。この章の新しい カーネルが起動しない 場合のリカバリの方法を注意深く読んでおいてください。

Note: FreeBSD 4.X 以前のバージョンを使っていて、 (サウンドカードなど) 新しいデバイスを追加した場合は、 使う前に /dev ディレクトリにデバイスノードを追加しなければならないかもしれません。 詳しくは、この章で後ほど出てくる デバイスノードの作成 をご覧ください。


8.4. コンフィグレーション ファイル

コンフィグレーション ファイルの一般的なフォーマット はとてもシンプルです。各行は1つのキーワードと1つ以上の 引数を含んでいます。見やすくするために、ほとんどのキーワードは 引数を1つしか書いてありません。 #に続くものはすべてコメントとして扱われ、 無視されます。ここでは、それぞれのキーワードについて だいたい GENERIC に出てくる順番で説明します。しかし、 お互いに関係のあるキーワードは、実際には GENERIC ファイル上に バラバラに現れていても、(ネットワーキングのように)1つにまとめ てあります。 おびただしい数の オプションの一覧が GENERICと同じディレクトリの LINT コンフィグ レーションファイルにあります。もし、ある行の目的や必要性に疑 問を持ったら最初に LINT をチェックしてください。

数字と二重引用符: FreeBSD 3.x と、それまでの全てのバージョンの FreeBSD における 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/doc/en_US.ISO8859-1/books/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        i386

マシンのアーキテクチャです。 これは i386, alpha, pc98 のいずれかでなければなりません。

cpu          I386_CPU
cpu          I486_CPU
cpu          I586_CPU
cpu          I686_CPU

上記はあなたのシステムの CPU タイプを指定します。 複数の行を書いても構いません。 (例: I586_CPU とすべきか I686_CPU とすべきかはっきり分からない場合。 しかしながら、カスタムカーネルを作る場合、あなたの持つ CPU だけを指定するのがベストです。 もしあなたの CPU がどのタイプか分からない場合、 dmesg(8) を使って起動メッセージを 調べるとよいでしょう。

Alpha アーキテクチャの場合は、 cpu に異なった値を用います。

cpu          EV4
cpu          EV5

もしあなたが Alpha マシンを使っている場合、 上記の内のどれかを指定して下さい。

ident          GENERIC

ここはカーネルの識別名を書きます。 あなたがカーネルに付けたい名前に書き換えて下さい (前記の例の MYKERNEL のように)。 ident に書いた名前はカーネルを起動する時に 表示されるので、 普段使っているカーネルと区別したいときは、 新しいカーネルに違う名前を付けると 良いでしょう(例: 実験的なカーネルを構築する場合)。

maxusers          n

maxusers オプションは重要なシステムテーブルの サイズを決定します。 この数字はあなたのマシンを同時に使うと思われるユーザー数と おおよそ等しくするのが良いでしょう。

FreeBSD 4.5 からは、これを明示的に 0 に設定すると、システムが設定を自動調整します[5]。それより前のバージョンの FreeBSD を使っているか、自分で管理したい場合、特に X ウインドウシステムを使ったり、ソフトウエアをコンパイルするなら、 maxusers は最低 4 にして下さい。 その理由は、maxusers によって計算される最も 重要なテーブルがプロセスの最大数で、それは 20 + 16 * maxusers となります。 もし、maxusers を 1 にすると、 同時に 36 プロセスしか利用できなくなりますが、 システムは起動時に 18 ほどのプロセスを立ち上げ、 X ウインドウシステムは 15 ほどのプロセスを立ち上げるので、 オンラインマニュアルを読むような単純なタスクでさえ フィルタ、展開、表示に 9 個のプロセスを利用するために、プロセス数不足になります。 maxusers を 64 に設定すると、 1044 個のプロセスを同時に利用することができるので、 殆どのユーザには充分でしょう。 もしあなたが別のプログラムを立ち上げる時、 恐れられている proc table full エラーが 発生する場合や、ftp.FreeBSD.org のように多数のユーザにより 同時に利用されるサーバを動かしている場合には、 この数字を増やしてカーネルを再構築することができます。

Note: maxusers はあなたのマシンにログインする ユーザ数を制限するものでは ありません。 それは単に、あなたのシステムを使うであろうユーザの最大数や それぞれのユーザがどれくらいのプロセスを走らせるかに 合わせて各種テーブルの大きさを設定するだけです。 同時にリモートログインする最大ユーザ数を制限するキーワードは pseudo-device pty 16 です。

# Floating point support - do not disable.
device          npx0     at nexus? port IO_NPX irq 13

npx0 はハードウェアコプロセッサか ソフトウエアエミュレータのどちらかである浮動小数点演算ユニットへの FreeBSD におけるインタフェースです。 これは任意選択ではありません

# Pseudo devices - the number indicates how many units to allocate.
pseudo-device   loop          # Network loopback

TCP/IP の汎用ループバックデバイスです。 localhost (すなわち 127.0.0.1) に対して telnet や FTP で接続すると、この疑似デバイスを通して戻ってきます。 これは必須です。

以下に続くすべては大体において追加設定項目です。 詳細は各項目の次に書かれている注意書きを参照して下さい。

#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 他) を持っている場合はコメントアウトして下さい。

Note: FreeBSD の浮動小数点エミュレーションルーチンはあまり正確では ありません。 もしあなたが浮動小数点コプロセッサを持っておらず、 かつベストな演算精度が必要であれば、GNU の浮動小数点サポートを 利用する GPL_MATH_EMULATE を使ってみて下さい。 このオプションはライセンス上の理由によりデフォルトでは 含まれていません。

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          UFS_DIRHASH  #Improve performance on big directories

このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化するコードを有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、メモリが貴重で ディスクアクセス速度がそれほど重要でない 小規模なシステムでは削除するとよいでしょう。

options          SOFTUPDATES  #Enable FFS Soft Updates support

このオプションは、カーネル内の Soft Updates 機能を有効にし、 ディスクへの高速な書き込みを支援します。 4.X ブランチではデフォルトで有効にされましたが、 有効になっていない可能性もあります。 mount(8) の出力を見て、有効になっているかどうか確認してください。 soft-updates オプションが見当たらなければ、 tunefs(8) か、新規のファイルシステムについては newfs(8) で有効にする必要があります。

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 を実行して下さい。

options          NFS          #Network Filesystem
options          NFS_ROOT     #NFS usable as root device, NFS required

ネットワークファイルシステム。 Unix ファイルサーバから TCP/IP を介してパーティションを マウントするのでない限り、これらの行をコメントアウトして下さい。

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 にマウントされる、 ファイルシステムの “ふりをする” もので、 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(1), talk(1) などのメッセージや、 カーネルからのコンソールメッセージが表示されます。

options          USERCONFIG          #boot -c editor

このオプションは起動メニューからコンフィグレーションエディタ を起動することができるようにします。

options          VISUAL_USERCONFIG   #visual boot -c editor

このオプションは起動メニューからビジュアルコンフィグレーション エディタを起動できるようにします。

Note: FreeBSD バージョン 5.0 以降では、新しく device.hints(5) を利用する方法が採用され、userconfig は使われなくなりました。 device.hints(5) に関する詳しい情報は Section 12.5 をご覧ください。

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 のメッセージのサポート。 これもカーネルサイズを数百バイト大きくするだけです。

Note: ipcs(1) コマンドを実行するとこれらの System V 機能を使っているプロセスのリストを表示します。

options    P1003_1B        #Posix P1003_1B real-time extensions
options     _KPOSIX_PRIORITY_SCHEDULING

リアルタイム拡張が 1993 POSIX に追加されました。 Ports コレクションの内のいくつかのアプリケーション (たとえば Star Office) はこれを使っています。

options        ICMP_BANDLIM        #Rate limit bad replies

このオプションは ICMP エラー応答のバンド幅制限を可能にします。 サービス不能パケットによる攻撃からマシンを保護するために必要です。

# 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 は、現時点では限定的な対応を提供しています。 MCA の対応状況に関する詳細は、 /usr/src/sys/i386/conf/LINT をご覧ください。

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

ATA ディスクドライブには 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 は仮想的にすべてのプラットフォームで有効であるべきです。

# 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 つのシリアルポートです。

Note: もしあなたが内蔵モデムを COM4 に、シリアルポートを COM2 に設定している場合、FreeBSD からアクセスするには、 (IRQ2=IRQ9 という、不明瞭な技術的理由により) モデムの IRQ を 2 に変更する必要があります。 もしマルチポートシリアルカードを持っていてこれらの設定の正しい 数値に関する情報がほしい場合はマニュアルページ 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

パラレルポートプリンタのサポートです。

Note: 上の 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

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-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 の後の 数字 は、 生成される pty の数を示します。もし同時にデフォルトの 16 より多くの xterm ウィンドウやリモートログインが 必要な場合、必要に応じてこの数字を増やして下さい。 最大は 256 です。

pseudo-device   md            # Memory “disks”

メモリディスク疑似デバイス。

pseudo-device   gif

または

pseudo-device   gif     4     # IPv6 and IPv4 tunneling

この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 FreeBSD 4.4 からは、gif デバイスは “auto-cloning (自動複製)” しますので、 (gif のあとに数値がこない) はじめの例を使ってください。 それより前のバージョンの FreeBSD では、数値が必要です。

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 モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 tcpdump(1) を使ってチェックをすることもできます。

Note: bpf 疑似デバイスは、dhclient(8) がデフォルトルータ (ゲートウェイ) の IP アドレスなどを取得する ためにも使われています。DHCP を使っているなら、これはコメント アウトしないでください。

# 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 を参照して下さい。


8.5. デバイスノードを作る

Note: FreeBSD 5.0 以降を動かしているなら、 この節を飛ばして構いません。そのバージョンでは devfs(5) を用いて、ユーザに意識させずにデバイスノードを割り当てています。

カーネル内のほとんどすべてのデバイスは対応する “node” エントリが /dev ディレクトリにあります。これらのノードは普 通のファイルのように見えますが、実際にはプログラムがデバイスに アクセスするのに用いるカーネル内への特別なエントリです。 シェルスクリプトである /dev/MAKEDEVはオペレーティング システムを最初にインストールする時に実行され、サポートされてい る大部分のデバイスのノードを作ります。しかし、 すべての ノードが作られるわけではありませんので 新しいデバイスのサポートを加える時は対応するエントリがこのディ レクトリにあるかどうか確認してもしなければ、作ってください。 以下に例を示します。

IDE CD-ROMのサポートをカーネルに加えるとします。次の行 を加えます。

device acd0

これにしたがって、/devディレクトリに acd0 で始まるエントリをさがしてください。 1文字が後ろにつくかもしれません。 後ろについた文字が c であるか、先頭に r のつくエントリは “raw” デバイスを示します。 それらのファイルがないことが明らかになったとします。そこで /dev ディレクトリに移動して次のようにタイプします。

# sh MAKEDEV acd0

スクリプトの実行が終ったら /devacd0cracd0c エントリがあることを確認してください。これによ り正しく実行されたことがわかります。

サウンドカードの場合、以下のコマンドで対応する エントリが作成されます:

# sh MAKEDEV snd0

Note: サウンドカードのようなデバイスのノードを作る場合で、もし他 の人がマシンにアクセスするようであれば、そのデバイスを /etc/fbtab ファイルに追加して外部からのアクセスから 保護するのが望ましいでしょう。このファイルの詳細については fbtab(5) を参照してください。

GENERIC に含まれていないデバイスはエントリがありませんから、以上 の簡単な手順をおこなうことになります。

Note: すべての SCSI コントローラは同じ /dev の エントリを使用しますのでノードを作る必要はありません。 またネッ トワークカードと SLIP/PPP 疑似デバイスは /dev にはエント リがありませんのでこれらについても作る必要がありません。


8.6. 問題が起きた場合には

カスタムカーネルを作る場合に起きるトラブルは、 次の 5 種類に分けられます。

config コマンドの失敗

カーネルコンフィグレーションファイルに設定を行なってから config(8) コマンドが失敗したのであれば、 おそらくファイルのどこかに単純な間違いがあります。 さいわい、config(8) はトラブルの起きた行番号を出力しますので vi で素早く見つけることができます。 例えば、次のように出力された場合

config: line 17: syntax error

vi のコマンドモードで 17G とタイプすれば、 問題のところへ飛ぶことができます。 GENERIC カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。

make コマンドの失敗

make コマンドが失敗した場合には、 カーネル設定で config(8) がとらえられなかったような間違いをしていることが多いようです。 もう一度コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 FreeBSD general questions メーリングリスト へあなたのカーネルコンフィグレーションファイルをつけてメールしてください。 誰かが素早く間違いを見つけてくれるでしょう。

新しいカーネルのインストールの失敗

カーネルが無事コンパイルできたのに、インストールに失敗 (make install または make installkernel に失敗) したら、最初に確認すべきことは、システムがセキュアレベル 1 以上で動いていないかどうかです (init(8) 参照)。 カーネルのインストール時には、カーネルから immutable (変更不可) フラグを外して、 新しい方に変更不可フラグを設定しようとします。セキュアレベル 1 以上では、システム内のどのファイルからも変更不可フラグを外せないため、 カーネルのインストールはセキュアレベル 0 以下で行わなければなりません。

カーネルが起動しない

新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 それは、FreeBSD のブートローダで起動したいカーネルを選択するだけです。 システムが 10 からカウントダウンしている時に、この機能が使えます。 Enter キー以外の任意のキーを押して、 unload と入力してから、 boot kernel.old か他の正常に起動するカーネルを入力してください。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。

問題のないカーネルで起動した後に あなたのコンフィグレー ションファイルを調べ、 再び構築を試みてください。 /var/log/messages ファイルにはすべての成功した 起動時のカーネルメッセージやその他の記録があり、これ は助けになる情報の一つでしょう。また、 dmesg(8) コマンドは現在の起動時のカーネルメッ セージを出力します。

Note: カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする 時に、 その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん。またできる限り早く動作しているカーネルを本来の kernelの位置に移動させてください。 そうしないと ps(1) のようなコマンドが正しく動きません。 make でインストールされたカーネルのファイルを (別のカーネルに戻すために) “アンロック” するための特別 のコマンドは

# chflags noschg /kernel

です。これができないのなら、securelevel(8) を 0 より大きい値にしているのかもしれません。 /etc/rc.confkern_securelevel-1 に変更して再起動してください。新し いカーネルに満足したら、前の設定に戻してよいでしょう。

また、 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように “ロック” するには 次のようにします。

# chflags schg /kernel
カーネルは動きますが ps(1) は動きません!

システムユーティリティと異る バージョンのカーネルをインストールした場合、例えば 4.x のカーネルを 3.x システム上にインストールするような場合、 ps(1)vmstat(8) のような多くの システムステータスコマンドは動かなくなります。 libkvm を再コンパイルして、 これらのユーティリティを作りなおす必要があります。 これは、カーネルとそれ以外で異なるバージョンを組み合わせて オペレーティングシステムを使用することが推奨されない理由の 一つとなっています。


Chapter 9. プリンタの利用

寄稿: Sean Kelly. 改訂:Jim Mock.

9.1. この章では

FreeBSD は古いインパクトプリンタから最新のレーザープリンタまで幅広いプリンタが利用でき、 実行しているアプリケーションから高品質な印刷出力が行えます。

FreeBSD はネットワーク上のプリンタサーバとして動作するように設定することもできます。 この機能は、他の FreeBSD コンピュータや、WindowsMac OS ホストから印刷ジョブを受け取ることができます。 FreeBSD は印刷ジョブを 1 つずつ処理することを保証します。 また、どのユーザやマシンが最も多く印刷しているかの統計を取り、 どの印刷物が誰の物か表示する “バナー” ページの作成などを行うことができます。

この章を読めば以下のことがわかります。

  • FreeBSD プリントスプーラの設定方法。

  • 入力ドキュメントをプリンタが扱える印刷フォーマットへ変換するなどといった、 特別な印刷ジョブを別に取り扱うための印刷フィルタのインストール方法。

  • 印刷物へのヘッダやバナーの適用方法。

  • 他のコンピュータに接続されたプリンタへの印刷方法。

  • ネットワークに直接接続されたプリンタへの印刷方法。

  • 印刷ジョブの上限サイズや特定のユーザからの印刷拒否といった、 プリンタの制限の制御方法。

  • 印刷の統計とプリンタの使用状況の取得方法。

  • 印刷問題のトラブルシューティング方法。

この章を読み始める前に以下を済ませておいてください。

  • 新しいカーネルの設定とインストール方法について理解すること (Chapter 8)。


9.2. はじめに

FreeBSD でプリンタを使うために、それらを LPD スプーリングシステムとしても知られる Berkeley ラインプリンタスプーリングシステムで動作するように設定する必要があります。 これは FreeBSD での標準的なプリンタ制御システムです。 この章では、しばしば単に LPD と呼ばれる、 LPD スプーリングシステムを紹介し、 その設定方法について説明します。

あなたがすでに LPD やその他のプリンタスプーリングシステムに詳しいのなら、 スプーリングシステムの設定 まで読み飛ばしてもかまいません。

LPD はホストのプリンタに関するあらゆることを制御します。 ここで言う制御としては、次のことがあげられます。

  • ホストに接続されたプリンタ、 あるいはネットワーク上の他ホストに接続されたプリンタに対するアクセス制御を行ないます。

  • ファイルをプリントする要求に対して許可を与えます。 この要求は特にジョブと呼ばれています。

  • 各々のプリンタのキューを管理することにより、 複数のユーザがあるプリンタに対して同時にアクセスすることを防ぎます。

  • ヘッダページ (バナーまたは バーストページとしても知られています) をプリントすることができます。 これにより、 プリントアウトの山の中から自分がプリントしたジョブを見つけやすくなります。

  • シリアルポートに接続したプリンタ用に通信パラメータを管理します。

  • ネットワーク経由で他のホスト上の LPD スプーラにジョブを送ることができます。

  • 様々なプリンタ言語やプリンタの能力に応じてジョブの形式を整えるため、 特別なフィルタを起動することができます。

  • プリンタの使用に対して課金を行なうことができます。

設定ファイル (/etc/printcap) を通して、専用のフィルタプログラムを用いることにより、 多種多様なプリンタ機器に対して、上述の機能の全部または一部を LPD システムに行なわせることができます。


9.2.1. どうしてスプーラを使うべきなのか

あなたのシステムを利用するのがあなた一人だけだとしたら、 アクセス制御もヘッダページもプリンタ利用に対する課金も必要ないのに、 なぜわざわざスプーラに煩わされなければならないのか疑問に思うかも知れません。 プリンタに対する直接アクセスを許可することもできるのですが、 とにかくスプーラを使用するべきです。その理由は、

  • LPD はジョブをバックグラウンドで処理します。 データがプリンタに送信されるまで待つ必要がなくなります。

  • LPD ではジョブをフィルタを通してプリントすることが簡単にできます。 これにより、印刷物のヘッダに時刻や日付を入れたり、 特別なファイル形式 (TeX の DVI ファイルなど) をプリンタが処理できる形式に変更することができ、 これらの作業を手動で行なう必要がなくなります。

  • プリント処理を行なうフリー、 または商用のプログラムのほとんどは、 システムのスプーラとやりとりするように作られています。 スプーリングシステムをセットアップすることで、 今後加えるかもしれない、あるいは、 すでに持っている別のソフトウェアをより簡単にサポートすることができるでしょう。


9.3. 基本的なセットアップ

LPD スプーリングシステムを用いてプリンタを使用するためには、 プリンタ機器と LPD 用ソフトウェアの両方を準備する必要があります。 本文書では次の二段階のレベルに分けて説明をします。

  • プリンタを接続する方法、 プリンタにどのように通信するかを LPD に指示する方法や、 プレインテキストをプリンタで印字する方法については、 プリンタの簡単な設定をご覧ください。

  • 様々な形式のファイルを印字する方法、 ヘッダページを印字する方法、 ネットワーク経由でプリンタに印字する方法、 プリンタを制御する方法、 プリンタの使用に対する課金を行なう方法についてはプリンタ設定上級編をご覧ください。


9.3.1. プリンタ設定導入編

この節では、プリンタ機器やプリンタを使用するための LPD 用ソフトウェアを設定する方法について述べます。 この節の概要は次のとおりです。

  • プリンタ機器の設定では、 プリンタをコンピュータに接続するためのヒントがいくつか書かれています。

  • ソフトウェアの設定では、 LPD のスプーラ設定ファイル (/etc/printcap) の設定方法について書かれています。

データをプリンタに送るためにシリアルまたはパラレルインタフェースではなく、 ネットワークプロトコルを使用する場合は、 ネットワークにおけるデータストリームインタフェースを持つプリンタをご覧ください。

この節のタイトルは “プリンタ設定導入編” ですが、 実際の設定はかなり複雑です。 プリンタをコンピュータに接続し、 LPD スプーラを起動させることは一番困難な作業です。 ヘッダページを出力させたり課金したりするオプションの設定は、 一度プリンタがうまく動くようになればとても簡単です。


9.3.1.1. プリンタ機器の設定

この節では、プリンタに PC を接続するための様々な方法について説明しています。 ここでは、ポートやケーブルの種類、 FreeBSD がプリンタとの通信に必要なカーネルコンフィグレーションについても言及しています。

もしプリンタが既に接続されていて、 他のオペレーティングシステム上でプリンタからの印字に成功している場合は、 ソフトウェアの設定まで読み飛ばすことが多分できるでしょう。


9.3.1.1.1. ポートとケーブル

最近の PC 用のプリンタほとんどには次のインタフェースの一つもしくは両方がついています。

  • シリアルインタフェースでは、 プリンタにデータを送信するためにコンピュータにあるシリアルポートが使用されます。 シリアルインタフェースはコンピュータ業界で共通して使用されています。 そのケーブルは容易に手に入りますし、簡単に自作することもできます。 シリアルインタフェースの場合は時々、 特別なケーブルや何か複雑な通信方式選択の設定が必要になることがあります。

  • パラレルインタフェースではプリンタにデータを送信するために、 コンピュータにあるパラレルポートを使用します。 パラレルインタフェースは PC 業界では良く使われます。 ケーブルの入手は容易ですが、 自作するのはシリアルよりも困難です。 パラレルインタフェースには通常、通信方式の選択はなく、 設定は極めて単純です。

    パラレルインタフェースは “セントロニクス” インタフェースとして知られています。 これは、プリンタ用のコネクタタイプとして採用された後に名付けられました。

シリアルインタフェースはパラレルインタフェースよりも普通はデータの伝送速度が遅くなります。 パラレルインタフェースでは、通常、 (コンピュータからプリンタへの) 単方向通信のみを行なうのに対して、 シリアルインタフェースは双方向通信を行ないます。 FreeBSD でも IEEE1284 準拠のケーブルを使えば、 最近のパラレルポート (EPP や ECP) とプリンタの多くで双方向通信を行なうことができます。

通常、プリンタで双方向通信が必要となるのは、プリンタが PostScript 言語に対応しているときだけです。 PostScript プリンタからの通信は非常に多くなることがあります。 PostScript ジョブは、実際にはプリンタに送信されるプログラムです。 印字作業を行う必要は必ずしありませんし、 プログラムの結果を直接コンピュータに返してもよいのです。 PostScript プリンタでは双方向通信を使って PostScript プログラムのエラーや紙づまりといった問題をコンピュータに報告します。 ユーザはそれらの情報を知りたいと思うかも知れません。 また、PostScript プリンタで課金作業をもっとも効率よく行なうためには、 双方向通信が必要となります。 この方法ではまず、プリンタの現在のページカウント (起動してから今まで何枚の紙を印字したか) の情報を得ます。 次に、ユーザのジョブを実行し、終了後、再びページカウントを得ます。 この二つの数を差によって、 課金対象となる紙の枚数を知ることができるのです。


9.3.1.1.2. パラレルポート

プリンタをパラレルインタフェースを使って接続する場合は、 セントロニクスケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタやコンピュータに付属する説明書に書かれているはずです。

その際、 どのパラレルポートを使用したかを覚えておいてください。 FreeBSD では最初のポートは /dev/ppc0、 二番目 /dev/ppc1 であり、 三番目以降も同様に続きます。 プリンタのデバイス名にも同じ形式が使われており、 最初のパラレルポートに接続されたプリンタは /dev/lpt0 などとなります。


9.3.1.1.3. シリアルポート

シリアルインタフェースを使ってプリンタを使う場合は、 適切なシリアルケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタ、コンピュータ、あるいは両方に付属する説 明書に書かれているはずです。

“適切なシリアルケーブル” が良くわからないときは、 次のどれかを試してみてください。

  • モデム 用ケーブルでは、 それぞれのピンは他方のコネクタの対応するピンと線でつながっています。 このタイプのケーブルは “DTE-DCE” 間ケーブルとしても知られています (訳注: 日本ではストレートケーブルという名前で売られています)。

  • ヌルモデム 用ケーブルでは、 あるピンは対応するピンとを接続していますが、 あるピン (たとえば、データ送信用とデータ受信用のピン) が交差して接続したり、 いくつかのピンは内部で短絡していたりします。 このタイプのケーブルは、 “DTE-DTE” 間ケーブルと呼ばれています (訳注: 日本ではクロスケーブルという名前で売られています)。

  • A シリアルプリンタ用ケーブルは、 ある特定のプリンタで必要とされるものです。 ヌルモデムケーブルと似ていますが、 内部で短絡させる代わりに、 ある信号を他方側に送るために使用しています。

この他に、 プリンタ用の通信パラメータを設定する必要があります。 通常、プリンタのフロントパネルや DIP スイッチによって制御します。 コンピュータとプリンタの双方で設定できる最高の通信速度 [bps] (ビット/秒、 ボーレートと示されているときもある) を選んでください。そして、データビット (7 または 8)、 パリティ (偶/奇/なし)、ストップビット (1 または 2) を選んでください。 そして、フローコントロールの有無 (制御なし、または XON/XOFF (“イン・バンド” または “ソフトウェア” フローコントロールとも呼ばれる)) を選びます。 以下に続くソフトウェアの設定のために、 ここでの設定を覚えておいてください。


9.3.1.2. ソフトウェアの設定

本節では FreeBSD の LPD スプーリングシステムで印字をおこなうために 必要となるソフトウェアの設定について説明しています。

本節の概要は次のようになります。

  1. プリンタで使用するポートのために、必要があれば、 カーネルの書き変えをおこないます。「カーネルの変更」で、 このためにしなくてはならないことを説明しています。

  2. パラレルポートを使用している場合は、 パラレルポートのための通信モードを設定します。 詳細は、 「 パラレルポートの通信モードを設定する」 で説明しています。

  3. オペレーティングシステムからプリンタにデータが送ら れているかをテストします。「プリンタとの通信状況を調べる」で、 どのようにテストするかの提案をいくつかおこなっています。

  4. ファイル/etc/printcapを変更し、 LPD の設定をおこないます。 この節で、どのように変更するかを説明しています。


9.3.1.2.1. カーネルの変更

オペレーティングシステムのカーネルの コンパイルをおこなうことによって、 指定されたデバイスが機能するようになります。シリアル、 または、パラレルインタフェースをプリンタで使用する場合、 必要なデバイスがこの指定の中に含まれていなくてはなりません。 したがって、 必要なデバイスがカーネルに組み込まれていない場合、 追加のシリアル、または、パラレルポートをサポートするために、 カーネルの再コンパイルが必要となるかもしれません。

シリアルポートが現在使用しているカーネルで サポートされているかどうかを調べるためには、 次のように入力します。

# grep sioN /var/run/dmesg.boot

ここで、N はシリアルポートの番号を示し、この番号は 0 から始まります。 次のような出力があった場合、 カーネルはそのポートをサポートしています。

sio2 at port 0x3e8-0x3ef irq 5 on isa
 sio2: type 16550A

パラレルポートが現在使用しているカーネルで サポートされているかどうかを調べるためには、 次のように入力します。

# grep ppcN /var/run/dmesg.boot

ここで、N はパラレルポートの番号を示し、この番号は 0 から始まります。 次のような出力があった場合、 カーネルはそのポートをサポートしています。

ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold

上記の出力が得られない場合、プリンタを使うため、 オペレーティングシステムにパラレル、または、 シリアルポートを認識し、使用できるようにするためには カーネルを変更する必要があります。

シリアルポートをサポートさせるには、「 FreeBSDカーネルのコンフィグレーション」の節をご覧く ださい。パラレルポートをサポートさせる場合も、その節と、 あわせて、 この節に続く節もご覧ください。


9.3.1.3. ポート用エントリを /dev に追加する

Note: FreeBSD 5.0 には、必要に応じてデバイスノードを自動的に作成する devfs が採用されています。 devfs を有効にした FreeBSD を実行しているのなら、 この節を読み飛ばしても問題ありません。

カーネルがシリアル、または、パラレルポートを通じての通信をサポートしていたとしても、 システム上で動いているプログラムがデータの送受信をおこなうための ソフトウェアインタフェースがさらに必要になります。 そのインタフェースは、/dev ディレクトリにあるエントリに相当します。

/dev エントリにポートを加えるために

  1. su(1) コマンドで root になります。 パスワードを聞かれたら、root 用のパスワードを入力します。

  2. /dev ディレクトリに移動します。

    # cd /dev
    
  3. 次のように入力します。

    # ./MAKEDEV port
    

    ここで、port は作成するポート名です。 1 番目のパラレルポートに接続されているプリンタには lpt0, 2 番目のパラレルポートに接続されているプリンタには lpt1 を使い、以下同様にしてください。 1 番目のシリアルポートには ttyd0, 2 番目のシリアルポートには ttyd1 を使い、 以下同様にしてください。

  4. 次を入力し、デバイスのエントリができたか確認します。

    # ls -l port
    

9.3.1.3.1. パラレルポートの通信モードを設定する

パラレルインタフェースを使用している場合、FreeBSD では、 割り込み駆動型にするか、 プリンタとの通信の状況をカーネルに監視させるかのいずれかを選択できます。 FreeBSD 4.X と 5.X の汎用プリンタデバイスドライバ (lpt(4)) は ppbus(4) システムを利用しています。 これは ppc(4) ドライバを使ってパラレルポートのチップセットを制御します。

  • GENERIC カーネルでは割り込み駆動方式がデフォルトになっています。 この方式では、 オペレーティングシステムはプリンタがデータを受け付けられるかどうかを調べるために、 IRQ ラインを一つ使用します。

  • 監視方式では、 オペレーティングシステムにプリンタがもっとデータを受け付けられるかどうかを繰り返し尋ねるように指示します。 そして、受け付けるという応答を受けたとき、 カーネルはさらなるデータを送信します。

割り込み駆動方式は一般的にいくらか高速になりますが、貴重な IRQ ラインを一つ消費します。 HP の新しいプリンタの一部には、明らかに何かしらのタイミングの問題 (まだ正確にはわかっていません) で割り込みモードでは正常に動作しないものがあると言われています。 これらのプリンタにはポーリングモードが必要になります。 どちらかうまく機能する方を使ってください。 一部のプリンタはどちらの方式でも動作しますが、 割り込みモードでは苦痛を感じるほど低速です。

通信モードを設定するためには 2 つの方法があります。 1 つはカーネルを変更することで、もう一つは lptcontrol(8) プログラムを使用する方法です。

カーネルを設定することによって、 通信モードを変更する。

  1. カーネルコンフィグレーションファイルを変更します。 ppc0 のエントリを探してください。 2 番目のパラレルポートを設定するときは、代わりに ppc1 を使います。 以下、3 番目のポートは ppc2 となっていきます。

    • 割り込み駆動方式にする場合は、FreeBSD 4.X では irq 指定を追加します。

      device ppc0 at isa? irq N
      

      ここで、N はパラレルポート用の IRQ 番号です。

      FreeBSD 5.X では、/boot/device.hints ファイルの以下の行を編集して、 N を適切な IRQ 番号に置き換えてください。

      hint.ppc.0.irq="N"
      

      カーネルの設定ファイルには ppc(4) ドライバも入れなければなりません。

      device ppc
      
    • 監視方式を使用する場合は、 irq を追加してはいけません。

      FreeBSD 4.X では、カーネルコンフィグレーションファイルで以下の行を使用してください。

      device ppc0 at isa?
      

      FreeBSD 5.X では、/boot/device.hints ファイルの以下の行を削除するだけです。

      hint.ppc.0.irq="N"
      

      FreeBSD 5.X では、 場合によってはこれだけではポートをポーリングモードにするには十分ではありません。 多くの場合これは acpi(4) ドライバと併せて動作します。 これはデバイスのプローブとアタッチを行うので、 プリンタポートへのアクセスモードを制御できます。 問題を修正するために acpi(4) の設定を確認してください。

  2. ファイルをセーブし、config プログラムを起動し、 カーネルの構築、インストールをおこないます。そして、 リブートしてください。詳細は、「 FreeBSDカーネルのコンフィグレーション」を参照 してください。

lptcontrol(8) で通信モードを設定する場合

  1. lptN をイベント駆動方式に設定する場合は、 次のように入力します。

    # lptcontrol -i -d /dev/lptN
    
  2. lptN を監視方式に設定する場合は、次のように入力します。

    # lptcontrol -p -d /dev/lptN
    

これらのコマンドを /etc/rc.local ファイルに追加 しておくと、システムをブートする度に通信モードを設定する ことができます。詳細については、 lptcontrol(8) をご覧ください。


9.3.1.3.2. プリンタとの通信状況を調べる

スプーリングシステムの設定に進む前に、オペレーティング システムがプリンタにデータを送ることに成功しているかどうか を確かめるべきでしょう。これにより、印字がうまくいかないと き、プリンタとの通信が問題なのか、スプーリングシステムが問 題なのかを分けて調べることがかなり容易になります。

プリンタをテストするためには、 プリンタに何かのテキストを送 信してみます。送信した文字をすぐに印字してくれるプリンタに は、lptest(1) コマンドを使うと有用です。このコマンドは印 字可能な 96 文字の ASCII 文字すべてを 96 行生成します。

PostScript (または他の言語に対応した) プリンタの場合 は、もっと巧妙なテストが必要になります。次のような、簡単な PostScript プログラムを使えば十分でしょう。

%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto
/Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage

上の PostScript コードはファイルに保存し、 以降の節で例として示されているように利用することができます。

Note: このドキュメントでプリンタ用言語を参照するときは、 PostScript のような言語を仮定しており、Hewlett Packard の PCL は考慮していません。PCL は非常に機能的なの ですが、 プレインテキストにエスケープシーケンスを混ぜること ができます。PostScript ではプレインテキストを直接印字 することはできません。 このような種類のプリンタ言語に対しては、 特別な対応をおこなわなければなりません。


9.3.1.3.2.1. パラレルポートのプリンタとの接続を調べる

この節では、FreeBSD がパラレルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について説明し ています。

パラレルポートのプリンタをテストするために

  1. su(1) コマンドで root になります。

  2. プリンタにデータを送ります。

    • プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。

      # lptest > /dev/lptN
      

      ここで、