FreeBSD ハンドブック

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

改訂: 45472

Copyright

Redistribution and use in source (XML DocBook) and 'compiled' forms (XML, 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 (XML 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.

重要:

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. の商標で、 アメリカ合衆国およびその他の国で登録されています。

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

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

IBM, AIX, 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. の商標または登録商標です。

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

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

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

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

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

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

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 がその商標を確認しているものには、その表示に続いて または ® 記号がおかれています。

2014-08-18 : ryusuke.
概要

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

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

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

[ 分割版 / 単一版 ]

目次
前書き
I. 導入
1. はじめに
1.1. この章では
1.2. FreeBSD へようこそ!
1.3. FreeBSD プロジェクトについて
2. FreeBSD のインストール (9.X 以降の場合)
2.1. この章では
2.2. ハードウェア要件
2.3. インストール前に行う作業
2.4. インストールの開始
2.5. bsdinstall の紹介
2.6. ネットワークからのインストール
2.7. ディスク領域の割り当て
2.8. インストール操作の確定
2.9. インストール後の作業
2.10. トラブルシューティング
2.11. Live CD を使う
3. FreeBSD 8.X のインストール
3.1. この章では
3.2. ハードウェア要件
3.3. インストール前に行う作業
3.4. インストールの開始
3.5. sysinstall(8) の紹介
3.6. ディスク領域の割り当て
3.7. 何をインストールするか選択する
3.8. インストールメディアの選択
3.9. インストール操作の確定
3.10. インストール後の作業
3.11. トラブルシューティング
3.12. 高度なインストールガイド
3.13. カスタムインストールメディアの準備
4. UNIX の基礎知識
4.1. この章では
4.2. 仮想コンソールと端末
4.3. 許可属性
4.4. ディレクトリ構造
4.5. ディスク構成
4.6. ファイルシステムのマウントとアンマウント
4.7. プロセス
4.8. デーモン、シグナルとプロセス終了
4.9. シェル
4.10. テキストエディタ
4.11. デバイスとデバイスノード
4.12. さらに詳しい情報を得るには...
5. アプリケーションのインストール - packages と ports
5.1. この章では
5.2. ソフトウェアのインストール
5.3. ソフトウェアの探し方
5.4. pkgng によるバイナリ package の管理
5.5. Ports Collection の利用
5.6. インストール後の作業
5.7. うまく動作しない ports に遭遇した場合には
6. X Window System
6.1. この章では
6.2. 用語の説明
6.3. X11 のインストール
6.4. X11 の設定
6.5. X11 でのフォントの使用
6.6. X ディスプレイマネージャ
6.7. デスクトップ環境
II. 日々の生活
7. デスクトップアプリケーション
7.1. この章では
7.2. ブラウザ
7.3. 生産的なアプリケーション
7.4. ドキュメントビューア
7.5. 財務管理ソフトウェア
8. マルチメディア
8.1. この章では
8.2. サウンドカードの設定
8.3. MP3 オーディオ
8.4. ビデオ再生
8.5. TV カードの設定
8.6. MythTV
8.7. 画像スキャナ
9. FreeBSD カーネルのコンフィグレーション
9.1. この章では
9.2. なぜカスタムカーネルを作るか?
9.3. システムのハードウェアについて知る
9.4. コンフィグレーションファイル
9.5. カスタムカーネルの構築とインストール
9.6. 問題が起きた場合には
10. プリンタの利用
10.1. この章では
10.2. はじめに
10.3. 基本的な設定
10.4. プリンタ設定上級編
10.5. プリンタを使う
10.6. 標準スプーラの代替品
10.7. トラブルシューティング
11. Linux バイナリ互換機能
11.1. この章では
11.2. インストール
11.3. Mathematica のインストール
11.4. Oracle のインストール
11.5. SAP R/3 (4.6B - IDES) のインストール
11.6. 高度なトピックス
III. システム管理
12. 設定とチューニング
12.1. この章では
12.2. 初期設定
12.3. 中核となる設定
12.4. アプリケーションの設定
12.5. サービスの起動
12.6. バーチャルホスト
12.7. 設定ファイル
12.8. sysctl によるチューニング
12.9. ディスクのチューニング
12.10. Kernel 制限のチューニング
13. FreeBSD の起動のプロセス
13.1. この章では
13.2. 起動時の問題
13.3. ブートマネージャと起動ステージ
13.4. カーネル起動時の応答
13.5. Device Hints
13.6. init: プロセス制御の初期化
13.7. シャットダウン動作
14. ユーザと基本的なアカウントの管理
14.1. この章では
14.2. アカウントの種類
14.3. アカウント情報の管理
14.4. ユーザへの制限
14.5. グループの管理
15. セキュリティ
15.1. この章では
15.2. はじめに
15.3. FreeBSDの安全性を高める
15.4. DES, MD5 と Crypt
15.5. S/Key
15.6. Kerberos
15.7. ファイアウォール
15.8. OpenSSL
15.9. IPsec
15.10. OpenSSH
15.11. ファイルシステムアクセス制御リスト
16. ストレージ
16.1. この章では
16.2. デバイス名
16.3. ディスクの追加
16.4. RAID
16.5. 光メディア (CD & DVD) の作成と使用
16.6. フロッピーディスクの作成と使用
16.7. データテープの作成と使用
16.8. フロッピーディスクへのバックアップ
16.9. バックアップの基本
16.10. ネットワーク、メモリ、そしてファイルベースのファイルシステム
16.11. ファイルシステムのスナップショット
16.12. ファイルシステムクォータ
16.13. ディスクパーティションの暗号化
17. 地域化 (localization) - I18N/L10N の利用と設定
17.1. この章では
17.2. 基礎知識
17.3. 地域化の利用
17.4. 国際化に対応したプログラムのコンパイル
17.5. FreeBSD を特定の言語に地域化する
18. FreeBSD のアップデートとアップグレード
18.1. この章では
18.2. FreeBSD Update
18.3. ドキュメントのアップデート
18.4. 開発ブランチを追いかける
18.5. ソースの同期
18.6. world の再構築
18.7. 複数のマシンで追いかける
IV. ネットワーク通信
19. シリアル通信
19.1. この章では
19.2. はじめに
19.3. シリアル端末
19.4. ダイアルインサービス
19.5. ダイアルアウトサービス
19.6. シリアルコンソールの設定
20. PPP と SLIP
20.1. この章では
20.2. ユーザ ppp の利用
20.3. カーネル PPP の利用
20.4. PPP オーバイーサネット (PPPoE) の利用
20.5. SLIP の利用
21. 電子メール
21.1. この章では
21.2. 電子メールを使う
21.3. sendmail の設定
21.4. MTA の変更
21.5. トラブルシュート
21.6. 先進的なトピックス
21.7. UUCP とともに SMTP を使う
21.8. ダイアルアップ接続でメールを使う
21.9. SMTP 認証
22. 高度なネットワーク
22.1. この章では
22.2. ゲートウェイと経路
22.3. 無線ネットワーク
22.4. Bluetooth
22.5. ブリッジ
22.6. NFS
22.7. ディスクレス稼働
22.8. ISDN
22.9. NIS/YP
22.10. DHCP
22.11. DNS
22.12. NTP
22.13. ネットワークアドレス変換 (NAT)
22.14. inetd スーパサーバ
22.15. パラレルライン IP (PLIP)
22.16. IPv6
V. 付録
A. FreeBSD の入手方法
A.1. CD および DVD セット
A.2. FTP サイト
A.3. CTM を使う
A.4. Subversion を使う
A.5. 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. オフィサ
FreeBSD Glossary
索引
図の一覧
2.1. FreeBSD ブートローダメニュー
2.2. 典型的なデバイス検出結果の例
2.3. インストールメディアの選択モード
2.4. キーマップの選択
2.5. キーボードメニューの選択
2.6. ホスト名の設定
2.7. インストールするコンポーネントの設定
2.8. ネットワークからのインストール
2.9. ミラーサイトの選択
2.10. パーティションの分割に Guided と Manual のどちらを用いるかの選択
2.11. 複数のディスクから選択する
2.12. Entire Disk または Partition の選択
2.13. 作成されたパーティションの確認
2.14. Manual によるパーティションの分割
2.15. 手動でパーティションを作成する
2.16. 手動でパーティションを作成する
2.17. 最後の確認
2.18. 配布ファイルのダウンロード
2.19. 配布ファイルの検証
2.20. 配布ファイルの取り出し
2.21. root パスワードの設定
2.22. イーサネットインタフェースの選択
2.23. ワイヤレスアクセスポイントのスキャン
2.24. ワイヤレスネットワークの選択
2.25. WPA2 のセットアップ
2.26. IPv4 ネットワークの選択
2.27. IPv4 DHCP 設定の選択
2.28. IPv4 Static 設定
2.29. IPv6 ネットワークの設定
2.30. IPv6 SLAAC 設定の選択
2.31. IPv6 static 設定
2.32. DNS の設定
2.33. ローカルまたは UTC クロックの選択
2.34. 地域の選択
2.35. 国名の選択
2.36. タイムゾーンの選択
2.37. タイムゾーンの確定
2.38. 追加で有効にするサービスの選択
2.39. クラッシュダンプの設定
2.40. 新しいユーザのアカウントの作成
2.41. ユーザ情報の入力
2.42. ユーザおよびグループの管理を終了する
2.43. 最後の設定
2.44. Manual Configuration
2.45. インストールの終了
3.1. FreeBSD ブートローダメニュー
3.2. 古典的なデバイス検出結果の例
3.3. 国の選択メニュー
3.4. キーボードメニューの選択
3.5. Sysinstall のメインメニューから Usage を選択
3.6. ドキュメントメニューの選択
3.7. Sysinstall ドキュメントメニュー
3.8. Sysinstall メインメニュー
3.9. Sysinstall キー配列メニュー
3.10. Sysinstall メインメニュー
3.11. Sysinstall オプション
3.12. 標準インストールの開始
3.13. fdisk を実行するディスクの選択
3.14. 典型的な FDisk パーティション
3.15. ディスク全体を使う FDisk 構成
3.16. sysinstall ブートマネージャメニュー
3.17. ドライブ選択の終了
3.18. sysinstall ディスクラベルエディタ
3.19. デフォルトの自動割り当てによる sysinstall ディスクラベルエディタ
3.20. ルートパーティションに割りあてる容量
3.21. ルートパーティションサイズの編集
3.22. ルートパーティションタイプの選択
3.23. ルートのマウントポイント選択
3.24. sysinstall ディスクラベルエディタ
3.25. ディストリビューションの選択
3.26. ディストリビューションの確認
3.27. インストールメディアの選択
3.28. イーサネットデバイスを選ぶ
3.29. ed0 ネットワークの設定
3.30. inetd.conf の編集
3.31. Anonymous FTP のデフォルトの設定
3.32. FTP Welcome メッセージの編集
3.33. exports ファイルの編集
3.34. システムコンソール設定オプション
3.35. スクリーンセーバオプション
3.36. スクリーンセーバのタイムアウト
3.37. システムコンソールの設定の終了
3.38. 地域の選択
3.39. 国名の選択
3.40. タイムゾーンの選択
3.41. マウスプロトコルのタイプの選択
3.42. マウスプロトコルの選択
3.43. マウスポートの設定
3.44. マウスポート の設定
3.45. マウスデーモンを有効にする。
3.46. マウスデーモンのテスト
3.47. Package カテゴリの選択
3.48. Packages の選択
3.49. Packages のインストール
3.50. Package のインストールの確認
3.51. User の選択
3.52. ユーザ情報の入力
3.53. ユーザおよびグループの管理を終了する
3.54. インストールの終了
3.55. ネットワーク設定 (メニューの前半)
3.56. デフォルトの MTA の選択
3.57. Ntpdate の設定
3.58. ネットワーク設定 (メニューの後半)
表の一覧
2.1. パーティションスキーム
3.1. サンプルデバイス一覧
3.2. 一つ目のディスクのパーティションレイアウト
3.3. 残りのディスクのパーティション構成
3.4. FreeBSD ISO イメージの名前と内容
4.1. ディスクデバイス記号
8.1. 良くあるエラーメッセージ
16.1. 物理ディスクへの名前付け
22.1. ネットワーク向けのパラレル (クロス) ケーブル結線
22.2. 予約された IPv6 アドレス
例の一覧
2.1. 既存のパーティションを使用
2.2. 既存のパーティションを縮小する
2.3. 伝統的なファイルシステムのパーティションを作成する。
3.1. 既存のパーティションを変更せずに使用
3.2. 既存のパーティションを縮小する
4.1. ディスク名、スライス名、パーティション名のサンプル
4.2. ディスクの概念的構成
13.1. boot0 のスクリーンショット
13.2. boot2 のスクリーンショット
13.3. /etc/ttys の insecure コンソール
14.1. スーパーユーザ権限でプログラムをインストールする
14.2. FreeBSD におけるユーザの追加
14.3. rmuser による対話的なアカウントの削除
14.4. スーパユーザによる対話的な chpass
14.5. 通常のユーザによる対話的な chpass
14.6. 自分のパスワードの変更
14.7. スーパーユーザ権限での他のユーザのパスワード変更
14.8. pw(8) によるグループの追加
14.9. pw(8) により新しいグループにメンバを追加する
14.10. pw(8) によるグループへのユーザ追加
14.11. グループに所属しているユーザを調べるための id(1) の使い方
15.1. SSH を用いた SMTP 用の安全なトンネルの作成
16.1. ssh 越しの dump の利用
16.2. RSH を設定した ssh 越しの dump を利用
16.3. ブートフロッピーを作成するスクリプト
16.4. FreeBSD 4.X での vnconfig を用いた既存のファイルシステムイメージのマウント
16.5. vnconfig を用いたファイルベースディスクの新規作成
16.6. FreeBSD 5.X での mdconfig を用いた既存のファイルシステムイメージのマウント
16.7. mdconfig を用いたファイルシステムイメージの新規作成
16.8. mdmfs を用いたファイルベースディスクの設定とマウント
16.9. FreeBSD 4.X での md メモリディスク
16.10. mdconfig を用いたメモリベースディスクの新規作成
16.11. mdmfs を用いたメモリベースディスクの新規作成
19.1. 端末の項目を /etc/ttys に追加する
21.1. sendmail アクセスデータベースの設定
21.2. メールエイリアス
21.3. 仮想ドメインメール対応表の例
22.1. amd によるエクスポートされたファイルシステムのマウント
22.2. 支店または家庭のネットワーク
22.3. 本社 LAN や他の LAN
22.4. inetd への HangUP シグナル送付

前書き

想定している読者

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

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

さらなる情報源の一覧は、付録B 参考図書 をご覧ください。

第 3 版からの変更

オンライン版のハンドブックは、FreeBSD ドキュメンテーションプロジェクトの献身的なメンバーによる 10 年以上に渡る作業の頂点に立つものです。 2004 年に出版された 2 巻組の第 3 版からの主な変更は、次のようなものです。

  • 強力なパフォーマンス解析ツール DTrace に関する情報が追加されました。

  • ファイルシステム対応の章が追加されました。 Sun™ の ZFS のような FreeBSD ネイティブではないファイルシステムへの対応について説明しています。

  • セキュリティ監査の章が追加されました。 FreeBSD における新しい監査のケイパビリティおよびその使用方法について説明しています。

  • 仮想化の章が追加されました。os; を仮想化ソフトへインストールする方法などを取り上げています。

  • 新しいインストールユーティリティの bsdinstall を用いた FreeBSD のインストール方法を説明する 2章FreeBSD のインストール (9.X 以降の場合) という章が追加されました。

第 2 版 (2004) からの変更

第 3 版は、FreeBSD ドキュメンテーションプロジェクトの献身的なメンバーによる 2 年以上に渡る作業の頂点に立つものです。 サイズが大きくなったため、印刷版は、2 巻での出版となりました。 この新たな版における主な変更は、次のようなものです。

  • 12章設定とチューニング に、ACPI 電源管理、cron システムユーティリティ、 およびカーネルチューニングオプションに関するより多くの情報が追加されました。

  • 15章セキュリティ に、 Virtual Private Network (VPN)、 ファイルシステムアクセスコントロールリスト (ACL)、 およびセキュリティ勧告に関する情報が追加されました。

  • Mandatory Access Control (MAC) の章がこの版で追加されました。 MAC がどのようなもので、 このメカニズムがどのように FreeBSD システムを安全にするかについて説明しています。

  • 16章ストレージ に、 USB ストレージデバイス、ファイルシステムスナップショット、 ファイルシステムクォータ、 ファイルおよびネットワークベースのファイルシステム、 暗号化されたディスクパーティションに関する情報が追加されました。

  • 20章PPP と SLIP に、 トラブルシューティングの節が追加されました。

  • 21章電子メール, に、 他のメール転送エージェント、SMTP 認証、UUCP, fetchmail, procmail や他の高度な話題についての情報が追加されました。

  • ネットワークサービスの章が、この版で新しく追加されました。 この章では、Apache HTTP サーバfptd および Samba を用いて Microsoft® Windows® クライアント用にサーバを設定する方法などを取り上げています。 再構成によりいくつかの節が、 22章高度なネットワーク から移動してきました。

  • 22章高度なネットワーク に、 FreeBSD での Bluetooth® デバイスの使用、 ワイヤレスネットワークの設定、 Asynchronous Transfer Mode (ATM) ネットワークに関する情報が追加されました。

  • 本書で使われている専門用語の定義をまとめた用語集が追加されました。

  • 本書を通じて表および図の表現において数多くの改良がおこなわれました。

第 1 版 (2001) からの変更

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

  • 完備した索引が追加されました。

  • ASCII キャラクタによる図はすべて画像に置き換えられました (訳注: 日本語版は作業中です)。

  • 各章に、章に記載されている内容と、 読者に期待される予備知識がすぐに分かるように、 一定の内容の概要が付け加えられました。

  • 内容は、始めにシステム管理付録 の 3 つの論理的な部分に再構成されました。

  • 3章FreeBSD 8.X のインストール は新規ユーザーが文章の内容を理解しやすいように多くのスクリーンショットを入れて完全に書き直されました。

  • 4章UNIX の基礎知識 には、プロセス、デーモン、 シグナルに関する情報が追加されました。

  • 5章アプリケーションのインストール - packages と ports には、バイナリパッケージの管理に関する情報が追加されました。

  • 6章X Window System は、 XFree86™ 4.X 上で KDEGNOME のような近代的なデスクトップテクノロジーを利用することに力点をおいて、 完全に書き直されました。

  • 13章FreeBSD の起動のプロセス が拡張されました。

  • 16章ストレージ は、 ディスクバックアップ の 2 つの章に分かれていたものをまとめて書き直されました。私たちは、 この話題は 1 つの章にまとめて示した方が分かりやすいと感じています。 RAID (ハードウェアとソフトウェアの両方) に関する節も追加されました。

  • 19章シリアル通信 は FreeBSD 4.X/5.X 向けに一から再構成されました。

  • 20章PPP と SLIP は大幅に更新されました。

  • 22章高度なネットワーク に、多くの新しい節が追加されました。

  • 21章電子メール に、sendmail の設定についてより多くの情報が加えられました。

  • 11章Linux バイナリ互換機能 には、Oracle®Mathematica® のインストール情報が加えられました (訳注: 日本語版は作業中です)。

  • この第 2 版では、以下の新たな話題が扱われています。

この文書の構成

この文書は 5 部構成になっています。 第 1 部導入では、 FreeBSD のインストールと基本的な使い方を扱います。 各章は順に読むことを想定していますが、 馴染み深い話題を扱った章は飛ばしてもよいでしょう。 第 2 部日々の生活では、 FreeBSD で良く使われる機能について説明します。 この章とそれに続く章は、順不同に読むことができます。 各章の始めにはその章が何を扱っていて、 読者にどんな予備知識が期待されるかを簡潔に述べた概要がおかれています。 第 3 部システム管理は、 システム管理に関する話題を扱っています。 第 4 部ネットワーク通信では、 ネットワークおよびサーバに関する話題を扱っています。 第 5 部は参考情報からなる付録です。

1章はじめに

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

2章FreeBSD のインストール (9.X 以降の場合)

bsdinstall を用いた FreeBSD 9.x 以降のシステムのインストール過程を一通りユーザに案内しています。

3章FreeBSD 8.X のインストール

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

4章UNIX の基礎知識

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

5章アプリケーションのインストール - packages と ports

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

6章X Window System

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

7章デスクトップアプリケーション

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

8章マルチメディア

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

9章FreeBSD カーネルのコンフィグレーション

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

10章プリンタの利用

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

11章Linux バイナリ互換機能

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

12章設定とチューニング

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

13章FreeBSD の起動のプロセス

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

15章セキュリティ

FreeBSD システムを安全に保つために役立つ Kerberos, IPsec および OpenSSH といった利用可能なさまざまなツールについて説明しています。

16章ストレージ

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

17章地域化 (localization) - I18N/L10N の利用と設定

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

18章FreeBSD のアップデートとアップグレード

FreeBSD-STABLE, FreeBSD-CURRENT と FreeBSD のリリースの違いを説明します。 どんなユーザにとって開発システムを追随するのが有用かを述べ、 その方法の概要をまとめています。 システムを最新のセキュリティリリースへアップデートする方法についても説明しています。

19章シリアル通信

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

20章PPP と SLIP

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

21章電子メール

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

22章高度なネットワーク

LAN 上の他のコンピュータとインターネット接続の共有、 高度なルーティングに関するトピックス、ワイヤレスネットワーク、 Bluetooth®, ATM, IPv6 等々、 ネットワークに関するさまざまな話題を取り扱っています。

付録A FreeBSD の入手方法

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

付録B 参考図書

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

付録C インターネット上のリソース

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

付録D PGP 公開鍵

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

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

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

書体による表記

イタリック体

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

等幅

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

太字

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

ユーザー入力

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

Ctrl+Alt+Del

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

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

Ctrl+X, Ctrl+S

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

C:\> で始まる例は、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) に結実しました。 2003-2004 年には、ハンドブック第 3 版の出版準備のために FreeBSD Mall, Inc が貢献者を雇用してくれました。

パート I. 導入

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

  • FreeBSD の紹介

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

  • UNIX® の基礎

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

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

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

目次
1. はじめに
1.1. この章では
1.2. FreeBSD へようこそ!
1.3. FreeBSD プロジェクトについて
2. FreeBSD のインストール (9.X 以降の場合)
2.1. この章では
2.2. ハードウェア要件
2.3. インストール前に行う作業
2.4. インストールの開始
2.5. bsdinstall の紹介
2.6. ネットワークからのインストール
2.7. ディスク領域の割り当て
2.8. インストール操作の確定
2.9. インストール後の作業
2.10. トラブルシューティング
2.11. Live CD を使う
3. FreeBSD 8.X のインストール
3.1. この章では
3.2. ハードウェア要件
3.3. インストール前に行う作業
3.4. インストールの開始
3.5. sysinstall(8) の紹介
3.6. ディスク領域の割り当て
3.7. 何をインストールするか選択する
3.8. インストールメディアの選択
3.9. インストール操作の確定
3.10. インストール後の作業
3.11. トラブルシューティング
3.12. 高度なインストールガイド
3.13. カスタムインストールメディアの準備
4. UNIX の基礎知識
4.1. この章では
4.2. 仮想コンソールと端末
4.3. 許可属性
4.4. ディレクトリ構造
4.5. ディスク構成
4.6. ファイルシステムのマウントとアンマウント
4.7. プロセス
4.8. デーモン、シグナルとプロセス終了
4.9. シェル
4.10. テキストエディタ
4.11. デバイスとデバイスノード
4.12. さらに詳しい情報を得るには...
5. アプリケーションのインストール - packages と ports
5.1. この章では
5.2. ソフトウェアのインストール
5.3. ソフトウェアの探し方
5.4. pkgng によるバイナリ package の管理
5.5. Ports Collection の利用
5.6. インストール後の作業
5.7. うまく動作しない ports に遭遇した場合には
6. X Window System
6.1. この章では
6.2. 用語の説明
6.3. X11 のインストール
6.4. X11 の設定
6.5. X11 でのフォントの使用
6.6. X ディスプレイマネージャ
6.7. デスクトップ環境

第1章 はじめに

再構成、部分的な改訂: Mock Jim [FAMILY Given].

1.1. この章では

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

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

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

  • FreeBSD プロジェクトの歴史

  • FreeBSD プロジェクトの目標

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

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

1.2. FreeBSD へようこそ!

FreeBSD は、4.4BSD-Lite から派生したオペレーティングシステムで、 Intel (x86 および Itanium®), AMD64, 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, ルーティング、ファイアウォール (セキュリティ) サービスを用いてインターネットと接続できます。

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

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

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

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

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

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

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

  • 完全な CC++ の開発ツール。進んだ研究や開発のための多くの他の言語も 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 で入手可能です。 詳しくは 付録A FreeBSD の入手方法 をご覧ください。

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

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

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

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

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

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

1.3.1. FreeBSD 小史

FreeBSD プロジェクトは 1993 年の始めに Unofficial 386BSD Patchkit の最後の 3 人のまとめ役によって、部分的に patchkit から派生する形で開始されました。ここでの 3 人のまとめ役というのは、Nate Williams, Rod Grimes と、 Jordan Hubbard です。

このプロジェクトのもともとの目標は、patchkit という仕組みではもう十分に解決できなくなってしまった 386BSD の数多くの問題を修正するための、386BSD の暫定的なスナップショットを作成することでした。 こういった経緯を経ているので、 このプロジェクトの初期の頃の名前は 386BSD 0.5 や 386BSD 暫定版 (Interim) でした。

386BSD は、Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成したオペレーティングシステムです。当時の 386BSD は、ほぼ一年にわたって放っておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) というひどい状況に苦しんでいました。 作者の代わりに問題を修正し続けていた patchkit は日を追うごとに不快なまでに膨張してしまっていました。 このような状況に対して、彼らは暫定的な クリーンアップ スナップショットを作成することで Bill を手助けしようと決めました。しかし、 この計画は唐突に終了してしまいました。Bill Jolitz が、 このプロジェクトに対する受け入れ支持を取り下げることを突然決意し、 なおかつこのプロジェクトの代わりに何をするのかを一切言明しなかったのです。

たとえ Bill が支持してくれないとしても、 彼ら 3 人の目標には依然としてやる価値があると考えていたため、 David Greenman が考案した名称 FreeBSD をプロジェクトの名前に採用し、新たなスタートを切りました。 この時点でのプロジェクトの初期目標は、すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者たちと相談して決められました。 プロジェクトが実現に向けて軌道に乗ってきたことが明確になった時点で、 Jordan は 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 月に公開されました。

これ以降、FreeBSD の安定性、速さや機能は改善され、 リリースが行われてきました。

長期的な開発プロジェクトは 10.X-CURRENT 開発ブランチ (トランク) で続けられ、 10.X のスナップショットリリースは、開発の進行状況に応じて スナップショットサーバ より継続して入手できます。

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

寄稿: Hubbard Jordan [FAMILY Given].

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

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

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

1.3.3. FreeBSD の開発モデル

寄稿: 浅見 [FAMILY Given].

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

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

SVN リポジトリ

長年にわたり FreeBSD のソースツリーは CVS (Concurrent Versions System) によってメンテナンスされてきました。 CVS はソースコード管理用のフリーソフトウェアで、 FreeBSD のリリースにも含まれています。 2008 年 6 月、プロジェクトはソースコード管理のシステムを SVN (Subversion) に移行しました。 ソースツリーの急速な増加や、 これまでに蓄積された膨大な量の履歴によって、 CVS の持つ技術的な限界が明かになってきたためです。 ドキュメンテーションプロジェクトと Ports Collection リポジトリも、それぞれ 2012 年 5 月と 7 月に CVS から SVN へと移行しました。 FreeBSD src/ リポジトリを取得するための情報は ソースツリーの同期 の章を、FreeBSD Ports Collection を取得するための詳細については Ports Collection の利用 の章をご覧ください。

ソースツリー管理者

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

FreeBSD コアチーム

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

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

注記:

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

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

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

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

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

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

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

1.3.4. サードパーティ製プログラム

FreeBSD では基本配布セットに加え、 移植されたソフトウェア集として数千の人気の高いプログラムを提供しています。 この文書を書いている時点で 24,000 以上の ports (移植ソフトウェア) が存在します。 ports には http サーバから、ゲーム、言語、 エディタまでありとあらゆるものが含まれています。 ports はオリジナルソースに対する 差分という形で表現されており、 Ports Collection 全体でも 500 MB 程度にしかなりません。 ports をコンパイルするには、 インストールしたいと思っているプログラムのディレクトリに移動し、 make install とすると、 あとはすべてシステムがやってくれます。 どの ports もオリジナルの配布セットを動的に取ってくるので、 ディスクは構築したいと思っている ports の分だけを準備しておけば十分です。 ほとんどの ports は、すでにコンパイルされた状態で package として提供されており、 ソースコードからコンパイルしたくない場合、これを使うと (pkg install というコマンドで) 簡単にインストールできます。 package と ports に関する詳細は、 5章アプリケーションのインストール - packages と ports をご覧ください。

1.3.5. ドキュメント

最近の FreeBSD では、システムの最初のセットアップ時に、 インストーラ (sysinstall(8) または bsdinstall(8) のどちらでも) 上で、ドキュメントを /usr/local/share/doc/freebsd 以下にインストールすることを選択できます。 システムのインストール後でも、「ports を用いたドキュメンテーションのアップデート」 に記述されている package を使うことで、いつでもドキュメントをインストールできます。 これらのローカルにインストールされたドキュメントは、HTML ブラウザを使って以下の URL から参照できます。

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

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

FreeBSD に関する FAQ (英文オリジナル)

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

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

第2章 FreeBSD のインストール (9.X 以降の場合)

再構成、部分的に書き直し: Mock Jim [FAMILY Given].
sysinstall のウォークスルー、スクリーンショット、 およびその他原稿: Pratt Randy [FAMILY Given]Pratt Randy [FAMILY Given].
bsdinstall に向けた改訂: Atkinson Gavin [FAMILY Given]Block Warren [FAMILY Given].

2.1. この章では

FreeBSD では、テキストベースの使いやすいインストールプログラムが用意されています。 FreeBSD 9.0-RELEASE 以降では bsdinstall、 FreeBSD 9.0-RELEASE より前のリリースでは sysinstall と呼ばれるインストールプログラムを使います。 この章では、bsdinstall の使い方について説明します。 sysinstall の利用については、 3章FreeBSD 8.X のインストール で説明しています。

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

  • FreeBSD インストールメディアの作り方。

  • FreeBSD がハードディスクをどのように分割し、参照するか。

  • bsdinstall をどのように起動するか。

  • bsdinstall が聞いてくる質問がどのような意味であり、 またどのように答えれば良いか。

この章を読む前に、以下のことを確認して下さい。

  • インストールしようとしているバージョンに付属しているサポートハードウェア一覧を読み、 あなたの使っているハードウェアがサポートされているかどうかを確認して下さい。

注記:

このインストールの説明書は i386™ (PC 互換) アーキテクチャのコンピュータを対象にしています。 他のプラットフォームに特有の説明についてはそのつど明記しています。 インストーラとこの文書で記述している内容の間には、 いくらかズレがあることがあります。 この章を正確で忠実な手順書としてではなく、 一般的なガイドとしてご利用ください。

2.2. ハードウェア要件

2.2.1. 最小構成

FreeBSD をインストールする最小構成は、 FreeBSD のバージョンやハードウェアのアーキテクチャによって異なります。

以下の節では、最小構成についての情報をまとめています。 また、FreeBSD のインストール方法によって、 対応している CDROM ドライブや、 場合によってはネットワークアダプタが必要となります。 これに関しては 「インストールメディアの準備」 で説明します。

2.2.1.1. FreeBSD/i386

FreeBSD/i386 アーキテクチャは、 486 以上のプロセッサと、 少なくとも 64 MB の RAM が必要です。 最小のインストールでは、 少なくとも 1.1 MB のハードディスクの空き容量が必要です。

注記:

古いコンピュータでは、 速いプロセッサを入手するより、より多くの RAM やより多くの容量のハードドライブを用意するほうが重要です。

2.2.1.2. FreeBSD/amd64

FreeBSD/amd64 を実行可能なプロセッサには 2 つのクラスがあります。 1 つ目のクラスは、AMD Athlon™64, AMD Athlon™64-FX, AMD Opteron™ やそれより新しいプロセッサです。

もう 1 つのクラスは、 Intel® EM64T アーキテクチャを採用しているプロセッサです。 これらのプロセッサの例は、 Intel® Core™ 2 Duo, Quad, Extreme プロセッサファミリ、 Intel® Xeon™ 3000, 5000, 7000 系のプロセッサ、 および Intel® Core™ i3, i5, i7 プロセッサです。

nVidia nForce3 Pro-150 ベースのコンピュータを使用するには、 BIOS のセットアップを使って、IO APIC を無効にする 必要があります。 もし、このようなオプションがなければ、 代わりに ACPI を無効にする必要があるでしょう。 Pro-150 チップセットには回避策が見つかっていないバグがあります。

2.2.1.3. FreeBSD/powerpc Apple® Macintosh®

すべての USB 内蔵の New World Apple® Macintosh® システムに対応しています。 複数の CPU を持つコンピュータは SMP に対応しています。

32-bit カーネルは、RAM の最初の 2 GB だけを利用できます。 Blue & White PowerMac G3 では、FireWire® に対応していません。

2.2.1.4. FreeBSD/sparc64

FreeBSD/sparc64 が対応しているハードウェアの一覧については、 FreeBSD/sparc64 プロジェクトをご覧ください。

現時点では、 他のオペレーティングシステムとディスクの共有ができないので、 FreeBSD/sparc64 専用のディスクが必要です。

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

FreeBSD がサポートしているハードウェアアーキテクチャやデバイスの一覧は、 各リリースのハードウェアノートとして提供されます。 このドキュメントは通常リリースメディアのルートディレクトリにある HARDWARE.TXT という名前のファイルで見ることができます。 ハードウェアリストは、FreeBSD のウェブサイトの リリース情報 のページにもあります。

2.3. インストール前に行う作業

2.3.1. データのバックアップ

FreeBSD をインストールするコンピュータに残されている価値のあるデータをすべてバックアップしてください。 そして、インストール作業を進める前にバックアップが正しく取れていることを確認してください。 FreeBSD のインストーラは、ハードディスクに変更を加える前に確認を求めますが、 一度実際に書き込む作業が始まってしまうと、 もう元に戻すことはできません。

2.3.2. FreeBSD をインストールする場所の決定

インストールするオペレーティングシステムが FreeBSD のみで、 ハードディスクすべてを使ってインストールする場合には、 この節の後半を飛ばすことができます。 しかし、ハードディスクに FreeBSD と他のオペレーティングシステムを共存させる必要がある場合には、 ディスクレイアウトに関する基本的な部分を理解しておく必要があります。

2.3.2.1. FreeBSD/i386 および FreeBSD/amd64 アーキテクチャでのディスクレイアウト

ハードディスクを複数の塊に分割することができます。 これらの塊は パーティション と呼ばれます。

ディスクをパーティションに分割する方法は 2 通りあります。 伝統的な Master Boot Record (MBR) では、 ディスク 1 台あたり最大 4 つの プライマリパーティション をパーティションテーブルに持つことができます (歴史的な理由により、FreeBSD は、これらのパーティションのことを スライス と呼びます)。 大きなディスクにとって、作成できるパーティションの数が 4 つという制限は限定的なので、 プライマリパーティションの 1 つに 拡張パーティション を作成できます。 論理パーティション と呼ばれる特別のパーティションは、 この拡張パーティションの内部に作成できます。 これは、多少扱いにくいものです。

GUID Partition Table (GPT) は、 ディスクをパーティションに分ける簡単で新しい方法です。 伝統的な MBR パーティションテーブルと比べると、 GPT ははるかに万能です。一般的な GPT の実装では、 1 つのディスクに 128 個までのパーティションの作成が可能です。 扱いにくい論理パーティションのような回避策は必要ありません。

警告:

Windows® XP のような古いオペレーティングシステムは、 GPT パーティションと互換性がありません。 FreeBSD をこのようなオペレーティングシステムとディスク上で共存させる場合には、 MBR パーティションテーブルを使う必要があります。

FreeBSD の標準のブートローダは、プライマリまたは GPT パーティションに対応しています (FreeBSD の起動プロセスのより詳しい情報については、 13章FreeBSD の起動のプロセス をご覧ください)。 ディスク上のすべてのプライマリ、もしくは GPT パーティションが使われているのであれば、 そのひとつを FreeBSD のために開放してください。

FreeBSD の最小のインストールでは、1 GB 程度のディスク容量が必要です。 しかし、これは 非常に 小さなインストールであり、 自分のファイルを作成するスペースはほとんど残らないでしょう。 現実的には、グラフィカルな環境が必要なければ 3 GB、 グラフィカルユーザインタフェースを使用するのであれば 5 GB 以上は必要でしょう。 サードパーティ製ソフトウェアをインストールするならば、 さらに多くのスペースが必要になります。

さまざまな パーティションサイズを変更するフリーや商用のツール を利用できます。GParted Live は、GParted パーティションエディタを含む完全なライブ CD です。 多くの Linux Live CD ディストリビューションでも GParted を利用できます。

警告:

ディスクパーティションのアプリケーションは、 ディスク上のデータを壊す可能性があります。 ディスクのパーティションを変更する前に、 必ず全体のバックアップをとり、完全性を検証してください。

Microsoft® Vista のパーティションサイズの変更は、難しい可能性があります。 このような作業を行う際は、 Vista のインストール CDROM を手元に置いておくことをお勧めします。

例2.1 既存のパーティションを使用

既に Windows® がインストールされている 40 GB のハードディスクが 1 台接続されており、そのハードディスクは、 20 GB の 2 つのパーティションに分割されていると仮定します。 Windows® では、それぞれ C: および D: と呼びます。 C: パーティションには 10 GB のデータ、 D: パーティションには 5 GB のデータがあるとします。

D: にあるデータをすべて C: にコピーすれば、 2 つ目のパーティションを解放し、FreeBSD のために使うことができるようになります。


例2.2 既存のパーティションを縮小する

Windows® がインストールされている 40 GB のハードディスクが 1 台接続された PC を使用していると仮定します。 ディスクのすべてを 1 つの大きなパーティションとして使用しています。 Windows® では、この 40 GB のパーティションを 1 つの C: ドライブとして表示します。 15 GB のデータがあるとします。 Windows® が 20 GB パーティション、 残りの 20 GB パーティションを FreeBSD で使いたいとします。

インストールを行うには、2 つの方法があります。

  1. Windows® のデータをバックアップし、インストール時に 20 GB のパーティションを作成して再インストールする。

  2. 先に述べた GParted をはじめとするパーティションを縮小するツールを使って、 Windows® のパーティションを縮小し、フリーの空間上に、 FreeBSD のためのパーティションを作成する。


異なるオペレーティングシステムを含むディスクパーティションでは、 どのオペレーティングシステムも同時に実行できるのは 1 つです。 複数のオペレーティングシステムを同時に実行する方法については、 Virtualization の章で説明します。

2.3.3. ネットワークの詳細をまとめる

FreeBSD のインストール方法によっては、ネットワークに接続し、 ファイルのダウンロードが必要です。 イーサネットに接続 (または、ケーブル / DSL モデム経由でイーサネットインタフェースを利用して接続) するためには、 インストール中にこれらの情報を入力する必要があります。

DHCP は、 自動的にネットワークの設定情報を得るのによく使われます。 DHCP を利用できない場合には、 システム管理者かプロバイダにネットワーク情報を問い合わせる必要があります。

ネットワーク情報
  1. IP アドレス

  2. サブネットマスク

  3. デフォルトルータの IP アドレス

  4. ローカルネットワークのドメイン名

  5. DNS サーバの IP アドレス

2.3.4. FreeBSD Errata の確認

FreeBSD プロジェクトでは FreeBSD の各リリースができる限り安定するよう努力していますが、 時々バグが発生してしまうことがあります。極まれに、 発生したバグがインストールプロセスに影響を与えることがあります。 これらの問題は発見され解決されるとともに、 FreeBSD のウェブサイトの FreeBSD Errata に掲示されます。 インストールに関して注意すべき既知の問題が無いことを確かめるために、 インストールする前に Errata を確認してください。

すべてのリリースに関する情報や Errata は、 FreeBSD のウェブサイトリリース情報 の項で確認することができます。

2.3.5. インストールメディアの準備

FreeBSD のインストールは、 インストール用の CD, DVD または USB メモリスティックとともに、コンピュータを起動するところから始まります。 インストーラは、オペレーティングシステムで実行できるようなプログラムではありません。

FreeBSD のインストールファイルをすべて含んでいる通常のインストールメディアに加え、 bootonly を利用できます。 bootonly インストールメディアは、インストールファイルを含んでいません。 そのかわり、インストールの途中ですべてのファイルをネットワークからダウンロードします。 そのため、bootonly インストール CD は小さく、 また、インストール中に必要なファイルだけをダウンロードするので、 使用するバンド幅を減らすことが出来ます。

FreeBSD のインストールメディアは FreeBSD ウェブサイト から入手できます。 またイメージファイルと同じディレクトリから CHECKSUM.SHA256 をダウンロードし、 チェックサム を計算してイメージファイルの完全性を確認してください。 FreeBSD では sha256(1) を用いてチェックサムを計算できますが、 他のオペレーティングシステムも同様のプログラムを持っています。 計算したチェックサムと CHECKSUM.SHA256 に示されている値を比較してください。 チェックサムは完全に一致している必要があります。 もしチェックサムが一致していなければ、 ファイルは壊れているので削除してください。

ヒント:

FreeBSD の入っている CDROM や DVD, USB メモリスティックを持っているのであれば、 この章を飛ばしてもかまいません。

FreeBSD の CD および DVD イメージは、 起動可能な ISO ファイルです。 インストールには、一枚の CD または DVD があれば十分です。 現在使用しているオペレーティングシステムにインストールされている、 ISO イメージを CD に書き込むアプリケーションを用いて、 起動可能な CD または DVD を作成してください。 FreeBSD では、Ports Collection の sysutils/cdrtoolscdrecord(1) を使って書き込むことができます。

起動可能なメモリスティックを作成する場合には、 以下の手順にしたがってください。

  1. メモリスティックのイメージの取得

    FreeBSD 9.0-RELEASE 以降のメモリスティックのイメージは、 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/arch/arch/ISO-IMAGES/version/FreeBSD-version-RELEASE-arch-memstick.img. の ISO-IMAGES/ ディレクトリからダウンロードできます。 ここで、archversion の部分を、 それぞれインストールするアーキテクチャとバージョン番号に置き換えてください。 たとえば、FreeBSD/i386 9.0-RELEASE のメモリスティックのイメージは、ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-memstick.img から入手できます。

    ヒント:

    FreeBSD 8.X 以前では、 これとは異なるディレクトリパスが使われています。 FreeBSD 8.X 以前のバージョンのダウンロードとインストールの詳細については、 3章FreeBSD 8.X のインストール で説明しています。

    メモリスティックイメージには、.img という拡張子がついています。ISO-IMAGES/ ディレクトリには複数の異なるイメージがあり、インストールする FreeBSD のバージョンや、インストールするハードウェアによって、 必要なファイルが変わります。

    重要:

    以下の作業によってデータが 消去 されるので、 先に進む前に、使用する USB スティックにあるデータをバックアップしてください。

  2. イメージファイルをメモリスティックに書き込む

    手順2.1 FreeBSD を使ってイメージを書き込む

    警告:

    以下の例では、イメージを書き込むデバイスを /dev/da0 としています。 正しいデバイスを出力先に設定していることを十分確認してくだい。 さもなければ、現在あるデータを破壊してしまうことになります。

    • dd(1) を使ってイメージを書き込む

      .img ファイルは、 通常のファイルではありません。 メモリスティックの完全な内容の イメージ です。 通常のファイルのようなコピーは できませんdd(1) を使用して直接ターゲットディスクに書き込む必要があります。

      # dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=64k
    手順2.2 Windows® を使ってイメージを書き込む

    警告:

    適切なドライブレターを出力先に設定していることを十分確認してくだい。 さもなければ、現在あるデータを破壊してしまうでしょう。

    1. Image Writer for Windows® を入手する

      Image Writer for Windows® は、 イメージファイルをメモリスティックに正しく書き込むことのできるフリーのアプリケーションです。 https://launchpad.net/win32-image-writer/ からダウンロードして、フォルダに展開してください。

    2. イメージライタを使ってイメージを書き込む

      Win32DiskImager アイコンをダブルクリックして、プログラムを起動します。 Device の下に表示されるデバイスレターが、 メモリスティックのドライブであることを確認してください。 フォルダのアイコンをクリックして、 メモリスティックに書き込むイメージファイルを選択します。 [ Save ] をクリックして、 イメージファイルの名前をアクセプトしてください。 すべてが正しく行われたかどうか、また、 他のウィンドウでメモリスティックのフォルダが開かれていないことを確認してください。 準備ができたら、[ Write ] を押して、 メモリスティックにイメージファイルを書き込みます。

注記:

フロッピーディスクからのインストールには、 もはや対応していません。

これで FreeBSD をインストールする用意ができました。

2.4. インストールの開始

重要:

デフォルトでは、次のメッセージが表示されるまで インストーラはディスクに何の変更も加えません。

Your changes will now be written to disk.  If you
have chosen to overwrite existing data, it will
be PERMANENTLY ERASED. Are you sure you want to
commit your changes?

この警告の前であれば、 いつでもハードディスクの内容を変更することなくインストールを中断できます。 もし、何かを間違って設定してしまったことが心配ならば、 最後の警告の前に単にコンピュータをオフにしてください。 被害を残さずに済みます。

2.4.1. 起動

2.4.1.1. i386™ および amd64 アーキテクチャでの起動

  1. 「インストールメディアの準備」 で説明されている 起動 USB スティックを使用する場合には、コンピュータを立ち上げる前に、 USB スティックを挿入してください。

    CDROM から起動する場合には、コンピュータを立ち上げ、 すぐに CDROM を挿入してください。

  2. CDROM または USB から起動するようにコンピュータを設定してください。 この作業は、インストールに用いるメディアによって異なります。 起動するデバイスを BIOS で設定できます。 ほとんどのシステムでは、通常、起動時に F10, F11, F12 または Escape キーを押すことで、起動するデバイスを選択できます。

  3. もし、コンピュータがすでに存在している OS を読み込み、 通常通り起動してしまったのであれば、 以下の原因が考えられます。

    1. 起動ディスクが起動プロセスにおいて十分早いタイミングで挿入されていません。 ディスクをそのままにしてコンピュータを再起動してください。

    2. 先程の BIOS の変更が適切に行われていません。 正しいオプションを設定してやり直してください。

    3. 使用している BIOS は、 希望しているメディアからの起動に対応していません。Plop Boot Manager を使うと、古いコンピュータを CD や USB メディアから起動できます。

  4. FreeBSD は起動を開始します。CDROM から起動している場合、 次のような画面が表示されるでしょう (バージョン情報は省略しています)。

    Booting from CD-ROM...
    645MB medium detected
    CD Loader 1.2
    
    Building the boot loader arguments
    Looking up /BOOT/LOADER... Found
    Relocating the loader and the BTX
    Starting the BTX loader
    
    BTX loader 1.00 BTX version is 1.02
    Consoles: internal video/keyboard
    BIOS CD is cd0
    BIOS drive C: is disk0
    BIOS drive D: is disk1
    BIOS 636kB/261056kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 1.1
    
    Loading /boot/defaults/loader.conf
    /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d]
    \
  5. FreeBSD ブートローダにより、以下の画面が表示されます。

    図2.1 FreeBSD ブートローダメニュー
    FreeBSD ブートローダメニュー

    10 秒間待つか、Enter を押してください。

2.4.1.2. Macintosh® PowerPC® での起動

ほとんどのコンピュータでは、 起動中にキーボードの C を押しておくと、CD から起動します。 別の方法では Command+Option+O+F、 または non-Apple® キーボードでは Windows+Alt+O+F を押してください。 0 > プロンプトで

boot cd:,\ppc\loader cd:0

と入力してください。

キーボードのない Xserves では、 Open Firmware に起動する方法について Apple®'s support web site を参照してください。

2.4.1.3. SPARC64® アーキテクチャでの起動

ほとんどの SPARC64® システムは、 ディスクから自動的に起動するように設定されています。 FreeBSD をインストールするには、ネットワークまたは CDROM から起動する必要があり、そのためには PROM (OpenFirmware) に入る必要があります。

PROM に入るにはシステムを再起動し、 ブートメッセージが表示されるまで待ってください。 モデルによりますが、以下のような表示です。

Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.

もしシステムがこの時点でディスクから起動するようでしたら、 キーボードから L1+A または Stop+A を押すか、シリアルコンソールから BREAK (たとえば、tip(1) または cu(1) では ~#) を送信して、 PROM プロンプトを表示してください。 次のような表示です。

ok    1
ok {0} 2

1

単一の CPU を持つシステムでのプロンプト

2

SMP システムのプロンプト。数字はアクティブな CPU の数。

ここで、CDROM をドライブに挿入し、 PROM プロンプトで boot cdrom と入力してください。

2.4.2. デバイス検出結果を再表示する

画面に表示される数百行の文字列は (バッファに) 記憶されており、 再表示することが出来ます。

バッファを再表示するには、Scroll Lock キーを押します。 これで画面をスクロールできます。結果を見るためには、矢印キーもしくは PageUpPageDown を使います。 Scroll Lock をもう一度押すと、スクロールを停止します。

直ちにこの作業を行って、カーネルがデバイス検出を実行している時に 画面の外に流れた文字列を再表示してください。 図2.2「典型的なデバイス検出結果の例」 によく似た画面が現われるでしょう。 ただし、あなたのコンピュータに搭載されているデバイスによって、 表示される文字列は異なります。

図2.2 典型的なデバイス検出結果の例
Copyright (c) 1992-2011 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-RELEASE #0 r225473M: Sun Sep 11 16:07:30 BST 2011
    root@psi:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU     T9400  @ 2.53GHz (2527.05-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x10676  Family = 6  Model = 17  Stepping = 6
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x8e3fd<SSE3,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
  TSC: P-state invariant, performance statistics
real memory  = 3221225472 (3072 MB)
avail memory = 2926649344 (2791 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <TOSHIB A0064   >
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Changing APIC ID to 1
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <TOSHIB A0064> on motherboard
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, b6690000 (3) failed
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xd808-0xd80b on acpi0
cpu0: <ACPI CPU> on acpi0
ACPI Warning: Incorrect checksum in table [ASF!] - 0xFE, should be 0x9A (20110527/tbutils-282)
cpu1: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xcff8-0xcfff mem 0xff400000-0xff7fffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
agp0: <Intel GM45 SVGA controller> on vgapci0
agp0: aperture size is 256M, detected 131068k stolen memory
vgapci1: <VGA-compatible display> mem 0xffc00000-0xffcfffff at device 2.1 on pci0
pci0: <simple comms> at device 3.0 (no driver attached)
em0: <Intel(R) PRO/1000 Network Connection 7.2.3> port 0xcf80-0xcf9f mem 0xff9c0000-0xff9dffff,0xff9fe000-0xff9fefff irq 20 at device 25.0 on pci0
em0: Using an MSI interrupt
em0: Ethernet address: 00:1c:7e:6a:ca:b0
uhci0: <Intel 82801I (ICH9) USB controller> port 0xcf60-0xcf7f irq 16 at device 26.0 on pci0
usbus0: <Intel 82801I (ICH9) USB controller> on uhci0
uhci1: <Intel 82801I (ICH9) USB controller> port 0xcf40-0xcf5f irq 21 at device 26.1 on pci0
usbus1: <Intel 82801I (ICH9) USB controller> on uhci1
uhci2: <Intel 82801I (ICH9) USB controller> port 0xcf20-0xcf3f irq 19 at device 26.2 on pci0
usbus2: <Intel 82801I (ICH9) USB controller> on uhci2
ehci0: <Intel 82801I (ICH9) USB 2.0 controller> mem 0xff9ff800-0xff9ffbff irq 19 at device 26.7 on pci0
usbus3: EHCI version 1.0
usbus3: <Intel 82801I (ICH9) USB 2.0 controller> on ehci0
hdac0: <Intel 82801I High Definition Audio Controller> mem 0xff9f8000-0xff9fbfff irq 22 at device 27.0 on pci0
pcib1: <ACPI PCI-PCI bridge> irq 17 at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
iwn0: <Intel(R) WiFi Link 5100> mem 0xff8fe000-0xff8fffff irq 16 at device 0.0 on pci1
pcib2: <ACPI PCI-PCI bridge> irq 16 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
pci4: <ACPI PCI bus> on pcib3
pcib4: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci5: <ACPI PCI bus> on pcib4
cbb0: <RF5C476 PCI-CardBus Bridge> at device 11.0 on pci5
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
ahci0: <Intel ICH9M AHCI SATA controller> port 0x8f58-0x8f5f,0x8f54-0x8f57,0x8f48-0x8f4f,0x8f44-0x8f47,0x8f20-0x8f3f mem 0xff9fd800-0xff9fdfff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.20 with 4 3Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich2: <AHCI channel> at channel 4 on ahci0
acpi_lid0: <Control Method Lid Switch> on acpi0
battery0: <ACPI Control Method Battery> on acpi0
acpi_button0: <Power Button> on acpi0
acpi_acad0: <AC Adapter> on acpi0
acpi_toshiba0: <Toshiba HCI Extras> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model GlidePoint, device ID 0
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Event timer "HPET3" frequency 14318180 Hz quality 440
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: cannot reserve I/O port range
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
p4tcc1: <CPU Frequency Thermal Control> on cpu1
Timecounters tick every 1.000 msec
hdac0: HDA Codec #0: Realtek ALC268
hdac0: HDA Codec #1: Lucent/Agere Systems (Unknown)
pcm0: <HDA Realtek ALC268 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC268 PCM #1 Analog> at cad 0 nid 1 on hdac0
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 12Mbps Full Speed USB v1.0
usbus3: 480Mbps High Speed USB v2.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ugen1.1: <Intel> at usbus1
uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen2.1: <Intel> at usbus2
uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
ugen3.1: <Intel> at usbus3
uhub3: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus3
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub3: 6 ports with 6 removable, self powered
ugen2.2: <vendor 0x0b97> at usbus2
uhub8: <vendor 0x0b97 product 0x7761, class 9/0, rev 1.10/1.10, addr 2> on usbus2
ugen1.2: <Microsoft> at usbus1
ada0 at ahcich0 bus 0 scbus1 target 0 lun 0
ada0: <Hitachi HTS543225L9SA00 FBEOC43C> ATA-8 SATA 1.x device
ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad4
ums0: <Microsoft Microsoft 3-Button Mouse with IntelliEyeTM, class 0/0, rev 1.10/3.00, addr 2> on usbus1
SMP: AP CPU #1 Launched!
cd0 at ahcich1 bus 0 scbus2 target 0 lun 0
cd0: <TEAC DV-W28S-RT 7.0C> Removable CD-ROM SCSI-0 device
cd0: 150.000MB/s transfers (SATA 1.x, ums0: 3 buttons and [XYZ] coordinates ID=0
UDMA2, ATAPI 12bytes, PIO 8192bytes)
cd0: cd present [1 x 2048 byte records]
ugen0.2: <Microsoft> at usbus0
ukbd0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
kbd2 at ukbd0
uhid0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...

丹念に検出結果をチェックして、あなたが予期したすべてのデバイスを FreeBSD が検出できた事を確認してください。デバイスが見つからなかった場合、 検出結果へ表示されません。 カーネルモジュール を構築することで、GENERIC カーネルに含まれていないデバイスのサポートを追加できます。

デバイス検出後、 図2.3「インストールメディアの選択モード」 が表示されます。 インストールメディアは、FreeBSD のインストール、 live CD、または FreeBSD シェルへのアクセスの 3 つの目的に利用出来ます。 矢印キーを使ってオプションを選択し、 Enter を押してください。

図2.3 インストールメディアの選択モード
インストールメディアの選択モード

ここで [ Install ] を選択すると、インストール作業が始まります。

2.5. bsdinstall の紹介

bsdinstall は、Nathan Whitehorn により書かれた、テキストベースのインストールプログラムです。 2011 年の FreeBSD 9.0 で導入されました。

注記:

Kris Moore pc-sysinstall は、 PC-BSD に含まれており、 FreeBSD のインストール にも使用できます。 bsdinstall と混同されることもありますが、 この 2 つのインストーラには関係はありません。

bsdinstall のメニューは、カーソルキー、 Enter, Tab, Space 等で操作します。

2.5.1. キー配列メニューの選択

使用しているシステムのコンソールにもよりますが、 bsdinstall は、 最初にデフォルト以外のキーボードレイアウト使うかどうかを尋ねてきます。

図2.4 キーマップの選択
キーマップの選択

[ YES ] を選択すると、 以下のキーボード選択画面が表示されます。 そうでなければ、この選択メニューは表示されず、 デフォルトのキーボードマップが使われます。

図2.5 キーボードメニューの選択
キーボードメニューの選択

システムのキーボードに最も近いキーマップを上下のカーソルキーで選び、 Enter キーを押してください。

注記:

Esc を押すと、 デフォルトのキーボードマップを使うようになります。 どのキーボードマップを選べばよいかわからない場合には、 United States of America ISO-8859-1 キーマップを選ぶとよいでしょう。

2.5.2. ホスト名の設定

次に bsdinstall は、 新しくインストールするシステムに与えるホスト名の入力に移ります。

図2.6 ホスト名の設定
ホスト名の設定

入力するホスト名は、 machine3.example.com のように完全修飾のホスト名で入力してください。

2.5.3. インストールするコンポーネントの設定

次に、 bsdinstall は、インストールするオプションのコンポーネントの選択に移ります。

図2.7 インストールするコンポーネントの設定
インストールするコンポーネントの設定

どのコンポーネントをインストールするかは、 システムの用途と用意されているディスク容量に依存します。 FreeBSD カーネルとユーザランド (総称 は base system) は、 常にインストールされます。

インストールのタイプによっては表示されないコンポーネントもあります。

オプションのコンポーネント
  • doc - 追加の文書。多くは歴史的な興味のものです。 FreeBSD ドキュメンテーションプロジェクトが提供している文書は、 あとでインストールされます。

  • games - fortune, rot13 などの伝統的な BSD ゲームをインストールします。

  • lib32 - 32-bit のアプリケーションを 64-bit 版の FreeBSD で実行する際に必要となる互換ライブラリ。

  • ports - FreeBSD Ports Collection

    Ports Collection は、 ソフトウェアのインストールを簡単に行う方法を提供します。 Ports Collection は、 ソフトウェアをコンパイルするのに必要なソースコードを含んでいません。 サードパーティ製ソフトウェアパッケージのダウンロード、 コンパイル、インストールを自動化するように設計されたファイルの集まりです。 Ports Collection の使い方については、 5章アプリケーションのインストール - packages と ports で説明します。

    警告:

    インストールプログラムは、 システムのディスクに十分な空き容量があるかどうかを確認しないので、 このオプションを選択する際には、 ハードディスクの容量が十分あることを確認してください。 FreeBSD 9.0 では、Ports Collection が必要とする容量は、 約 500 MB です。 より最新の FreeBSD のバージョンでは、 安全のためにもう少し大きなサイズを想定してください。

  • src - システムのソースコード

    FreeBSD には、 カーネルとユーザランド両方のソースコードが付属しています。 ほとんどのアプリケーションは必要としませんが、 ソースで提供されているソフトウェア (デバイスドライバやカーネルモジュールなど) によってはコンパイル時、 または FreeBSD そのものを開発する場合に必要となります。

    すべてのソースツリーをインストールするには 1 GB のディスク容量を必要とします。 また、FreeBSD システム全体のコンパイルには、 さらに 5 GB の容量が必要です。

2.6. ネットワークからのインストール

bootonly インストールメディアは、 インストールファイルを含んでいません。 bootonly インストールメディアを使う場合には、 ネットワーク経由でファイルをダウンロードする必要があります。

図2.8 ネットワークからのインストール
ネットワークからのインストール

「ネットワークインタフェースの設定」 に示されているように、 ネットワーク接続の設定が終わっていれば、ミラーサイトが選択されます。 ミラーサイトは、FreeBSD ファイルのコピーをキャッシュしています。 FreeBSD をインストールするコンピュータと同じ地域のミラーサイトを選んでください。 ターゲットコンピュータの近くにミラーがあると、 ファイルのダウンロードは早く終わるので、インストールの時間が短くなります。

図2.9 ミラーサイトの選択
ミラーサイトの選択

インストールファイルをローカルメディアに用意できたら、 インストールは先に進みます。

2.7. ディスク領域の割り当て

FreeBSD へディスク領域を割り当てるには 3 つの方法があります。 Guided によるパーティションの分割方法では、 ディスクパーティションを自動的に設定します。 一方 Manual によるパーティションの分割方法は、 高度な知識を持つユーザ向けで、 カスタマイズしたパーティションを作成できます。 3 つ目の方法として、シェルを利用し、gpart(8), fdisk(8), bsdlabel(8) のようなコマンドラインのプログラムを実行する方法があります。

図2.10 パーティションの分割に Guided と Manual のどちらを用いるかの選択
パーティションの分割に Guided と Manual のどちらを用いるかの選択

2.7.1. Guided によるパーティションの分割

複数のディスクが接続されている場合には、 FreeBSD をインストールするディスクを選択してください。

図2.11 複数のディスクから選択する
複数のディスクから選択する

ディスクのすべて、または一部を FreeBSD に割り当てます。 [ Entire Disk ] を選択すると、 一般的なパーティションレイアウトが作成されます。 [ Partition ] を選択すると、 ディスクの使用していない領域にパーティションレイアウトを作成します。

図2.12 Entire Disk または Partition の選択
Entire Disk または Partition の選択

パーティションのレイアウトを作成したら、 正しく作成できているかどうか注意深く確認してください。 間違いを発見したら、 [ Revert ] を選択して、 直前に作成したパーティションをリセットしてください。 また、[ Auto ] を選択すると、 自動的にもう一度 FreeBSD パーティションを作成します。 パーティションを手動で作成、変更、削除できます。 正しくパーティションを作成出来たら、 [ Finish ] を選択し、 インストールを進めてください。

図2.13 作成されたパーティションの確認
作成されたパーティションの確認

2.7.2. Manual によるパーティションの分割

Manual によるパーティションの分割では、 直接パーティションエディタが起動します。

図2.14 Manual によるパーティションの分割
Manual によるパーティションの分割

ドライブ (この例では ada0) を選び、 [ Create ] を選択すると、 partitioning scheme を選択するメニューが表示されます。

図2.15 手動でパーティションを作成する
手動でパーティションを作成する

PC 互換のコンピュータでは、通常 GPT によるパーティション分割が最も適切な選択となります。 GPT に対応していないような古い PC オペレーティングシステムでは、 MBR パーティションを使う必要があります。 他のパーティションスキームは、使うことがまれであったり、 古いコンピュータで用いられます。

表2.1 パーティションスキーム
省略形説明
APMApple パーティションマップ。 PowerPC® Macintosh® で使われます。
BSDMBR を用いない BSD ラベル。しばしば dangerously dedicated mode と呼ばれます。 bsdlabel(8) をご覧ください。
GPTGUID パーティションテーブル
MBRMaster Boot Record
PC98MBR の亜種。NEC PC-98 コンピュータで使われます。
VTOC8Volume Table Of Contents。 Sun SPARC64 および UltraSPARC コンピュータで使われます。

パーティションスキームを選択して作成した後で、 もう一度 [ Create ] を選択すると、 新しいパーティションが作成されます。

図2.16 手動でパーティションを作成する
手動でパーティションを作成する

標準の FreeBSD GPT のインストールでは、 少なくとも 3 つのパーティションが使われます。

標準的な FreeBSD GPT パーティション
  • freebsd-boot - FreeBSD ブートコード。

  • freebsd-ufs - FreeBSD UFS ファイルシステム。

  • freebsd-swap - FreeBSD スワップ空間。

他のパーティション形式に freebsd-zfs があります。 これは FreeBSD ZFS ファイルシステムを含めるためのものです。 The Z File System (ZFS) をご覧ください。 利用可能な GPT パーティションタイプについては、gpart(8) をご覧ください。

複数のファイルシステムのパーティションを使うことができます。 /, /var, /tmp そして /usr といった伝統的なパーティション分割のレイアウトを好む人もいます。 レイアウトの例が 例2.3「伝統的なファイルシステムのパーティションを作成する。」 にあります。

サイズを入力する際に、 K (キロバイト)、M (メガバイト)、 G (ギガバイト) といった通常の省略形を使用出来ます。

ヒント:

セクタを適切に配置することで、 最良のパフォーマンスを得ることができます。 また、パーティションサイズを 4K バイトの偶数倍にすると、 512 バイトまたは 4K バイトのセクタでドライブが配置しやすくなります。 一般的に、 4K の偶数倍の場所からパーティションが開始するように設定する簡単な方法は、 1M または 1G の偶数倍のパーティションサイズを用いることです。 ただし、例外があり、現在のところ freebsd-boot パーティションは、 ブートコードの制限により 512K 以下である必要があります。

ファイルシステムを持つパーティションでは、 マウントポイントが必要となります。 1 つの UFS パーティションだけを作成するのであれば、 マウントポイントは / となります。

同様に label の作成も必要です。 ラベルは作成したパーティションを認識するための名前です。 ドライブ名や番号は、 ドライブが別のコントローラやポートに接続されると変わることがありますが、 パーティションラベルは変わりません。 /etc/fstab のようなファイルの中で、 ドライブ名やパーティション番号ではなく、ラベルを参照することにより、 システムがハードウェアの変更に対して、より寛容になります。 GPT のラベルは、ディスクが接続されると /dev/gpt/ に現れます。他のパーティションスキームでは別のラベルとなり、 /dev/ 以下の異なるディレクトリにラベルが現れます。

ヒント:

同じ名前による衝突を避けるため、 すべてのファイルシステムに対し、一意的な名前使ってください。 コンピュータ名、使用、位置情報を表す単語をラベルに追加できます。 たとえば、研究室のコンピュータの UFS のルートパーティションを labroot または rootfs-lab とします。

例2.3 伝統的なファイルシステムのパーティションを作成する。

伝統的なパーティションレイアウト (/, /var, /tmp および /usr ディレクトリが各パーティションの別のファイルシステム) を作成するには、 GPT パーティションスキームを作成し、 その後、示されているようにパーティションを作成してください。 示されているパーティションサイズは 20G のディスク用です。 ディスクにより多くの容量があれば、swap または /var パーティションを大きく取ると良いでしょう。 ここで示されているラベルには、 example を意味する ex が付けられていますが、 実際には上で説明したように、 これとは別のユニークなラベルをつけてください。

FreeBSD の gptboot は、 デフォルトでは最初に見つかった UFS パーティションが、 / パーティションであることを前頭としています。

パーティションタイプサイズマウントポイントラベル
freebsd-boot512K  
freebsd-ufs2G/exrootfs
freebsd-swap4G exswap
freebsd-ufs2G/varexvarfs
freebsd-ufs1G/tmpextmpfs
freebsd-ufsデフォルト (ディスクの残りのすべての容量)/usrexusrfs

カスタムパーティション を作成したら [ Finish ] を選択して、 インストールを先に進んでください。

2.8. インストール操作の確定

インストールによるハードディスクへの変更を中止するなら、 ここが最後のチャンスです。

図2.17 最後の確認
最後の確認

[ Commit ] を選択して、 Enter キーを押すとインストールが開始します。 もし変更が必要であれば、 [ Back ] を選択してパーティションエディタまで戻ってください。 [ Revert & Exit ] を選択すると、 ハードドライブへの変更なしにインストールを終了できます。

インストールにかかる時間は、どのディストリビューションを選んだか、 どのインストールメディアを使ったか、 そしてコンピュータの速度にも依存します。 進行状況を表すメッセージが逐次表示されます。

まず最初に、インストーラは、ディスクにパーティション情報を書き込み、 newfs を実行してパーティションを初期化します。

ネットワーク経由でのインストールでは、 bsdinstall は、 インストールに必要な配布ファイルをダウンロードします。

図2.18 配布ファイルのダウンロード
配布ファイルのダウンロード

次に、ダウンロードの際にエラーが含まれなかったか、 インストールメディアからの読み取り中に読み間違いが起きなかったかどうか等、 配布ファイルの完全性の検証が行われます。

図2.19 配布ファイルの検証
配布ファイルの検証

最後に、検証された配布ファイルがディスクへ取り出されます。

図2.20 配布ファイルの取り出し
配布ファイルの取り出し

必要な配布ファイルがすべて取り出されたら、 bsdinstall は、 インストール後の作業 (「インストール後の作業」) に進みます。

2.9. インストール後の作業

FreeBSD のインストールが完了したら、 さまざまなオプションの設定に移ります。 新しくインストールした FreeBSD を起動する前に、 最後のメニューの configuration オプションの項目に入りなおすことでも、 オプションの設定を変更できます。

2.9.1. root パスワードの設定

root のパスワードを設定する必要があります。 パスワードを入力している際に、入力している文字は画面に表示されません。 パスワードの入力後、もう一度入力する必要があります。 これは入力ミスを防ぐためです。

図2.21 root パスワードの設定
root パスワードの設定

パスワードの入力に成功したら、インストールは次に進みます。

2.9.2. ネットワークインタフェースの設定

注記:

bootonly によるインストール作業の一部として、 すでにネットワークの設定を終えているのであれば、 この作業を飛ばすことができます。

次に、コンピュータが認識したすべてのネットワークインタフェースが表示されます。 設定するネットワークインタフェースを選んでください。

図2.22 イーサネットインタフェースの選択
イーサネットインタフェースの選択

2.9.2.1. ワイヤレスネットワークインタフェースの設定

ワイヤレスネットワークインタフェースを選択したのであれば、 ネットワークに接続するようにワイヤレス認証およびセキュリティパラメータの入力が必要となります。

ワイヤレスネットワークは Service Set Identifier (SSID) によって識別されます。 SSID は、それぞれのネットワークに与えられる、短く、一意的な名前です。

ほとんどのワイヤレスネットワークは、 送信データを暗号化して、情報を盗聴から保護します。 WEP のような古い暗号の安全性は低いので、 WPA2 暗号を強く薦めます。

ワイヤレスネットワークへ接続する最初のステップは、 ワイヤレスアクセスポイントのスキャンです。

図2.23 ワイヤレスアクセスポイントのスキャン
ワイヤレスアクセスポイントのスキャン

スキャンで見つかった SSID の一覧が、 そのネットワークで利用できる暗号化のタイプの説明とともに表示されます。 もし、期待した SSID が一覧に表示されないのであれば、 [ Rescan ] を選択してもう一度スキャンしてください。 もし、期待したネットワークが表示されないのであれば、 接続のためのアンテナやコンピュータをアクセスポイントの近くに移動させてみてください。 その後もう一度スキャンしてください。

図2.24 ワイヤレスネットワークの選択
ワイヤレスネットワークの選択

ネットワークの選択後、ワイヤレスネットワークに接続するための暗号情報を入力します。 WPA2 では、 パスワード (Pre-Shared Key または PSK とも呼ばれます) のみが必要です。 セキュリティ上の観点から、入力ボックスに入力した文字はアスタリスクで表示されます。

図2.25 WPA2 のセットアップ
WPA2 のセットアップ

ワイヤレスネットワークを選択後、 ネットワークの設定は接続情報の入力に進みます。

2.9.2.2. IPv4 ネットワークの設定

IPv4 ネットワークを使うかどうかを選択してください。 これは、ネットワーク接続の最も一般的なタイプです。

図2.26 IPv4 ネットワークの選択
IPv4 ネットワークの選択

IPv4 の設定方法は 2 通りあります。 DHCP はネットワークインタフェースを自動的に適切に設定する方法で、 推奨されています。 Static 設定では、 ネットワーク情報を手動で入力する必要があります。

注記:

適当なネットワーク情報を入力しても動かないので、 ネットワーク管理者またはサービスプロバイダから 「ネットワークの詳細をまとめる」 に示されている情報を入手してください。

2.9.2.2.1. IPv4 DHCP ネットワークの設定

DHCP サーバを利用できるのであれば、 [ Yes ] を選択して、 ネットワークインタフェースの設定を自動的に行ってください。

図2.27 IPv4 DHCP 設定の選択
IPv4 DHCP 設定の選択

2.9.2.2.2. 静的な IPv4 ネットワークの設定

静的なネットワークインタフェースの設定では、 いくつかの IPv4 情報を入力する必要があります。

図2.28 IPv4 Static 設定
IPv4 Static 設定

  • IP Address - コンピュータに手動で与える IP アドレスです。 このアドレスは一意的なものである必要があり、 ローカルネットワーク上の他のネットワーク機器で使われていてはいけません。

  • Subnet Mask - ローカルネットワークで用いられるサブネットマスクです。 一般的には 255.255.255.0 です。

  • Default Router - このネットワークのデフォルトルータの IP アドレスです。 これは、通常ルータか、 ローカルネットワークをインターネットへ接続するネットワーク機器のことです。 デフォルトゲートウェイ とも呼ばれます。

2.9.2.3. IPv6 ネットワークの設定

IPv6 はネットワークの設定の新しい方法です。 IPv6 が利用でき、希望するのであれば、 [ Yes ] を選択してください。

図2.29 IPv6 ネットワークの設定
IPv6 ネットワークの設定

IPv6 の設定に関しても 2 つの方法があります。 SLAAC (StateLess Address AutoConfiguration) は、ネットワークインタフェースを自動的に適切に設定します。 Static 設定では、ネットワーク情報を手動で入力する必要があります。

2.9.2.3.1. IPv6 Stateless Address Autoconfiguration

SLAAC では、IPv6 ネットワークコンポーネントがローカルルータから自動設定に関する情報をリクエストできるようにします。 詳細については、RFC4862 をご覧ください。

図2.30 IPv6 SLAAC 設定の選択
IPv6 SLAAC 設定の選択

2.9.2.3.2. 静的な IPv6 ネットワークの設定

静的なネットワークインタフェースの設定では、 IPv6 の設定に関する情報を入力する必要があります。

図2.31 IPv6 static 設定
IPv6 static 設定

  • IPv6 Address - このコンピュータに割り当てられた IP アドレスです。 手動で設定します。 このアドレスは一意的なものである必要があり、 ローカルネットワーク上の他のネットワーク機器で使われていてはいけません。

  • Default Router - このネットワークのデフォルトルータの IPv6 アドレスです。 これは、通常ルータか、 ローカルネットワークをインターネットへ接続するネットワーク機器のことです。 デフォルトゲートウェイ とも呼ばれます。

2.9.2.4. DNS の設定

Domain Name System (または DNS) リゾルバは、ホスト名とネットワークアドレスを変換します。 すでに DHCP または SLAAC を使って自動的にネットワークインタフェースを設定したのであれば、 Resolver Configuration には値がすでに入っているでしょう。 そうでなければ、Search フィールドにローカルネットワークのドメイン名を入力してください。 DNS #1 および DNS #2 は、 ローカル DNS サーバの IP アドレスです。 少なくとも、1 つの DNS サーバは必要です。

図2.32 DNS の設定
DNS の設定

2.9.3. タイムゾーンの設定

使用しているコンピュータのタイムゾーンを設定することで、 地域による時刻の違いが自動的に調整され、 タイムゾーンに関連した機能が適切に取り扱われます。

ここでの例では、コンピュータが United States の Eastern タイムゾーンにあるものとします。 実際の地理的位置を選択してください。

図2.33 ローカルまたは UTC クロックの選択
ローカルまたは UTC クロックの選択

コンピュータのクロックの設定にしたがい、 [ Yes ] または、 [ No ] を選択し、Enter を押しください。 UTC とローカルタイムのどちらを選ぶべきかわからない場合には、 [ No ] を選択して、より一般的なローカルタイムに設定してください。

図2.34 地域の選択
地域の選択

矢印キーを使って、適切な地域を選択し、 Enter を押してください。

図2.35 国名の選択
国名の選択

矢印キーを使って、適切に国名を選び、 Enter を押してください。

図2.36 タイムゾーンの選択
タイムゾーンの選択

矢印キーを使って適切なタイムゾーンを選択し、 Enter を押してください。

図2.37 タイムゾーンの確定
タイムゾーンの確定

タイムゾーンの省略形が正しいかどうかを確認してください。 問題がないようであれば Enter を押して、 インストール後の設定を続けてください。

2.9.4. 有効にするサービスの選択

ブート時に起動するシステムサービスを追加で有効に出来ます。 これらのサービスはすべてオプションです。

図2.38 追加で有効にするサービスの選択
追加で有効にするサービスの選択

追加のサービス
  • sshd - 安全なリモートアクセスのためのセキュアシェル (SSH) デーモン

  • moused - システムのコンソールで、 マウスを利用できるようにします。

  • ntpd - 自動時刻同期のネットワークプロトコル (NTP) デーモン

  • powerd - 電源の管理およびエネルギーを節約するための電源コントロールユーティリティ

2.9.5. クラッシュダンプの設定

次に bsdinstall は、 クラッシュダンプの設定に移ります。 システムのデバッグを行う上で、 クラッシュダンプにより得られる情報は非常に有用です。 可能であればクラッシュダンプを有効にすると良いでしょう。 [ Yes ] を選択してクラッシュダンプを有効にするか、または [ No ] を選択してクラッシュダンプを無効化し、先に進んでください。

図2.39 クラッシュダンプの設定
クラッシュダンプの設定

2.9.6. ユーザの追加

システムに root でログインすることを避けるため、 インストール時には、少なくとも一人のユーザを追加してください。 root 権限では、実行に対して制限がなく、また、保護されません。 通常のユーザでログインすることにより、 安全でセキュリティ的に危険が少なくなります。

[ Yes ] を選択し、 新しいユーザを追加してください。

図2.40 新しいユーザのアカウントの作成
新しいユーザのアカウントの作成

追加するユーザの情報を入力してください。

図2.41 ユーザ情報の入力
ユーザ情報の入力

ユーザの情報
  • Username - ログイン時のユーザ名を入力します。典型的なものでは、 ファーストネームの最初の文字とラストネームを組み合わせます。

  • Full name - ユーザのフルネーム

  • Uid - ユーザ ID 番号。 通常は、システムが自動的に割り当てるように、 空欄のままにします。

  • Login group - 新しいユーザのログイングループ。 空欄のままにすると、自動的に割り当てられます

  • Invite user into other groups? - ユーザを別のグループのメンバーとして追加するかどうか。

  • Login class - 空欄にするとデフォルトの設定になります。

  • Shell - ユーザのログインシェル。 この例では csh(1) に設定されています。

  • Home directory - ユーザのホームディレクトリ。 通常は、デフォルトの場所が適切です。

  • Home directory permissions - ユーザのホームディレクトリの権限。 通常は、デフォルトが適切です。

  • Use password-based authentication? - 通常は yes です。

  • Use an empty password? - 通常は no です。

  • Use a random password? - 通常は no です。

  • Enter password - ユーザのパスワードです。 入力している文字は画面に表示されません。

  • Enter password again - 確認のため、パスワードをもう一度入力します。

  • Lock out the account after creation? - 通常は no です。

すべてを入力したら、サマリが表示され、 正しいかどうかの確認を求められます。 入力した情報に間違いがあれば、 no を入力してもう一度作業を行なってください。 すべてが正しく入力されていれば、 yes を入力して、新しいユーザを作成してください。

図2.42 ユーザおよびグループの管理を終了する
ユーザおよびグループの管理を終了する

さらにユーザを追加するのであれば、 Add another user? の質問に対し、 yes を入力してください。 no を入力すると、ユーザの追加が終わり、次に進みます。

ユーザの追加や、ユーザ管理の詳細については、 「この章では」 を参照してください。

2.9.7. 最後の設定

すべてをインストールし、設定が終わった後に、 最後に設定を修正する機会が与えられます。

図2.43 最後の設定
最後の設定

インストールを完了する前に、 このメニューを使って変更、または、追加の設定を行なってください。

最終の設定オプション

最後の設定が完了したら、Exit を選んでインストールを終了してください。

図2.44 Manual Configuration
Manual Configuration

新しいシステムを再起動する前に、 bsdinstall は追加の設定が必要かどうかを尋ねてきます。 [ Yes ] を選択して新しいシステムのシェルに入るか、または [ No ] を選択して、インストールの最後のステップに進んでください。

図2.45 インストールの終了
インストールの終了

追加の設定や、特別なセットアップが必要であれば、 [ Live CD ] を選んでインストールメディアを Live CD モードで起動してください。

インストールが終わったら、 [ Reboot ] を選んで、 コンピュータを再起動し、新しい FreeBSD システムを動かしてください。 再起動する前には、忘れずに FreeBSD インストール CD, DVD または USB メモリスティックを外してください。 さもないと、もう一度インストールメディアから起動してしまいます。

2.9.8. FreeBSD の起動とシャットダウン

2.9.8.1. FreeBSD/i386 の起動

FreeBSD の起動時には、多くのメッセージが画面に表示されます。 ほとんどは、画面上からスクロールして見えなくなってしまいますが、 これは正常です。システムの起動が終わった後で、 ログインプロンプトが表示されます。 画面上からスクロールして消えてしまったメッセージは Scroll-Lock を押し、 scroll-back buffer で、見ることができます。 PgUp, PgDn そして矢印キーでメッセージをスクロールバックできます。 Scroll-Lock をもう一度押すと、画面のロックを外し、 通常の画面に戻ることができます。

login: プロンプトで、 インストール時に追加したユーザ名を入力してください。 この例では、asample です。 必要のない限り、root でのログインを避けてください。

上で示した scroll-back buffer では、バッファの容量制限により、 すべてが表示されないかもしれません。 ログインの後にプロンプトからコマンドラインで dmesg | less と入力することによって、すべてを見ることができます。 確認後に q を押すと、コマンドラインに戻ります。

典型的なブートメッセージ (バージョン情報は省略しています)

Copyright (c) 1992-2011 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.

    root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz (3007.77-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x10676  Family = 6  Model = 17  Stepping = 6
  Features=0x783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x209<SSE3,MON,SSSE3>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
real memory  = 536805376 (511 MB)
avail memory = 491819008 (469 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <VBOX   VBOXAPIC>
ioapic0: Changing APIC ID to 1
ioapic0 <Version 1.1> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <VBOX VBOXXSDT> on motherboard
acpi0: Power Button (fixed)
acpi0: Sleep Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x4008-0x400b on acpi0
cpu0: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xd000-0xd00f at device 1.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
vgapci0: <VGA-compatible display> mem 0xe0000000-0xe0ffffff irq 18 at device 2.0 on pci0
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.0.3> port 0xd010-0xd017 mem 0xf0000000-0xf001ffff irq 19 at device 3.0 on pci0
em0: Ethernet address: 08:00:27:9f:e0:92
pci0: <base peripheral> at device 4.0 (no driver attached)
pcm0: <Intel ICH (82801AA)> port 0xd100-0xd1ff,0xd200-0xd23f irq 21 at device 5.0 on pci0
pcm0: <SigmaTel STAC9700/83/84 AC97 Codec>
ohci0: <OHCI (generic) USB controller> mem 0xf0804000-0xf0804fff irq 22 at device 6.0 on pci0
usbus0: <OHCI (generic) USB controller> on ohci0
pci0: <bridge> at device 7.0 (no driver attached)
acpi_acad0: <AC Adapter> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atrtc0: <AT realtime clock> at port 0x70 irq 8 on isa0
Event timer "RTC" frequency 32768 Hz quality 0
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
pcm0: measured ac97 link rate at 485193 Hz
em0: link state changed to UP
usbus0: 12Mbps Full Speed USB v1.0
ugen0.1: <Apple> at usbus0
uhub0: <Apple OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <VBOX CD-ROM 1.0> Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: <VBOX HARDDISK 1.0> ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 65536bytes)
ada0: 12546MB (25694208 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad0
Timecounter "TSC" frequency 3007772192 Hz quality 800
Root mount waiting for: usbus0
uhub0: 8 ports with 8 removable, self powered
Trying to mount root from ufs:/dev/ada0p2 [rw]...
Setting hostuuid: 1848d7bf-e6a4-4ed4-b782-bd3f1685d551.
Setting hostid: 0xa03479b2.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/ada0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ada0p2: clean, 2620402 free (714 frags, 327461 blocks, 0.0% fragmentation)
Mounting local file systems:.
vboxguest0 port 0xd020-0xd03f mem 0xf0400000-0xf07fffff,0xf0800000-0xf0803fff irq 20 at device 4.0 on pci0
vboxguest: loaded successfully
Setting hostname: machine3.example.com.
Starting Network: lo0 em0.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 08:00:27:9f:e0:92
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
Starting devd.
Starting Network: usbus0.
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 192.168.1.142 -- renewal in 43200 seconds.
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
add net fe80::: gateway ::1
add net ff02::: gateway ::1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
32-bit compatibility ldconfig path: /usr/lib32
Creating and/or trimming log files.
Starting syslogd.
No core dumps found.
Clearing /tmp (X related).
Updating motd:.
Configuring syscons: blanktime.
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com
The key's randomart image is:
+--[RSA1 1024]----+
|    o..          |
|   o . .         |
|  .   o          |
|       o         |
|    o   S        |
|   + + o         |
|o . + *          |
|o+ ..+ .         |
|==o..o+E         |
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com
The key's randomart image is:
+--[ DSA 1024]----+
|       ..     . .|
|      o  .   . + |
|     . ..   . E .|
|    . .  o o . . |
|     +  S = .    |
|    +  . = o     |
|     +  . * .    |
|    . .  o .     |
|      .o. .      |
+-----------------+
Starting sshd.
Starting cron.
Starting background file system checks in 60 seconds.

Thu Oct  6 19:15:31 MDT 2011

FreeBSD/amd64 (machine3.example.com) (ttyv0)

login:

低速なマシンでは、 RSA および DSA キーを作成するのに少々時間がかかるかもしれません。 これはインストール後の最初の起動時に、sshd のセットアップが自動的に開始する時に実行されます。 その後の起動はより速くなるでしょう。

FreeBSD はデフォルトでは、グラフィカルな環境をインストールしませんが、 多くのものを利用できます。 6章X Window System をご覧ください。

2.9.9. FreeBSD のシャットダウン

適切に FreeBSD をシャットダウンすることは、 ハードウェアをダメージから守ったり、データの保護につながります。 ただ電源を落すということはしないでください。 wheel グループのメンバとなっているユーザは、 コマンドラインから su と入力し、 root パスワードを入力して root となってください。 または root としてログインし、 shutdown -p now を使用します。システムは正しくシャットダウンし、電源が落ちます。

Ctrl+Alt+Del というキーの組合せを使ってシステムをリブートすることもできますが、 通常の運用においてこれは推奨されません。

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

この節では、インストールの際の、 これまで報告された共通の問題に対する解決のための情報が書いてあります。

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

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

インストールする FreeBSD のバージョンの ハードウェアノート を調べて、 使っているハードウェアに対応しているかどうかを確認してください。

もしハードウェアがサポートされているにもかかわらず、 動作しなかったり他の問題点がある時は、カスタムカーネル を構築する必要があります。GENERIC カーネルに含まれていないデバイスのサポートを追加することができます。 起動ディスクのカーネルでは、ほとんどのハードウェアデバイスの IRQ, IO アドレス、 DMA チャネルが工場出荷時の状態であると設定されています。 もしハードウェアの設定が変更されていると、 カーネルコンフィグレーションファイルを編集し、 再コンパイルを行なって、これらの値を FreeBSD に設定しなければなりません。

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

注記:

いくつかのインストール上の問題はさまざまなハードウェア装置の、 特にマザーボードのファームウェアのアップデートで回避または緩和することができます。 マザーボードのファームウェアは BIOS と呼ばれることもあり、 多くのマザーボードまたはコンピュータ製造メーカーは、 アップデートやアップグレード情報を載せているウェブサイトを用意しています。

通常、製造メーカーは、 重要な更新のようなそれなりの理由がない限り、マザーボードの BIOS のアップグレードは行わないよう推奨しています。 アップデートの過程で失敗する可能性があり、 その場合 BIOS が不完全な状態になり、 コンピュータが動作しない原因となり得るからです。

2.10.2. トラブルシューティングに関する Q & A

2.10.2.1. 起動時のハードウェア検出で、システムがハングアップします。 または、インストール中にシステムがおかしくなります。

2.10.2.1.

起動時のハードウェア検出で、システムがハングアップします。 または、インストール中にシステムがおかしくなります。

i386, amd64 および ia64 プラットフォームにおいて、 FreeBSD はシステムの設定を手助けするシステム ACPI サービスを、 起動時に検出された場合に広く使います。 残念ながら、まだいくつかの不具合が、 ACPI ドライバとシステムのマザーボードおよび BIOS ファームウェア両方に存在しています。 起動ステージ 3 において、ヒント情報 hint.acpi.0.disabled を以下のように設定すると ACPI を無効にできます。

set hint.acpi.0.disabled="1"

この設定はシステムが起動するたびにリセットされるので、 /boot/loader.conf ファイルに hint.acpi.0.disabled="1" を追加してください。 ブートローダのより詳しい情報については 「この章では」 で説明します。

2.11. Live CD を使う

FreeBSD の live CD は、メインのインストールプログラムと同じ CD に含まれています。 オペレーティングシステムに FreeBSD を使おうかどうか考えている方や、 インストールする前に機能を試して見たいと思っている方に有用です。

注記:

live CD を使う際は、以下のことに気をつけてください。

  • システムにアクセスする際には、認証を求められます。 ユーザ名は root、 パスワードは空欄としてください。

  • システムは CD から起動するため、 ハードディスクにインストールされたシステムに比べ、 パフォーマンスはかなり遅い可能性があります。

  • live CD のユーザインタフェースはコマンドプロンプトです。 グラフィカルなユーザインタフェースではありません。

第3章 FreeBSD 8.X のインストール

再構成、部分的に書き直し: Mock Jim [FAMILY Given].
Sysinstall について、ウォークスルー、スクリーンショット、 及びその他原稿: Pratt Randy [FAMILY Given].

3.1. この章では

FreeBSD は、 テキストベースの使いやすいインストールプログラムを用意しています。 FreeBSD 9.0-RELEASE 以降では bsdinstall(8) と呼ばれるインストールプログラムを使い、 FreeBSD 8.X では sysinstall(8) を使います。 この章では、sysinstall(8) の使い方について説明します。 bsdinstall(8) の利用については 2章FreeBSD のインストール (9.X 以降の場合) で説明します。

この章を読めば、次のことがわかるでしょう:

  • FreeBSD インストールメディアの作り方。

  • FreeBSD がハードディスクをどのように参照するか、 またどのように分割するか。

  • sysinstall(8) をどのように起動するか。

  • sysinstall(8) が聞いてくる質問がどのような意味であり、 またどのように答えれば良いか。

この章を読む前に、以下のことを確認して下さい:

  • インストールしようとするバージョンの FreeBSD に付属しているサポートハードウェア一覧を読んで、 システムのハードウェアがサポートされているかどうか確認して下さい。

注記:

この章で説明しているインストール手順は、i386™ および FreeBSD/amd64 アーキテクチャを対象にしています。 他のプラットフォームに特有の説明についても、 該当する場所に明記しています。 インストーラとこの文書で記述している内容との間にはいくらかズレがあります。 この章を正確なインストールマニュアルとしてではなく、 一般的なガイドとしてご利用ください。

3.2. ハードウェア要件

3.2.1. 最小構成

FreeBSD をインストールする最小構成は、 FreeBSD のバージョンやハードウェアのアーキテクチャによって異なります。

以下の節では、最小構成についての情報をまとめています。 また、FreeBSD のインストール方法によって、フロッピードライブ、 CDROM ドライブ、もしくはネットワークアダプタが必要となります。 インストールメディアの準備方法については、 「ブートメディアの準備」 で説明されています。

3.2.1.1. FreeBSD/i386 および FreeBSD/pc98

FreeBSD/i386 と FreeBSD/pc98 の両方のアーキテクチャは、 486 以上のプロセッサと、 少なくとも 24 MB の RAM が必要です。 最小のインストールでは、 少なくとも 150 MB のハードディスクの空き容量が必要です。

注記:

通常、古いハードウェアでは、 速いプロセッサを入手するより、より多くの RAM やより多くの容量のハードドライブを用意するほうが重要となります。

3.2.1.2. FreeBSD/amd64

FreeBSD/amd64 を実行可能なプロセッサには 2 つのクラスがあります。 1 つ目のクラスは、AMD Athlon™64, AMD Athlon™64-FX, AMD Opteron™ やそれより新しいプロセッサです。

もう 1 つのクラスは、 Intel® EM64T アーキテクチャを採用しているプロセッサです。 これらのプロセッサの例は、 Intel® Core™ 2 Duo, Quad, Extreme プロセッサファミリおよび Intel® Xeon™ 3000, 5000, および 7000 系のプロセッサです。

nVidia nForce3 Pro-150 ベースのコンピュータを使用するには、 BIOS のセットアップを使って、IO APIC を無効にする 必要があります。 もし、このようなオプションがなければ、 かわりに ACPI を無効にしてください。 Pro-150 チップセットには回避策が見つかっていないバグがあるためです。

3.2.1.3. FreeBSD/sparc64

FreeBSD/sparc64 をインストールするには、 サポートされているプラットフォームが必要です (「サポートされているハードウェア」 をご覧ください)。

現時点では、他のオペレーティングシステムとディスクの共有ができないので、 FreeBSD/sparc64 専用のディスクが必要です。

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

サポートされるハードウェアのリストは FreeBSD のリリースと一緒に FreeBSD ハードウェアノートとして提供されます。 このドキュメントは通常 CDROM や FTP 配布の一番上のディレクトリや sysinstall(8) のドキュメントメニューにある HARDWARE.TXT という名のファイルで見ることができます。 アーキテクチャごとに用意されるそのリストを見ることで、FreeBSD の各リリースでどのようなハードウェア装置がサポートされるかがわかります。 リリースごと、およびアーキテクチャごとのハードウェアリストは、 FreeBSD のウェブサイトの リリース情報 のページにあります。

3.3. インストール前に行う作業

3.3.1. コンピュータの部品一覧を作る

FreeBSD をインストールする前に、 コンピュータで使用している部品の一覧を作っておくといいでしょう。 FreeBSD のインストールルーチンでは、ハードディスク、ネットワークカード、 CDROM ドライブなどの部品を、モデル番号、メーカー名とともに表示します。 さらにこれらのデバイスについて、使用する IRQ, I/O ポートまで含めて正しい設定を認識しようと試みます。 しかし、コンピュータのハードウェアによっては、 この過程が完全に成功するとは限らず、 手動で修正しなければならないこともあります。

既に別のオペレーティングシステムがインストールされているのであれば、 それらのオペレーティングシステムでのハードウェアの設定を参考にすると良いでしょう。 拡張カードなどの設定がよく分からない場合は、 カードそのものに印刷されていることもあります。 よく使われる IRQ は 3, 5, 7 で、I/O ポートアドレスは通常 0x330 のような 16 進数で書かれています。

FreeBSD をインストールする前に、 これらの情報を印刷するか書き留めておくことを勧めます。 例えば次のような表です:

表3.1 サンプルデバイス一覧
デバイスの名前IRQI/O ポートメモ
1 台目のハードディスクN/AN/A40 GB, Seagate 製、プライマリ IDE マスタ
CDROMN/AN/Aプライマリ IDE スレーブ
2 台目のハードディスクN/AN/A20 GB, IBM 製、セカンダリ IDE マスタ
1 つ目の IDE コントローラ140x1f0 
ネットワークカードN/AN/AIntel® 10/100
モデムN/AN/A3Com® 56K ファックスモデム、COM1 に接続
   

コンピュータで使用している部品の一覧を作成したら、 インストールする FreeBSD のリリースのハードウェア要件を満たしているかどうかを確認してください。

3.3.2. データのバックアップ

コンピュータに価値のあるデータが入っている場合には、 FreeBSD をインストールする前に、データのバックアップをとり、 さらに正しくバックアップがとれていることを確認して下さい。FreeBSD のインストーラは、ハードディスクに実際に書き込む前に確認を求めますが、 一度実際に書き込む作業が始まってしまうと、 もう元に戻すことはできません。

3.3.3. FreeBSD をインストールする場所の決定

ハードディスク全体に FreeBSD をインストールする場合には、 この節は読み飛ばしてください。

しかし FreeBSD を他のオペレーティングシステムと共存させる必要がある場合は、 データがディスクにどのように配置されるかを大まかに理解する必要があります。

3.3.3.1. FreeBSD/i386 アーキテクチャでのディスクレイアウト

PC のディスクは、 パーティション と呼ばれる、 個別の塊に分割することができます。 FreeBSD は内部にもパーティションを持つので、この名称は混乱をおこします。 そのため、FreeBSD ではこの塊をスライスと呼びます。 たとえば、fdisk(8) の FreeBSD 版は、 パーティションではなくスライスと呼びます。 PC では、ディスク 1 台あたり 4 つまでパーティションを作成できます。 これらのパーティションはプライマリパーティションと呼ばれます。 この制限を回避し、 4 つ以上のパーティションを作成するために拡張パーティションと呼ばれる新しいパーティション形式が作られました。 ディスク 1 台につき 1 つだけ拡張パーティションを作成できます。 論理パーティションと呼ばれる特別のパーティションは、 この拡張パーティションの内部に作成できます。

それぞれのパーティションは、 そのパーティションに含まれるデータの形式を示す数字である、 パーティション ID を持ちます。FreeBSD パーティションのパーティション ID は 165です。

通常、各オペレーティングシステムは、 それぞれ独自の方法で個々のパーティションを識別します。 たとえば Windows® は、 プライマリパーティションおよび論理パーティションそれぞれに C: から始まる ドライブレターを割り当てます。

FreeBSD はプライマリパーティションにインストールしなければなりません。 複数のディスクがある場合は、そのうちのいくつか、もしくはすべてに、 FreeBSD パーティションを作成することもできます。 FreeBSD をインストールする時は 少なくとも 1 つのパーティションを使用可能にしておかなければなりません。 このパーティションは、空白のパーティション、 もしくは無くなっても構わないデータしか入っていない、 既存のパーティションでも構いません。

すべてのディスクのすべてのパーティションが使用されている場合は、 他のオペレーティングシステムで提供されているツール (たとえば Windows® の fdisk) を使用して、 そのうちの 1 つを FreeBSD のために解放してください。

予備のパーティションがある場合には、それを使ってください。 もし、利用できる容量が少なければ、 1 つまたは複数の既存のパーティションを縮小して、 利用できる容量を確保してください。

FreeBSD の最小のインストールには、100 MB 程度のディスク容量が必要です。 しかしこれは非常に小さなインストールであり、 自分のファイルを作成するスペースはほとんど残らないでしょう。 現実的には、グラフィカルな環境が必要ないのであれば 250 MB、 グラフィカルユーザインタフェースを使用するのであれば 350 MB 以上は必要でしょう。 その上、サードパーティ製ソフトウェアをインストールするならば、 さらに多くのスペースが必要になるでしょう。

FreeBSD のためのスペースを用意する際、 パーティションサイズを変更するために、 GParted などのツールを使用できます。 GParted は、 NTFS を操作することができ、 SystemRescueCD といった多くの Live CD Linux ディストリビューションで利用できます。

警告:

パーティションサイズを縮小するツールの使用方法を誤ると、 ディスク上のデータが消えてしまう可能性があります。 この種のツールを使う際には、 使用前に必ず最新のデータのバックアップをとって下さい。

例3.1 既存のパーティションを変更せずに使用

既に Windows® がインストールされている 4 GB のハードディスクが 1 台接続されており、そのハードディスクは 2 つのドライブレター C: および D: に分割されており、それぞれのサイズが 2 GB であるとします。 C: には 1 GB, D: には 0.5 GB のデータがあるとします。

ディスクには、ドライブレター 1 つあたり 1 つのパーティション、 合計で 2 つのパーティションがあることを意味します。 この場合、D: にあるデータをすべて C: にコピーすれば、 2 つ目のパーティションを解放し、FreeBSD のために使うことができるでしょう。


例3.2 既存のパーティションを縮小する

既に Windows® がインストールされている 4 GB のハードディスクが 1 台接続された PC を使用しているとします。さらに Windows® をインストールする際、1 つの大きなパーティションを作成し、 C: ドライブとして 4 GB を割り当てたとします。 現在 1.5 GB 使用しており、FreeBSD で 2 GB 使いたいとします。

FreeBSD をインストールするためには、 以下のどちらかを行わなければなりません。

  1. Windows® のデータをバックアップし、インストール時に 2 GB のパーティションを作成して Windows® を再インストールする。

  2. 先に述べた Windows® パーティションを縮小するツールを使用する。


3.3.4. ネットワーク設定の詳細をまとめる

FTP サイトまたは NFS サーバからインストールする場合は、 ネットワークの設定を知る必要があります。 インストールを完了するためにネットワークに接続できるよう、 これらの情報をインストーラのプロンプトに入力する必要があります。

3.3.4.1. イーサネットもしくはケーブル / DSL モデムでの接続

イーサネットネットワークに接続する場合や、 ケーブル / DSL モデム経由でイーサネットアダプタを利用してインターネットに接続する場合は、 次の情報が必要になります:

  1. IP アドレス

  2. デフォルトゲートウェイの IP アドレス

  3. ホスト名

  4. DNS サーバの IP アドレス

  5. サブネットマスク

これらの情報がわからなければ、 システム管理者かサービスプロバイダに問い合わせて下さい。 DHCP を使用して、この情報を自動的に割り当てることもあります。

3.3.4.2. モデムを使用した接続

非常に長い時間がかかりますが、 ダイアルアップモデムを使って、 インターネット経由で FreeBSD をインストールできます。

この場合、以下の内容をあらかじめ確認しておく必要があります:

  1. インターネットサービスプロバイダ (ISP) にダイアルする際の電話番号

  2. 接続に使用する COM: ポート

  3. ISP のアカウントのユーザ名及びパスワード

3.3.5. FreeBSD Errata の確認

FreeBSD プロジェクトでは FreeBSD の各リリースができる限り安定するよう努力していますが、 時々バグが発生してしまうことがあります。極まれに、 発生したバグによりインストールプロセスに影響を与えることがあります。 これらの問題は発見され解決されるとともに、 FreeBSD のウェブサイトの FreeBSD Errata に掲示されます。 注意すべき既知の問題が無いことを確かめるために、インストールする前に Errata を確認してください。

Errata を含む、すべてのリリースに関する情報は、 FreeBSD のウェブサイトリリース情報 の項で確認することができます。

3.3.6. FreeBSD インストールファイルの入手

FreeBSD のインストーラは、 以下のいずれかの場所に置いてあるファイルから FreeBSD をインストールします。

ローカルメディア
  • CDROM または DVD

  • USB メモリスティック

  • 同じコンピュータ上の MS-DOS® パーティション

  • フロッピーディスク (FreeBSD/pc98 のみ)

ネットワーク
  • ファイアウォール経由または HTTP プロキシを利用した FTP サイト

  • NFS サーバ

  • パラレルまたはシリアル専用接続

購入した CD または DVD から FreeBSD をインストールするのであれば、 「ブートメディアの準備」 を読み飛ばしてください。

FreeBSD のインストールファイルを入手するには、 「カスタムインストールメディアの準備」 まで読み飛ばしてください。 インストールメディアをどのように準備すれば良いか説明しています。 このセクションを読み終わった後、ここに戻ってきて、 「ブートメディアの準備」 を読んでください。

3.3.7. ブートメディアの準備

FreeBSD のインストールプロセスは、FreeBSD インストーラでコンピュータを起動することから始まります。 インストーラは、 別のオペレーティングシステムで実行するプログラムではありません。 通常、コンピュータはハードディスクにインストールされたオペレーティングシステムから起動しますが、 CDROM や USB ディスクから起動するように設定することもできます。

ヒント:

CDROM および DVD からの起動が可能な BIOS を持つコンピュータに CDROM または DVD をインストールするのであれば、 この節を飛ばしてください。 FreeBSD の CDROM と DVD イメージは起動可能であり、 他の特別な準備をすることなく FreeBSD のインストールで利用できます。

起動可能なメモリスティックを作成する場合には、 以下の手順にしたがってください。

  1. メモリスティックのイメージの取得

    FreeBSD 8.X のメモリスティックのイメージは、 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/arch/ISO-IMAGES/version/FreeBSD-version-RELEASE-arch-memstick.imgISO-IMAGES/ ディレクトリからダウンロードできます。 ここで、 archversion の部分を、 それぞれインストールするアーキテクチャとバージョン番号に置き換えてください。 たとえば、FreeBSD/i386 9.3-RELEASE のメモリスティックのイメージは、ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/9.3/FreeBSD-9.3-RELEASE-i386-memstick.img から入手できます。

    ヒント:

    FreeBSD 9.0-RELEASE からは、 異なるディレクトリパスが使われています。 FreeBSD 9.X のダウンロードとインストールの詳細については、 2章FreeBSD のインストール (9.X 以降の場合) で説明します。

    メモリスティックイメージには、.img という拡張子がついています。ISO-IMAGES/ ディレクトリには複数の異なるイメージがあり、 用いるべきイメージは、 FreeBSD のバージョンやインストールするハードウェアが対応しているメディアに依存します。

    重要:

    以下の作業によってデータが消去されるので、 先に進む前に、使用する USB スティックにあるデータをバックアップしてください。

  2. イメージファイルをメモリスティックに書き込む

    手順3.1 FreeBSD を使ってイメージを書き込む

    警告:

    以下の例では、起動するデバイスを /dev/da0 としています。 適切なデバイスを出力先に設定していることを十分確認してくだい。 さもなければ、現在あるデータを破壊してしまうでしょう。

    • イメージを dd(1) を使って書き込む

      .img ファイルは、 単純にメモリスティックにコピーされるような、 通常のファイルではありません。 ディスクの内容の完全なイメージです。 したがって、dd(1) を使用して、 直接ディスクにイメージを書き込む必要があります。

      # dd if=FreeBSD-9.3-RELEASE-i386-memstick.img of=/dev/da0 bs=64k

      Operation not permitted エラーが表示されたら、ターゲットデバイスが他で利用されていないかどうか、 マウントされていないかどうか、 他のプログラムが自動的にマウントしていないかどうかを確認してください。 その後、もう一度実行してください。

    手順3.2 Windows® を使ってイメージを書き込む

    警告:

    以下のコマンドは、 指定したデバイスに現在あるデータを上書きして破壊してしまうので、 出力先に適切なドライブレターを設定していることを十分確認してくだい。

    1. Image Writer for Windows を入手する

      Image Writer for Windows は、 イメージファイルをメモリスティックに正しく書き込むことのできるフリーのアプリケーションです。 https://launchpad.net/win32-image-writer/ からダウンロードして、フォルダに展開してください。

    2. イメージライタを使ってイメージを書き込む

      Win32DiskImager アイコンをダブルクリックして、プログラムを起動します。 Device の下に表示されるデバイスレターが、 メモリスティックのドライブであることを確認してください。 フォルダのアイコンをクリックして、 メモリスティックに書き込むイメージファイルを選択します。 Save をクリックして、 イメージファイルの名前をアクセプトしてください。 すべてが正しく行われたかどうか、また、 他のウィンドウでメモリスティックのフォルダが開かれていないことを確認してください。 最後に、Write を押して、ドライブにイメージファイルを書き込みます。

FreeBSD/pc98 のインストール用に起動フロッピーディスクを作成するためには、 次のステップに従って下さい:

  1. 起動フロッピーイメージの取得

    FreeBSD/pc98 のブートディスクは、 floppies ディレクトリ、 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/pc98/version-RELEASE/floppies/. から入手できます。 ここで version の部分を、 それぞれインストールするバージョン番号に置き換えてください。

    フロッピーイメージは .flp という拡張子がついています。 floppies/ には複数の異なるイメージがあります。 boot.flp とともに、 kern.small* または kern* といったインストールの種類に関連づいた複数のファイルをダウンロードしてください。

    重要:

    FTP プログラムを使用してこれらのディスクイメージをダウンロードする時は、 必ずバイナリモードにして下さい。 Web ブラウザによっては テキスト または アスキー モードでダウンロードするものがあり、 ディスクから起動できないときは大抵これが原因です。

  2. フロッピーディスクの用意

    ダウンロードしたイメージファイル 1 つにつき 1 枚のフロッピーディスクを用意してください。 これらのディスクに欠陥があってはいけません。 これを確認する最も簡単な方法は、 自分自身でフォーマットしてみることです。 フォーマットする前のフロッピーを信用してはいけません。 Windows® のフォーマットユーティリティは、 不良ディスクがあっても教えてはくれないでしょう。 それらを bad とマークして、無視するだけです。 新品のフロッピーを使うことをお薦めします。

    重要:

    インストーラがクラッシュしたりフリーズしたり、 おかしな動作をした時、 まずはじめに疑うべきもののうちの 1 つはフロッピーです。 フロッピーイメージを新しいディスクに書き込んで、 もう一度試してみて下さい。

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

    .flp ファイルは、 ディスクにコピーできるような、 通常のファイルではありません。 完全なディスクの内容のイメージです。 イメージを直接ディスクに書き込む特別なツールを使用する必要があります。

    FreeBSD は、Windows® が動作しているコンピュータでフロッピーを作成する rawrite と呼ばれるツールを提供しています。 このツールは FreeBSD の FTP サイト上の ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/pc98/ version-RELEASE/tools/ からダウンロードできます。 このツールをダウンロードしたら、フロッピーを挿入してください。 その後、ファイル名を指定してフロッピードライブに書き込んでください。

    C:\> rawrite boot.flp A:

    毎回フロッピーディスクを入れ換え、 ファイルの名前を示すラベルを付けながら、 それぞれの .flp ファイルに対してこのコマンドを繰り返します。 .flp ファイルを置いた場所に応じて、 コマンドラインを変更して下さい。

    FreeBSD システムのような、 UNIX®-like システムでフロッピーへの書き込みを行う場合は、 イメージファイルを直接ディスクに書き込むために dd(1) を使ってください。FreeBSD 上では、 次のように実行してください。

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

    FreeBSD においては、/dev/fd0 が 1 台目のフロッピーディスクドライブを表します。 他の UNIX® システムでは、 フロッピーディスクデバイスには別の名前がついているかもしれないので、 必要に応じてそのシステムのドキュメントを確認して下さい。

これで FreeBSD をインストールする用意ができました。

3.4. インストールの開始

重要:

デフォルトでは、 次のメッセージが表示されるまでインストーラはディスクに何の変更も加えません。

Last Chance: Are you SURE you want continue the installation?

If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

We can take no responsibility for lost disk contents!

この最後の警告の前であれば、 いつでもハードディスクの内容を変更することなくインストールを中断できます。 もし、何かを間違って設定してしまったことが心配ならば、 最後の警告の前に単にコンピュータをオフにしてください。 被害を残さずに済みます。

3.4.1. 起動

3.4.1.1. i386™ アーキテクチャでの起動

  1. コンピュータの電源をいれます。 起動が始まると、すぐにシステムまたは BIOS のセットアップメニューに入るためのオプションが表示されるはずです。 一般的には F2, F10, Del のようなキーまたは Alt+S のようなキーの組合せです。 画面上に示されるキーを使用してください。 コンピュータによっては、 起動する間に画像を表示するものもあります。 大抵の場合、Esc キーを押すと、 画像が消えてブートメッセージが表示されます。

  2. どの装置からシステムが起動するかを制御する設定を探してください。 通常は Boot Order と呼ばれ、一般的には、 Floppy, CDROM, First Hard Disk などの装置の一覧として表示されています。

    CD または DVD から起動する場合には CDROM が選択されていることを、 USB ディスクから起動するなら USB ディスクが選択されていることを確認してください。 自信が無い場合は、 コンピュータやマザーボード付属のマニュアルを参照してください。

    変更を保存して終了してください。 コンピュータが再起動するはずです。

  3. 「ブートメディアの準備」 で説明されている 起動 USB スティックを使用する場合には、 コンピュータを立ち上げる前に、 USB スティックを挿入してください。

    CD または DVD から起動する場合、コンピュータを立ち上げ、 すぐに CD または DVD を挿入する必要があります。

    注記:

    FreeBSD/pc98 では、 インストール用の起動フロッピーが用意されており、 「ブートメディアの準備」 で説明されている方法で作成できます。 boot.flp が最初に挿入するフロッピーディスクです。 インストーラを起動できるように、 このフロッピーをフロッピードライブに挿入してください。

    もし、コンピュータがすでに存在している OS を読み込み、 通常通り起動してしまったのであれば、 以下の原因が考えられます。

    1. 起動ディスクが起動プロセスにおいて十分早いタイミングで挿入されていません。 ディスクをそのままにしてコンピュータを再起動してください。

    2. BIOS の変更が適切に行われていません。 正しいオプションを設定してやり直してください。

    3. 使用している BIOS は、 希望しているメディアからの起動に対応していません。

  4. FreeBSD は起動を開始します。CD または DVD から起動している場合、 次のような画面が表示されるでしょう。

    Booting from CD-Rom...
    645MB medium detected
    CD Loader 1.2
    
    Building the boot loader arguments
    Looking up /BOOT/LOADER... Found
    Relocating the loader and the BTX
    Starting the BTX loader
    
    BTX loader 1.00 BTX version is 1.02
    Consoles: internal video/keyboard
    BIOS CD is cd0
    BIOS drive C: is disk0
    BIOS drive D: is disk1
    BIOS 636kB/261056kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 1.1
    
    Loading /boot/defaults/loader.conf
    /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d]
    \

    フロッピーディスクから起動している場合、 次のような画面が現れるでしょう。

    Booting from Floppy...
    Uncompressing ... done
    
    BTX loader 1.00  BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive C: is disk1
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 1.1
    
    Loading /boot/defaults/loader.conf
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    Insert disk labelled "Kernel floppy 1" and press any key...

    boot.flp フロッピーを抜き、 次のフロッピーを挿入し、 Enter を押してください。 プロンプトが表示されたら、 要求される通りに他のディスクを挿入してください。

  5. 起動プロセスは FreeBSD ブートローダメニューを表示します。

    図3.1 FreeBSD ブートローダメニュー
    FreeBSD ブートローダメニュー

    10 秒間待つか、Enter を押してください。

3.4.1.2. SPARC64® アーキテクチャでの起動

ほとんどの SPARC64® システムは、 ディスクから自動的に起動するように設定されています。 FreeBSD をインストールするには、ネットワークまたは CD/DVD から起動し、ブートメッセージが表示されるまで待ってください。 モデルによりますが、以下のようなメッセージが表示されます。

Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.

もしシステムがディスクから起動するようでしたら、 キーボードから L1+A または Stop+A を押すか、シリアルコンソールから tip(1) または cu(1)~# を使って BREAK を送信して、 PROM プロンプトを表示してください。 次のような表示です。

ok     1
ok {0} 2

1

単一の CPU を持つシステムでのプロンプト

2

SMP システムのプロンプト。数字はアクティブな CPU の数。

ここで、CD または DVD をドライブに挿入し、 PROM プロンプトで boot cdrom と入力してください。

3.4.2. デバイス検出結果を再表示する

画面に表示される数百行の文字列は (バッファに) 記憶されており、 再表示することが出来ます。

バッファを再表示するには、Scroll Lock を押してください。 これで、画面をスクロールできます。結果を見るためには、矢印キーもしくは PageUpPageDown を使います。 Scroll Lock をもう一度押すと、スクロールを停止します。

この作業を行って、カーネルがデバイス検出を実行している時に画面の外に流れた文字列を再表示してください。 図3.2「古典的なデバイス検出結果の例」 によく似た画面が現われるでしょうが、 コンピュータに搭載されているデバイスによって、表示される文字列は異なります。

図3.2 古典的なデバイス検出結果の例
avail memory = 253050880 (247120K bytes)
Preloaded elf kernel "kernel" at 0xc0817000.
Preloaded mfs_root "/mfsroot" at 0xc0817084.
md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4

md1: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <iSA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
0
usb0: <VIA 83572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
uhub0: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
q 11 at device 8.0 on pci0
dc0: Ethernet address: 00:04:5a:74:6b:b5
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
0 on pci0
ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5” drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/@ mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
plip0: <PLIP network interface> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
Mounting root from ufs:/dev/md0c
/stand/sysinstall running as init on vty0

丹念に検出結果をチェックして、すべてのデバイスを FreeBSD が検出できた事を確認してください。デバイスが見つからなかった場合、 検出結果へ表示されません。 カスタムカーネル を構築することで、 GENERIC カーネルに含まれていないデバイスに対応できるようになります。

デバイス検出後、 図3.3「国の選択メニュー」 に示されるメニューが表示されます。 矢印キーを使って、国、地域またはグループを選択し、 その後、Enter を押して決定してください。

図3.3 国の選択メニュー
国の選択メニュー

国に United States を選択した場合には、 標準のアメリカのキーボードマップが使われるようになります。 他の国を選択すると以下のメニューが表示されます。 矢印キーを使い、適切なキーボードマップを選択して Enter を押してください。

図3.4 キーボードメニューの選択
キーボードメニューの選択

国の設定が終わったら、sysinstall(8) のメインメニューが表示されます。

3.5. sysinstall(8) の紹介

FreeBSD 8.X のインストーラである sysinstall(8) は、 コンソール上で動作し、 いくつものメニューや画面から構成され、 設定やインストールプロセスをコントロールできます。

メニューはカーソルキー、 Enter, Tab, Space 等で操作します。 これらのキーの詳しい解説とその意味については、図3.5「Sysinstall のメインメニューから Usage を選択」 に示されているように、 Usage の項目が強調表示され、 [Select] ボタンが選択されていることを確認してから、 Enter を押してください。

メニューシステムの使い方が表示されます。読み終ったら、 Enter を押してメインメニューに戻りましょう。

図3.5 Sysinstall のメインメニューから Usage を選択
Sysinstall のメインメニューから Usage を選択

3.5.1. ドキュメントメニューの選択

メインメニューから、カーソルキーで Doc を選択して Enter を押してください。

図3.6 ドキュメントメニューの選択
ドキュメントメニューの選択

これでドキュメントメニューが表示されます。

図3.7 Sysinstall ドキュメントメニュー
Sysinstall ドキュメントメニュー

付属のドキュメントを読むことは重要です。 ドキュメントを読むには、カーソルキーで選択して Enter を押してください。読み終えたら、 Enter を押すとドキュメントのメニューに戻ります。

メインのインストールメニューに戻るには、カーソルキーで Exit を選択して、 Enter を押してください。

3.5.2. キー配列メニューの選択

キーボード配列を変更するには、カーソルキーで Keymap を選択して、 Enter を押してください。 使用しているキーボードが、標準ではなかったり、 または US ではない場合に変更作業が必要となります。

図3.8 Sysinstall メインメニュー
Sysinstall メインメニュー

上下のカーソルキーでメニュー項目を選択して Space を押すと、異なるキーボード配列を選択できます。 もう一度 Space を押すと、選択を解除します。 完了したら、カーソルキーで [ OK ] を選択して Enter を押してください。

このスクリーン表示では、リストの一部しか表示されていません。 Tab を押して [ Cancel ] を選択すると、 デフォルトのキーマップを使用して、 メインインストールメニューに戻ります。

図3.9 Sysinstall キー配列メニュー
Sysinstall キー配列メニュー

3.5.3. インストールオプション画面

Options を選択して、 Enter を押してください。

図3.10 Sysinstall メインメニュー
Sysinstall メインメニュー

図3.11 Sysinstall オプション
Sysinstall オプション

ほとんどのユーザーにはデフォルトの値でよく、変更する必要はありません。 リリース名は、インストールするバージョンによって変わります。

選択された項目の説明が、画面の下部に青く強調表示されます。 オプションの 1 つは Use Defaults という、 すべての値を初期値に戻すものであることに気をつけてください。

F1 を押すと、 さまざまなオプションについての説明を読むことができます。

Q を押すと、 メインインストールメニューに戻ります。

3.5.4. 標準インストールの開始

UNIX® や FreeBSD が初めての人には Standard インストールがお奨めです。 カーソルキーで Standard を選択し、 Enter を押してインストールを始めてください。

図3.12 標準インストールの開始
標準インストールの開始

3.6. ディスク領域の割り当て

最初の課題は、FreeBSD 用にディスク領域を割り当て、 sysinstall(8) が使えるようにラベルを作成することです。 そうするためには、FreeBSD がディスク上にどのような情報があることを前提としているかを知らなければなりません。

3.6.1. BIOS ドライブの番号付け

FreeBSD をインストールして設定する前に、 FreeBSD がどのように BIOS ドライブマッピングを取り扱うかを理解しておくことが重要です。

Microsoft® Windows® のような に依存したオペレーティングシステムが動いている PC では、 BIOS がディスクドライブの順序を構成でき、 OS はその変化に追従します。これにより、"プライマリマスタ" 以外のディスクから起動することができます。 この仕組みを用いればシステムのバックアップを取る簡単な方法を構築できます。 もう一つ同じディスクを買い、 一つ目のディスクから二つめのディスクへのコピーを定期的に取ればいいのです。 そして、一つ目のディスクに障害が起きたり、ウィルスに感染したり、 オペレーティングシステムの不具合でめちゃくちゃにされてしまった時には、 BIOS に対してドライブを論理的に交換するように指示することで簡単に復旧できるのです。 この方法はドライブのケーブルを交換するのと同じようなことなのですが、 ケースを開ける必要がありません。

SCSI コントローラを備えたシステムでは、 しばしば BIOS に拡張が施されており、同じように 7 台までのドライブの順番を組み換えることができるようになっています。

以上のような機能を便利に使っているユーザは、 FreeBSD では同じような結果にならないことに驚くかもしれません。FreeBSD は BIOS を利用しないため、論理 BIOS ドライブマッピング については知らないのです。 このため、特に同じ物理ジオメトリを持っているいくつかのドライブをデータのクローンとして使っている時に、 ややこしい状況になり得ます。

FreeBSD を使う時は、 インストール前にドライブの番号付けが自然なものになるように、 必ず BIOS の設定を戻しておきましょう。 もしドライブの番号付けを変更する必要がある場合には、 ケースを開けジャンパーやケーブルを移動してください。

3.6.2. fdisk でスライス作成

sysinstall(8) で Standard インストールを選択すると、 次のメッセージが表示されるでしょう。

                                 Message
 In the next menu, you will need to set up a DOS-style ("fdisk")
 partitioning scheme for your hard disk. If you simply wish to devote
 all disk space to FreeBSD (overwriting anything else that might be on
 the disk(s) selected) then use the (A)ll command to select the default
 partitioning scheme followed by a (Q)uit. If you wish to allocate only
 free space to FreeBSD, move to a partition marked "unused" and use the
 (C)reate command.
                                [  OK  ]

                      [ Press enter or space ]

Enter を押すと、 カーネルがデバイス検出時に見付けた、 すべてのハードドライブのリストが表示されます。 図3.13「fdisk を実行するディスクの選択」ad0 および ad2 と名付けられた 2 つの IDE ディスクをもつシステムの例です。

図3.13 fdisk を実行するディスクの選択
fdisk を実行するディスクの選択

この画面では、一覧に ad1 が表示されていないことに注目してください。

一つ目はプライマリ IDE コントローラのマスタ、 二つ目はセカンダリ IDE コントローラのマスタとして接続している 2 つの IDE ハードディスクを考えてください。 もし FreeBSD がこれらを ad0ad1 のように番号つけても、すべては動作するでしょう。

しかし、その後プライマリ IDE コントローラのスレーブとして 3 つ目のディスクを追加したとしたら、 それはたった今 ad1 となり、 以前の ad1ad2 となるでしょう。 デバイス名はファイルシステムを見つけるのに使われるため、 ファイルシステムのいくつかは突然正しく現れなくなるかもしれず、 FreeBSD の設定を変更する必要があるでしょう。

これを解決するために、ディスクが見つかった順番ではなく、 どこに接続されているかということに基づいて IDE ディスクを名前づけするようにカーネルを設定できます。 この機構によって、セカンダリ IDE コントローラのマスタディスクは、 たとえ ad0 または ad1 デバイスがないとしてもいつでも ad2 になるでしょう。

この設定は FreeBSD カーネルの標準設定です。 これがこの例で画面に ad0 および ad2 が表示される理由です。 このスクリーンショットが得られたマシンには、 IDE コントローラの両方のマスタチャネルにディスクがあり、 スレーブチャネルにはありません。

FreeBSD をインストールしたいディスクを選択して、 [ OK ] を押してください。 図3.14「典型的な FDisk パーティション」 のような表示とともに Fdisk が起動するでしょう。

Fdisk の画面は三つのセクションに分かれます。

一つ目のセクションは、これは表示の先頭二行にわたっているのですが、 現在選択されているディスクの詳細を表示します。 ディスクの詳細には FreeBSD でのデバイス名、ディスクのジオメトリ、 そしてディスクの全容量が含まれます。

二つ目のセクションは現在ディスク上にあるスライスを表示します。 スライスの開始セクタと終了セクタ、大きさ、FreeBSD 上での名前、 種類とサブタイプが表示されます。 この例では、PC 上のディスクレイアウト機能が生み出した、 未使用の小さなスライスを二つ表示しています。 また大きな FAT スライスも一つ表示しています。 これは、Windows® において C: ドライブ、 および拡張スライスとして現れます (この場合、他のドライブレターとなりえます)。

三つ目のセクションは FDisk において利用可能なコマンドを表示します。

図3.14 典型的な FDisk パーティション
典型的な FDisk パーティション

今から行うことは、 どのようにディスクを分割するかによります。

FreeBSD をディスク全体にインストールするのであれば、 Use Entire Disk オプションを表す A キーを押してください。 この場合、このディスクのすべてのデータは削除されます。 存在しているスライスは取り除かれ、 unused の小さな領域と、 FreeBSD のための大きなスライスへ置きかわるでしょう。 次に方向キーを使って新しく作成された FreeBSD スライスを選択し、スライスに起動可能の印をつけるために S キーを押してください。 そのとき、画面の見た目は 図3.15「ディスク全体を使う FDisk 構成」 とよく似たものとなるでしょう。 Flags 列の A に注意してください。 これはこのスライスが アクティブ で、 ここから起動することを示します。

FreeBSD のための空き領域を作成するために、 存在しているスライスを削除しようとしているのなら、 方向キーをつかってスライスを選択して D キーを押してください。 それから C キーを押すと、 作成したいスライスの大きさの入力を促されます。 適切な数字を入力して Enter キーを押してください。 この欄に表示されているデフォルト値は、 スライスに対して割り当てることのできる最大の値です。 この値は、割り当てられていない領域の連続したブロック、または、ハードディスクの全サイズです。

FreeBSD のための空き領域を既に作成しているなら、 そのときは C キーを押して新しいスライスを作成できます。 再び、作成したいスライスの大きさの入力を促されるでしょう。

図3.15 ディスク全体を使う FDisk 構成
ディスク全体を使う FDisk 構成

終了したら Q キーを押しください。 あなたの変更は sysinstall(8) 内に保存されるでしょう。 しかし、まだディスクには書きこまれません。

3.6.3. ブートマネージャのインストール

次のメニューでは、 ブートマネージャをインストールするかどうかを選択します。 一般的に、次の場合は FreeBSD ブートマネージャをインストールするべきです。

  • 二つ以上のドライブがあり、 一番目のドライブ以外に FreeBSD をインストールする場合

  • FreeBSD を同じディスク内に他の OS と共存させてインストールしており、 コンピュータを起動する際に FreeBSD か他の OS かを選択したい場合

もし、コンピュータに FreeBSD のみをインストールするのであれば、 最初のハードディスクにインストールし、 Standard ブートマネージャを選択してください。 もし、FreeBSD をブート可能なサードパーティ製のブートマネージャを使うのであれば、 None を選択してください。

選択をして Enter キーを押してください。

図3.16 sysinstall ブートマネージャメニュー
sysinstall ブートマネージャメニュー

F1 キーを押すと表示されるヘルプ画面では、 ハードディスクを OS 間で共有する場合に起こり得る問題について議論しています。

3.6.4. 他のドライブのスライスの作成

二つ以上ドライブがある場合、 ブートマネージャを選択した後、ドライブ選択画面に戻ります。 FreeBSD を二つ以上のディスクにインストールしたいのなら、 他のディスクを選択し、FDisk を用いてスライス作成の作業を繰りかえしてください。

重要:

一番目以外のドライブに FreeBSD をインストールするのであれば、 両方のドライブに FreeBSD のブートマネージャをインストールする必要があります。

図3.17 ドライブ選択の終了
ドライブ選択の終了

Tab キーを押して、 最後に選択したドライブと [ OK ] および [ Cancel ] の間を切りかえてください。

[ OK ] に移るために Tab キーを一度押し、 それからインストールを続けるために Enter キーを押してください。

3.6.5. disklabel でパーティション作成

次に、作成したばかりのスライス内にパーティションをいくつか作成してください。 それぞれのパーティションには a から h までの文字がつけられ、 b, c そして d パーティションは守るべき慣習的な意味を持っています。

特定のアプリケーションは、特別のパーティション構成 (特に二つ以上のディスクにわたってパーティションを構成している場合) から利益を得ることができます。 しかしながら、はじめて FreeBSD をインストールする場合、 ディスクをどのようにパーティションに区切るか、 ということをあまり大げさに考えることはありません。 FreeBSD をインストールして使い方を学びはじめることの方がより重要です。 オペレーティングシステムにより詳しくなった後、 いつでも FreeBSD を再インストールすることで、 パーティション構成を変更できます。

以下は四つのパーティション : 一つはスワップ領域、 三つのファイルシステム、の構成です。

表3.2 一つ目のディスクのパーティションレイアウト
パーティションファイルシステムサイズ説明
a/1 GBこれはルートファイルシステムです。 他のファイルシステムはすべてこの下のどこかにマウントされるでしょう。 ユーザのファイルはここに格納されず、また、 通常の FreeBSD インストールでは、 ここに配置するデータは約 128 MB なので、 1 GB はこのファイルシステムに手ごろなサイズです。
bなしメモリの 2-3 倍

b パーティションには、 システムのスワップ領域が保持されています。 スワップ領域の正しい容量を決めることは、 ちょっとした芸術かもしれません。 確実な経験則は、物理的なメモリ (RAM) の 2-3 倍のサイズのスワップ領域とするように、としています。 また、最低 64 MB のスワップを確保するといいでしょう。 したがって、コンピュータが 32 MB 未満のメモリを搭載している時は、 スワップ領域を 64 MB にしてください。 二つ以上のディスクがあるときには、 それぞれのディスクにスワップを置くことができます。 FreeBSD はそれぞれのディスクをスワップに用い、 スワップ動作を効果的に高速化させるでしょう。 この場合、必要とするスワップサイズの合計を計算し、 それぞれのディスクに置くスワップサイズを求めるために、 ディスク数で割ってください。

e/var512 MB 〜 4096 MB/var には、ログファイルやその他の管理ファイルといった、 絶えず変化するファイルが保存されています。 これらのファイルの多くは FreeBSD の毎日の動作の間に広範囲にわたって読みこまれ、 書きこまれます。 (訳注: /とは) 別のファイルシステムにこれらのファイルを置くことは、 異なったアクセス頻度のディレクトリ内にある他のファイルに影響を与えずに、 FreeBSD がこれらのファイルへのアクセスを最適化することを可能とします。
f/usrディスクの残り (少なくとも 8 GB)他のすべてのファイルは、主に /usr およびそのサブディレクトリ内に保存されます。

警告:

上記のサイズの値は、例として載せたものです。 経験のあるユーザのみが使ってください。 FreeBSD パーティションエディタの Auto Defaults で選択できる自動パーティションレイアウトが推奨されています。

二つ以上のディスクに FreeBSD をインストールしようとしているのなら、 設定した他のスライスにもパーティションを作成しないといけません。 最も簡単な方法は、 それぞれのディスクに二つのパーティションを作成することです。 一つはスワップ領域、 そして一つはファイルシステムのためのパーティションです。

表3.3 残りのディスクのパーティション構成
パーティションファイルシステムサイズ説明
bなし説明を参照スワップ領域をそれぞれのディスクにわたって分割できます。 たとえ a パーティションが (訳注: そのスライスに) ないとしても、 慣習により、スワップ領域は b パーティションとなります。
e/disknディスクの残りディスクの残りは一つの大きなパーティションとなります。 これは e パーティションの代わりに、 a パーティション上へ簡単に置くことができるかもしれません。 しかしながら慣習により、スライス上の a パーティションはルート (/) ファイルシステムとなるファイルシステムのために予約されています。 この慣習にしたがう必要はありませんが sysinstall(8) はこのように設定します。 したがってこの慣習に従うことで, インストールが少しだけわかりやすくなります。 このファイルシステムをマウントする場所はどこにでも選択できます。 この例では、これらを /diskn としてマウントするよう提案しています。 ここで n はそれぞれのディスクごとに変更する数字です。

パーティション構成を決めたら、 sysinstall(8) を用いて作成してください。

                                 Message
 Now, you need to create BSD partitions inside of the fdisk
 partition(s) just created. If you have a reasonable amount of disk
 space (1GB or more) and don't have any special requirements, simply
 use the (A)uto command to allocate space automatically. If you have
 more specific needs or just don't care for the layout chosen by
 (A)uto, press F1 for more information on manual layout.

                                [  OK  ]
                          [ Press enter or space ]

Disklabel と呼ばれる FreeBSD パーティションエディタを使うために、 Enter キーを押してください。

図3.18「sysinstall ディスクラベルエディタ」Disklabel を起動したときの画面表示です。 この画面は三つのセクションに分かれています。

はじめの数行は現在作業しているディスクの名前、 そして作成しようとしているパーティションを含むスライスを表示します この時点で Disklabel はスライスのことをスライス名ではなくパーティション名と呼びます 。 この画面はスライス内の空き領域の合計も表示しています。 この空き領域はスライス内に存在していて、 しかしまだパーティションに割り当てられていない領域です。

画面の中段は作成したパーティションを表示しています。 それぞれのパーティションが含むファイルシステムの名前、サイズ、 ファイルシステム作成にまつわるいくつかのオプションが表示されます。

画面の下段にある三つ目のセクションは disklabel で有効なキー操作を表示します。

図3.18 sysinstall ディスクラベルエディタ
sysinstall ディスクラベルエディタ

Disklabel は自動的にパーティションを作成し、 デフォルトのサイズを割りあてます。 デフォルトのサイズは、 ディスクのサイズからパーティションサイズを決めるアルゴリズムによって計算されます。 A キーを押すと、 図3.19「デフォルトの自動割り当てによる sysinstall ディスクラベルエディタ」 とよく似た画面が表示されます。 デフォルトのサイズは使用しているディスクのサイズに依存するので、 希望するサイズになることもあるし、ならないこともあるでしょう。

注記:

デフォルトのパーティション構成では、 /tmp に対して、 / パーティションの一部ではなく、 それ自身のパーティションを割り当てます。 このことは、一時ファイルによって / パーティションがあふれてしまうことを防ぐのに役立ちます。

図3.19 デフォルトの自動割り当てによる sysinstall ディスクラベルエディタ
デフォルトの自動割り当てによる sysinstall ディスクラベルエディタ

デフォルトのパーティションを変更するには、 方向キーを用いて一番目のパーティションを選択し、 D キーを押して削除してください。 この作業を繰り返して、 提案されたすべてのパーティションを削除してください。

一番目のパーティション (/ としてマウントされる a) を作成するには、 画面の先頭の適切なディスクスライスが選択されていることを確認して、 C キーを押してください。 図3.20「ルートパーティションに割りあてる容量」 に示されるような、 新しいパーティションのサイズの入力をうながすダイアログが現れます。 使用したいサイズをブロック数で入力するか、 数字の後に M をつけてメガバイト単位 、 G をつけてギガバイト単位 、 C をつけてシリンダ単位で入力してください。

図3.20 ルートパーティションに割りあてる容量
ルートパーティションに割りあてる容量

(訳注: ダイアログに) 表示されるデフォルトのサイズは、 スライスに残っているサイズのパーティションを作成するでしょう。 上述したパーティションサイズを用いる場合は Backspace キーを用いて表示されている数字を削除し 図3.21「ルートパーティションサイズの編集」 のように 512M と入力してください。そして [ OK ] を押してください。

図3.21 ルートパーティションサイズの編集
ルートパーティションサイズの編集

パーティションのサイズを入力すると、 次にインストーラは、このパーティションがファイルシステムなのか、 それともスワップ領域なのかを聞いてきます。 図3.22「ルートパーティションタイプの選択」 のようにダイアログが表示されます。 この一番目のパーティションにはファイルシステムが含まれるので、 FS を選択し、 Enter キーを押します。

図3.22 ルートパーティションタイプの選択
ルートパーティションタイプの選択

最後に Disklabel に対して、 このファイルシステムがどこにマウントされるか教えなければなりません。 図3.23「ルートのマウントポイント選択」 のようなダイアログが表示されます。 / と入力し Enter キーを押してください。

図3.23 ルートのマウントポイント選択
ルートのマウントポイント選択

画面は更新されて、 新しく作成したパーティションが表示されます。 この作業を繰りかえして、 他のパーティションを作成してください。 スワップパーティションを作成したときには、 ファイルシステムのマウントポイントの入力は促されません。 最後のパーティションの /usr を作成するときは、表示されたサイズをそのままにしておいて、 スライスに残っているサイズを使用してください。

最終的な FreeBSD ディスクラベルエディタの画面は、 選択された数値は異なっているかもしれませんが、 図3.24「sysinstall ディスクラベルエディタ」 のようになるでしょう。 Q キーを押して終了します。

図3.24 sysinstall ディスクラベルエディタ
sysinstall ディスクラベルエディタ

3.7. 何をインストールするか選択する

3.7.1. ディストリビューションセットの選択

インストールするディストリビューションセットを選択します。 これは使おうとするシステムや利用可能なディスクの容量に依存します。 最小構成のインストールから全てのインストールまでのオプションがあらかじめ用意されています。 UNIX® や FreeBSD に慣れてない人はこれらのどちらかを選ぶべきです。 ディストリビューションセットのカスタマイズは、主としてより経験を積んだユーザーのためにあります。

F1 キーを押すとそのディストリビューションセットのオプションやそれらが何を含んでいるかというより詳しい情報が表示されます。 ヘルプを見終わった後には、Enter キーを押してディストリビューションの選択メニューに戻ってください。

グラフィカルユーザインタフェースを望む場合には、 FreeBSD のインストール後に Xorg の設定とデフォルトデスクトップの選択を行ってください。 Xorg のインストールや設定に関する詳細な情報は 6章X Window System にあります。

カスタムカーネルをコンパイルする予定ならばソースコードを含むオプションを選択します。 なぜカスタムカーネルを構築するのか、またカスタムカーネルの構築方法に関しては 9章FreeBSD カーネルのコンフィグレーション を参照してください。

すべてを含むシステムが最も多くのことを行えます。 十分なディスクスペースがあるならば、図3.25「ディストリビューションの選択」 で示されるように All を矢印キーで選択し、 Enter を押します。 ディスクスペースに懸念があるならば、状況に合ったよりふさわしいオプションを選択します。 インストール後にそのほかのディストリビューションを加えることができるので、 完璧な選択をしようとして悩まないでください。

図3.25 ディストリビューションの選択
ディストリビューションの選択

3.7.2. Ports Collection のインストール

お望みのディストリビューションを選ぶと、 FreeBSD Ports Collection をインストールするかどうかを尋ねてきます。 Ports Collection とは、簡単にソフトウェアをインストールする方法です。 サードパーティ製のソフトウェアパッケージのダウンロード、 コンパイル、インストールを自動的に行うためのファイルの集まりです。 5章アプリケーションのインストール - packages と ports で Ports Collection の使用方法が解説されています。

インストールプログラムはディスクに十分な空き容量があるかどうかをチェックしませんので、 十分な空き容量がある場合のみこのオプションを選択してください。 FreeBSD 10.0 では、FreeBSD Ports Collection は、約 500 MB のディスク容量を必要とします。 より最新の FreeBSD のバージョンでは、安全のためもう少し大きなサイズを想定してください。

                         User Confirmation Requested
 FreeBSD Ports Collection をインストールしますか?

 これをインストールすることにより、24,000 以上の移植ソフトウェアパッケー
 ジにアクセスすることができます。これは、「クリーンな」状態では約 500 MB
 のディスク容量を占めますが、配布されている tarball をダウンロードしていくと、更に
 大きな領域を占めることになります (ただし、FreeBSD の CD/DVD で配布されている
 extra disk を持っていて、それを /cdrom にマウントして使用する場合には、
 さほど問題にはならないでしょう) 。

 Ports Collection は、非常に有用な資源であり、/usr パーティションに置
 いておくだけの価値は十分にあります。この質問には Yes と答えるのが賢明で
 しょう。

 Ports Collection に関するさらに詳しい情報や、最新の Ports に関しては、
 以下の場所を参照してください。
     http://www.FreeBSD.org/ports

                              [ Yes ]     No

Ports Collection をインストールするなら [ Yes ] を、このオプションを選択しないのであれば [ No ] を矢印キーで選んでください。 Enter キーを押して先に進みます。 ディストリビューションの選択メニューが再度表示されます。

図3.26 ディストリビューションの確認
ディストリビューションの確認

オプションを選択したら矢印キーで Exit を選び、[ OK ] がハイライトされていることを確認し、 Enter を押して先に進んでください。

3.8. インストールメディアの選択

CD または DVD からインストールする場合、矢印キーを使って Install from a FreeBSD CD/DVD を選んで下さい。 [ OK ] が選択されていることを確認して、 Enter キーを押しインストールを開始してください。

そのほかの方法でインストールする場合には、 適切なオプションを選択しその後の指示に従ってください。

F1 キーを押すとインストールメディアに関するオンラインヘルプが表示されます。 メディア選択メニューに戻るには Enter キーを押してください。

図3.27 インストールメディアの選択
インストールメディアの選択

FTP インストールモード:

FTP 経由のインストールを行う場合、active FTP, passive FTP, HTTP proxy 経由の三種類の FTP インストールモードから選択することになります。

FTP Active: Install from an FTP server

すべての FTP 転送の際に Active モードを使用します。 ファイアウォール内部のマシンではうまく動きませんが、 多くの場合 passive モードに対応していないような古い FTP サーバでも動作します。 passive モードでの FTP 転送 (こちらがデフォルトです) に失敗した場合には、active モードで確かめましょう!

FTP Passive: Install from an FTP server through a firewall

このオプションでは、 sysinstall(8) は、すべての FTP 転送の際に passive モードを使用します。 このモードを使用すると、 ランダム TCP ポートによる外部からの接続を許可していないファイアウォールを越えることができるようになります。

HTTP proxy 経由の FTP: Install from an FTP server through a http proxy

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

proxy FTP サーバに対しては、ユーザ名の一部として 実際に接続したいサーバの名前を @ 記号に続けて与える必要があります。 そうすると proxy サーバは本当のサーバのふり をするようになります。 たとえば、1234 ポートで要求を待つ proxy FTP サーバ foo.example.com を使って、 ftp.FreeBSD.org をインストールするには、 オプションメニューで FTP ユーザ名に ftp@ftp.FreeBSD.org を、 パスワードとしてあなたのメールアドレスを設定します。 そして、インストールメディアに FTP (proxy サーバが対応しているならば passive FTP)、URL として ftp://foo.example.com:1234/pub/FreeBSD を指定します。

ftp.FreeBSD.org/pub/FreeBSDfoo.example.com が代理で処理をおこなうことになるので、 インストール時の要求に応じて ftp.FreeBSD.org からファイルを取り寄せます。

3.9. インストール操作の確定

これで良いと思ったら、ここでインストールを進めることができます。 インストールするためにおこなうハードディスクに対する変更をやめるなら、 ここが最後のチャンスでもあります。

                       User Confirmation Requested
 Last Chance! Are you SURE you want to continue the installation?

 If you're running this on a disk with data you wish to save then WE
 STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

 We can take no responsibility for lost disk contents!

                             [ Yes ]    No

[ Yes ] を選択して Enter キーを押すことでインストールは進みます。

インストールにかかる時間は、どのディストリビューションを選んだか、 どのインストールメディアを使ったか、 そしてコンピュータの速度にも依存します。 インストール状況に従って、メッセージが逐次表示されます。

次のメッセージが表示されればインストールは終わりです。

                               Message

Congratulations! You now have FreeBSD installed on your system.

We will now move on to the final configuration questions.
For any option you do not wish to configure, simply select No.

If you wish to re-enter this utility after the system is up, you may
do so by typing: /usr/sbin/sysinstall.

                                 [ OK ]

                      [  Press enter or space  ]

Enter キーを押せばインストール後の設定画面に 移ることができます。

[ No ] を選択して Enter キーを押すと、インストールを中断して システムには何の変更もおこないません。 そのときには次のメッセージが表示されます。

                                Message
Installation complete with some errors.  You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature.
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed.

                                 [ OK ]

何もインストールされなかったため、このメッセージが表示されています。 Enter キーを押しますと、 インストーラを終了するためにメインメニューに戻ります。

3.10. インストール後の作業

インストール完了後に数々のオプション設定を行います。 オプションは、インストールした FreeBSD を起動する前に configuration の項目に入りなおすか、再起動後に sysinstall(8) の中にある Configure の項目で設定することができます。

3.10.1. ネットワークデバイスの設定

もし、FTP インストールのために PPP を設定したのならば、 この画面は表示されず、前項で述べたように後から設定できます。

LAN の詳細情報と、FreeBSD のゲートウェイ・ルータの設定については 高度なネットワーク の章を参照してください。

                      User Confirmation Requested
   Would you like to configure any Ethernet or PPP network devices?

      (訳:イーサネットや SLIP/PPP ネットワークデバイスを設定したいですか?)

                             [ Yes ]   No

ネットワークデバイスを設定するには [ Yes ] を選び、Enter キーを押します。 設定しないのであれば、[ No ] を選びます。

図3.28 イーサネットデバイスを選ぶ
イーサネットデバイスを選ぶ

設定したいインタフェースを矢印キーで選び、Enter キーを押します。

                      User Confirmation Requested
       Do you want to try IPv6 configuration of the interface?

      (訳:このインタフェース上で IPv6 の設定を行ないたいですか?)

                              Yes   [ No ]

プライベートな LAN において、現行のインターネットプロトコル (IPv4) で十分なのであれば、矢印キーで [ No ] を選び Enter を押してください。

RA サーバと IPv6 ネットワークで接続しているのであれば、 [ Yes ] を選んで Enter を押してください。 すると、数秒間 RA サーバを検索します。

                             User Confirmation Requested
        Do you want to try DHCP configuration of the interface?

      (訳:このインタフェース上で DHCP 設定を行ないたいですか?)

                              Yes   [ No ]

もし、Dynamic Host Configuration Protocol (DHCP) が必要なければ、矢印で [ No ] を選び Enter を押してください。

[ Yes ] を選んだ場合、 dhclient(8) を実行します。設定が成功すると、 ネットワーク設定情報が自動補完されます。 詳細については 「DHCP」 を参照してください。

次のネットワーク設定画面では、LAN 用ゲートウェイシステムのイーサネットデバイス構成が表示されます。

図3.29 ed0 ネットワークの設定
ed0 ネットワークの設定

Tab をつかって項目を選び、 適切な情報を入力してください。

Host

完全修飾されたホスト名。この例では、k6-2.example.com

Domain

コンピュータのドメイン名。この例では example.com

IPv4 Gateway

ローカル以外のホストへパケットを送る際に使う IP アドレスです。 もしコンピュータがネットワーク上にいる場合は入力する必要があります。 このコンピュータがネットワークのインターネットゲートウェイである場合には この項目は空白のままにします。 IPv4 ゲートウェイはデフォルトゲートウェイまたはデフォルトルートとも呼ばれます。

Name server

ローカル DNS サーバの IP アドレスを指定します。 ローカル DNS サーバがプライベート LAN 上にないので、 プロバイダの DNS サーバ (208.163.10.2) を指定しました。

IPv4 address

このインタフェースで使う IP アドレスは 192.168.0.1

Netmask

この例では、LAN で使うアドレスブロックは、 192.168.0.0 - 192.168.0.255 です。 ネットマスクは (255.255.255.0) です。

Extra options to ifconfig(8)

ifconfig(8) への追加のオプションを入力してください。 今回はありませんでした。

終了するときは、Tab キーを使って [ OK ] を選び、 Enter を押します。

                      User Confirmation Requested
        Would you like to bring the ed0 interface up right now?

      (訳:このインタフェースへの設定を今すぐ有効にしますか?)

                             [ Yes ]   No

[ Yes ] を選んで Enter を押すと、ネットワークへの設定を行い、利用可能な状態にします。 しかしながら、コンピュータをまだ再起動する必要があるので、 インストールの間には、多くのことは出来ません。

3.10.2. ゲートウェイの設定

                       User Confirmation Requested
       Do you want this machine to function as a network gateway?

      (訳:このマシンにネットワークゲートウェイ機能を搭載しますか?)

                              [ Yes ]    No

もし、マシンが LAN のゲートウエイであり、他マシン間の パケットを転送している場合は、[ Yes ] を選んで Enter を押します。 もし、マシンがネットワーク上のノードである場合、[ No ] を選び Enter を押して先に進んでください。

3.10.3. インターネットサービスの設定

                      User Confirmation Requested
Do you want to configure inetd and the network services that it provides?

      (訳:inetd 及び提供するネットワークサービスの設定を行いますか?)

                               Yes   [ No ]

もし [ No ] を選んだ場合には、さまざまなサービスは有効になりません。 これらのサービスは、インストール後に /etc/inetd.conf をテキストエディタで編集することで有効になります。 詳しくは inetd の章 を見てください。

これらのサービスを利用したいと考えているならば, [ Yes ] を選びインストールしてください。 追加の確認事項が表示されるでしょう。

                      User Confirmation Requested
The Internet Super Server (inetd) allows a number of simple Internet
services to be enabled, including finger, ftp and telnetd.  Enabling
these services may increase risk of security problems by increasing
the exposure of your system.

      (訳:inetd は finger,ftp,telnet を含む数多くのインターネットサービスを
      許可します。この機能を有効にするとシステムへのアクセスの増加による
      セキュリティ上のリスクが増加することがあります。)

With this in mind, do you wish to enable inetd?

                             [ Yes ]   No

[ Yes ] を選んで続けます。

                      User Confirmation Requested
inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
which of its Internet services will be available.  The default FreeBSD
inetd.conf(5) leaves all services disabled by default, so they must be
specifically enabled in the configuration file before they will
function, even once inetd(8) is enabled.  Note that services for
IPv6 must be separately enabled from IPv4 services.

Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
use the current settings.

      (訳:inetd(8) が利用可能にするインターネットサービスの種類については
	   設定ファイル (/etc/inetd.conf) に依存します。FreeBSD に付属する
	   inetd.conf(5) の初期設定は、すべてのサービスが無効になっています。
	   従って、inetd(8) を一度有効にした後に設定ファイルの中で
	   必要なサービスを有効にする必要があります。なお、IPv4 サービス側から
	   IPv6 のサービスを個別に設定する必要があることに注意してください。

	   [Yes] を選ぶと /etc/inetd.conf をエディタで編集できます。
	   [No] を選ぶと、現在の設定をつかいます。)

                             [ Yes ]   No

[ Yes ] を選ぶと、 対応するサービスの先頭行にある # を削除することで、サービスを有効にできます。

図3.30 inetd.conf の編集
inetd.conf の編集

変更が終わったら、Esc を押し、 表示されるメニューでエディタを終了し、変更点を保存してください。

3.10.4. SSH ログインを有効にする

                      User Confirmation Requested
                  Would you like to enable SSH login?
                           Yes        [  No  ]

[ Yes ] を選択すると、OpenSSH のデーモンである sshd(8) が有効になります。 これは、コンピュータへの安全なリモートアクセスを許可します。 OpenSSH のより詳しい情報については、 「OpenSSH」 をご覧ください。

3.10.5. Anonymous FTP

                      User Confirmation Requested
 Do you want to have anonymous FTP access to this machine?

                              Yes    [ No ]

3.10.5.1. Anonymous FTP を許可しない

デフォルトの [ No ] を選択して Enter を押してください。 アカウントを持ったユーザは、パスワードを使い FTP でコンピュータにアクセスできます。

3.10.5.2. Anonymous FTP を許可する

anonymous FTP の接続を許可すると、 誰でもコンピュータにアクセスできるようになります。 このオプションを有効にする前に、 セキュリティ上の問題点を検討してください。 セキュリティに関する詳細については、 15章セキュリティ をご覧ください。

anonymous FTP を有効にするには、矢印キーを使って [ Yes ] を選択し、Enter を押してください。以下のような確認事項が表示されるでしょう。

                       User Confirmation Requested
 Anonymous FTP permits un-authenticated users to connect to the system
 FTP server, if FTP service is enabled.  Anonymous users are
 restricted to a specific subset of the file system, and the default
 configuration provides a drop-box incoming directory to which uploads
 are permitted.  You must separately enable both inetd(8), and enable
 ftpd(8) in inetd.conf(5) for FTP services to be available.  If you
 did not do so earlier, you will have the opportunity to enable inetd(8)
 again later.

 If you want the server to be read-only you should leave the upload
 directory option empty and add the -r command-line option to ftpd(8)
 in inetd.conf(5)

 Do you wish to continue configuring anonymous FTP?

                          [ Yes ]         No

このメッセージは、anonymous FTP 接続を許可するのであれば、 /etc/inetd.conf においても FTP サービスを有効にする必要があることを示しています。 [ Yes ] を選び Enter を押して先に進んでください。 以下の画面が表示されます。

図3.31 Anonymous FTP のデフォルトの設定
Anonymous FTP のデフォルトの設定

Tab を使って項目を選び、 適切な情報で埋めてください。

UID

anonymous FTP ユーザに対して割り当てられるユーザ ID。 アップロードされるすべてのファイルの所有者はこの ID となります。

Group

anonymous FTP ユーザが所属するグループ

Comment

/etc/passwd 内のユーザ情報を表す文字列

FTP Root Directory

anonymous FTP で利用可能なファイルの置き場

Upload Subdirectory

anonymous FTP ユーザによりアップロードされるファイルが置かれる場所

デフォルトでは、FTP のルートディレクトリは /var に設定されています。 FTP が必要とする十分な容量が用意されていない場合には、 かわりに FTP のルートディレクトリを /usr/ftp と設定し、 /usr を使ってください。

十分な設定ができたら、 Enter を押して先に進んでください。

                          User Confirmation Requested
         Create a welcome message file for anonymous FTP users?

                              [ Yes ]    No

[ Yes ] を選択した場合には、 Enter を押すと、 メッセージ編集用のエディタが自動的に起動します。

図3.32 FTP Welcome メッセージの編集
FTP Welcome メッセージの編集

操作の説明に従ってメッセージを変更してください。 エディタの画面の下に表示されるファイルの名前、場所に注意してください。

Esc を押すと、ポップアップメニューが表示されます。 デフォルトは a) leave editor です。 Enter を押して終了し、先に進んでください。 変更を行った場合には、もう一度 Enter を押して、変更点を保存してください。

3.10.6. ネットワークファイルシステムの設定

ネットワークファイルシステム (NFS) を用いると、 ネットワークを介してファイルの共有を行うことができます。 コンピュータをサーバ、クライアントまたは両方に設定できます。 より詳しい情報については 「NFS」 を参照してください。

3.10.6.1. NFS サーバ

                       User Confirmation Requested
 Do you want to configure this machine as an NFS server?

                              Yes    [ No ]

NFS の機能を必要としないのであれば、 [ No ] を選択し Enter を押してください。

[ Yes ] を選んだ場合には、 /etc/exports を作成する必要があることを示すメッセージが表示されます。

                               Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local filesystems.
Press [Enter] now to invoke an editor on /etc/exports
                               [ OK ]

Enter を押して先に進んでください。 /etc/exports を編集するためにテキストエディタが立ち上がります。

図3.33 exports ファイルの編集
exports ファイルの編集

説明に従い、共有されるファイルシステムを追加してください。 エディタのスクリーンの下に表示されているファイル名の場所の情報に注意してください。

Esc を押すとポップアップメニューが表示されます。 デフォルトは a) leave editor です。 Enter を押して終了し、先に進んでください。

3.10.6.2. NFS クライアント

利用しているコンピュータが NFS クライアントによって NFS サーバにアクセスできるようになります。

                       User Confirmation Requested
 Do you want to configure this machine as an NFS client?

                              Yes   [ No ]

矢印キーを使って、適切に [ Yes ] または [ No ] を選択してください。

3.10.7. システムコンソールの設定

システムコンソールをカスタマイズするオプションがあります。

                      User Confirmation Requested
       Would you like to customize your system console settings?

                              [ Yes ]  No

[ Yes ] を選択し、Enter を押してオプションの確認および設定をしてください。

図3.34 システムコンソール設定オプション
システムコンソール設定オプション

良く使われるオプションはスクリーンセーバです。 矢印キーを使って Saver を選択し、 Enter を押してください。

図3.35 スクリーンセーバオプション
スクリーンセーバオプション

矢印キーを使って、お望みのスクリーンセーバを選択し、 Enter を押してください。 システムコンソールの設定メニューが再び表示されます。

デフォルトの時間の間隔は 300 秒です。 時間の間隔を変更する場合には、 もう一度 Saver を選択してください。 スクリーンセーバのオプションメニューにて、 矢印キーで Timeout を選択して Enter を押してください。 ポップアップメニューが表示されます。

図3.36 スクリーンセーバのタイムアウト
スクリーンセーバのタイムアウト

値を変更したら [ OK ] を選択し、 Enter を押して、 システムコンソールの設定メニューに戻ってください。

図3.37 システムコンソールの設定の終了
システムコンソールの設定の終了

Exit を選択し、Enter を押して、インストール後の設定を続けてください。

3.10.8. タイムゾーンの設定

使用しているコンピュータのタイムゾーンを設定することで、 地域による時刻の違いが自動的に調整され、 タイムゾーンに関連した機能が適切に取り扱われます。

ここでの例では、コンピュータが United States の Eastern タイムゾーンにあるとしています。 実際の地理的位置を選択してください。

                      User Confirmation Requested
          Would you like to set this machine's time zone now?

                            [ Yes ]   No

[ Yes ] を選択し Enter を押して、タイムゾーンを設定してください。

                       User Confirmation Requested
 Is this machine's CMOS clock set to UTC? If it is set to local time
 or you don't know, please choose NO here!

                              Yes   [ No ]

コンピュータのクロックがどのように設定されているかに従って、 [ Yes ] または [ No ] を選択し、Enter を押してください。

図3.38 地域の選択
地域の選択

矢印キーを使って、適切な地域を選択し、 Enter を押してください。

図3.39 国名の選択
国名の選択

矢印キーを使って、適切に国名を選び、 Enter を押してください。

図3.40 タイムゾーンの選択
タイムゾーンの選択

矢印キーを使って適切なタイムゾーンを選択し、 Enter を押してください。

                            Confirmation
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

タイムゾーンの短縮形が適切かどうかを確認をしてください。 問題なければ Enter を押して、インストール後の設定を続けてください。

3.10.9. マウスの設定

このオプションを設定することで、 コンソールやユーザプログラムにおいて 3-ボタンマウスによるテキストのカットアンドペーストが可能になります。 2-ボタンマウスを使っている場合には、 3-ボタンのエミュレートについて moused(8) を参照してください。 ここでは、非 USB マウスの設定を例に説明します。

                      User Confirmation Requested
         Does this system have a PS/2, serial, or bus mouse?

                            [ Yes ]    No 

PS/2、シリアルまたはバスマウスを使っている場合には [ Yes ] を選択してください。 USB マウスを利用する場合には、[ No ] を選択し Enter を押してください。

図3.41 マウスプロトコルのタイプの選択
マウスプロトコルのタイプの選択

矢印キーで Type を選択し、 Enter を押してください。

図3.42 マウスプロトコルの選択
マウスプロトコルの選択

この例では PS/2 マウスを使うので、デフォルトの Auto が適切です。 マウスのプロトコルを変更するには、 矢印キーを使って他のプロトコルを選択してください。 [ OK ] がハイライトされていることを確認し、 Enter を押してこのメニューを終了してください。

図3.43 マウスポートの設定
マウスポートの設定

矢印キーで Port を選択して Enter を押してください。

図3.44 マウスポート の設定
マウスポート の設定

このシステムでは PS/2 マウスを使っているので、デフォルトの PS/2 が適切です。 ポートを変更する場合には、矢印キーで選択して Enter を押してください。

図3.45 マウスデーモンを有効にする。
マウスデーモンを有効にする。

最後に、矢印キーで Enable を選択して Enter を押し、マウスデーモンを有効にして、 テストしてください。

図3.46 マウスデーモンのテスト
マウスデーモンのテスト

スクリーン上でマウスを動かし、 カーソルが正しく反応することを確認してください。 確認ができたら、 [ Yes ] を選択して Enter を押してください。 もし、うまく動かないのであれば、マウスの設定が適切に行われていません。 — [ No ] を選択して、 他の設定オプションを使って試してください。

矢印キーで Exit を選択し、 Enter を押してインストール後の設定を続けてください。

3.10.10. Packages のインストール

packages はコンパイル済みのバイナリで、 ソフトウェアをインストールするのに便利な方法です。

説明では、例としてひとつの package をインストールしますが、 お望みであれば、ここで複数の package を追加することもできます。 インストール後は、sysinstall(8) を使って package を追加できます。

                     User Confirmation Requested
 The FreeBSD package collection is a collection of hundreds of
 ready-to-run applications, from text editors to games to WEB servers
 and more. Would you like to browse the collection now?

                            [ Yes ]   No

[ Yes ] を選択して、 Enter を押してください。 Package を選択する画面が表示されます。

図3.47 Package カテゴリの選択
Package カテゴリの選択

現在のインストールメディアに存在する packages のみをインストールできます。

All を選ぶと、 利用可能なすべての package が表示されます。 もしくは、特定のカテゴリを選択してください。 矢印キーで選択したいカテゴリをハイライトし、 Enter を押してください

選択したカテゴリで利用可能なすべての package のメニューが表示されます。

図3.48 Packages の選択
Packages の選択

ここでは、bash シェルが選択されています。 希望する数だけ package を選択してハイライト表示にし、 Space キーを押してください。 それぞれの package の簡単な説明がスクリーン下の左端に表示されます。

Tab キーを押すと、最後に選択した package と [ OK ], [ Cancel ] で選択が切り替わります。

インストールする package の選択が終わったら、 Tab を一度押して [ OK ] に切り替え、 その後 Enter を押して Package 選択メニューに戻ってください。

左右の矢印キーでも、[ OK ][ Cancel ] 切り替えることができます。 この方法で [ OK ] を選択することもできますので、 その後、Enter を押して Package 選択メニューに戻ってください。

図3.49 Packages のインストール
Packages のインストール

Tab と矢印キーで [ Install ] を選択し、Enter を押すと、 インストールを確認するメニューが表示されます。

図3.50 Package のインストールの確認
Package のインストールの確認

[ OK ] を選択し、Enter を押すと package のインストールが始まります。 インストールが終わるまで、インストールのメッセージが表示されます。 エラーメッセージが表示されないかどうか注意してください。

packages をインストールしたら、最後の設定に進みます。 package を選択しなかった場合も、 Install を選択して、 最後の設定に戻ってください。

3.10.11. ユーザ/グループの追加

システムに root 以外でログインできるよう、 インストール時には、少なくとも一人のユーザを追加してください。 通常 root パーティッションの容量は小さいので、 root 権限でアプリケーションを実行すると、 すぐに消費してしまいます。

                     User Confirmation Requested
 Would you like to add any initial user accounts to the system? Adding
 at least one account for yourself at this stage is suggested since
 working as the "root" user is dangerous (it is easy to do things which
 adversely affect the entire system).

                            [ Yes ]   No

[ Yes ] を選択し、 Enter を押して、ユーザを追加してください。

図3.51 User の選択
User の選択

矢印キーで User を選択して、 Enter を押してください。

図3.52 ユーザ情報の入力
ユーザ情報の入力

Tab で項目を選択すると、 必要とされる情報の入力を助けるため、 スクリーンの下に以下の説明が表示されます。

Login ID

新しいユーザのログインネーム (必須)

UID

新しいユーザの ID 番号 (空欄のままにすると、自動的に割り当てられます)

Group

新しいユーザのログイングループ

Password

このユーザのパスワード (このフィールドは注意して入力してください!)

Full name

ユーザのフルネーム (コメント)

Member groups

このユーザの所属するグループについて (すなわち、どのようなアクセス権を持つか)

Home directory

ユーザのホームディレクトリ (空欄にするとデフォルトで設定されます)

Login shell

ユーザのログインシェル (空欄にするとデフォルトの /bin/sh に設定されます)。

この例では、ログインシェルは /bin/sh から、 先ほど package でインストールした bash を使うよう、/usr/local/bin/bash に変更されています。 インストールされていないシェルを選ぶと、 ユーザはログインできなくなりますので、 インストールされていないシェルは選ばないでください。 FreeBSD で最も標準的なシェルは C シェルです。 /bin/tcsh で指定できます。

ユーザは、root 権限を持つスーパユーザになることができる wheel グループにも追加されています。

十分に記述したら、[ OK ] を押して、 User および Group 管理メニューを再び表示してください。

図3.53 ユーザおよびグループの管理を終了する
ユーザおよびグループの管理を終了する

ここでグループを追加することもできます。 または、後で sysinstall(8) を利用してアクセスできます。

ユーザを追加したら、矢印キーで、 Exit を選択して、 Enter を押して、次のインストール項目に進んでください。

3.10.12. root パスワードの設定

                        Message
 Now you must set the system manager's password.
 This is the password you'll use to log in as "root".

                         [ OK ]

               [ Press enter or space ]

Enter を押して、 root パスワードを設定してください。

パスワードは、正しく 2 回入力してください。 パスワードは忘れないでください。 パスワードとして入力した文字は表示されませんし、 アスタリスクが表示されることもありません。

New password:
Retype new password :

パスワードの入力に成功したら、インストールは次に進みます。

3.10.13. インストールの終了

以下のようなメッセージが表示され、 設定が終わったかどうかを尋ねられます。

                     User Confirmation Requested
 Visit the general configuration menu for a chance to set any last
 options?

                              Yes   [ No ]

[ No ] を選択し、 Enter を押すことでメインインストールメニューに戻ります。

図3.54 インストールの終了
インストールの終了

方向キーで [X Exit Install] を選択し、Enterを押します。 インストーラがインストールを終了してもよいか確認を求めます。

                     User Confirmation Requested
 Are you sure you wish to exit? The system will reboot.

                            [ Yes ]   No

[ Yes ] を選択してください。 CDROM ドライブから起動しているのなら、 ディスクを取り出すこと示す以下のメッセージが表示されます。

                    Message
 Be sure to remove the media from the drive.

                    [ OK ]
           [ Press enter or space ]

マシンが再起動し始めると CDROM ドライブはロックされるので、 ドライブから素早くディスクを取り出してください。 [ OK ] を押して再起動してください。

システムは再起動するので、 表示されるかもしれないすべてのエラーメッセージに注意してください。 詳細については、「FreeBSD のブート」 をご覧ください。

3.10.14. ネットワークサービスの設定

寄稿: Rhodes Tom [FAMILY Given].

ネットワークサービスの設定は、新しいユーザにとって、 この領域について基本的な知識を持たないと気が遠くなるような作業となるでしょう。 インターネットを含むネットワークは、 現代のすべてのオペレーティングシステムにとって重要なので、FreeBSD の広範囲にわたるネットワークの能力を理解することは有益でしょう。

ネットワークサービスは、 ネットワーク上のどこからでもアクセスを許可するプログラムです。 時間が経過するとネットワークサービスのバグが攻撃者により発見されるので、 必要なネットワークサービスのみを有効にすることは重要です。 もし、あるネットワークサービスが必要かどうか疑わしい場合には、 それが必要となるまでは、 そのネットワークサービスを有効にしないでください。 後で sysinstall(8) を実行するか、 /etc/rc.conf ファイルを編集することで機能を有効にできます。

Networking オプションを選択すると、 以下のようなメニューが表示されます。

図3.55 ネットワーク設定 (メニューの前半)
ネットワーク設定 (メニューの前半)

最初のオプションである Interfaces については、 「ネットワークデバイスの設定」 で説明されています。

AMD オプションを選択すると amd(8) に対応します。 このオプションは、通常 NFS プロトコルともに、 リモートファイルシステムの自動マウントのために使われます。

次は AMD Flags オプションです。 選択すると AMD フラグを入力するためのメニューが表示されます。 メニューには以下のようなデフォルトのオプションのセットが含まれています。

-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map

-a は、デフォルトのマウント位置を指定します。 ここでは /.amd_mnt を指定しています。 -l は、 デフォルトの log を指定します。 ただし、syslogd(8) が指定されていると、 すべてのログはシステムログのデーモンに送られます。 /host は、 リモートホストからエクスポートされたシステムのマウントに使われます。 一方 /net は、IP アドレスからエクスポートされたファイルシステムのマウントに使われます。 /etc/amd.map は、 AMD エクスポートのデフォルトオプションを定義します。

Anon FTP は、anonymous FTP 接続を許可します。 使用しているコンピュータを FTP サーバとして利用する場合には、 このオプションを選択してください。 このオプションを選択した際のセキュリティ上のリスクについて把握しておいてください。 セキュリティリスクの説明、および、詳細の設定のためのメニューが表示されます。

Gateway メニューでは、 コンピュータをゲートウェイに設定します。 もし、インストールの過程で Gateway オプションを間違って選択したのであれば、ここで無効にできます。

Inetd オプションを使うと、 inetd(8) を設定したり、完全に無効にできます。

Mail オプションでは、システムのデフォルトの Mail Transfer Agent (MTA) を設定できます。 このオプションを選択すると、以下のメニューが起動します。

図3.56 デフォルトの MTA の選択
デフォルトの MTA の選択

このメニューでは、インストールしてデフォルトに設定する MTA を選択できます。 MTA は、 システム上またはインターネット上のユーザにメールを配送するメールサーバです。

Sendmail を選択すると、 デフォルトの MTA として sendmail がインストールされます。 Sendmail local を選択すると、 sendmail をデフォルトの MTA に設定しますが、 インターネットからの電子メールの受け取りを無効にします。 他のオプションである PostfixExim も、 Sendmail と同じようにメールを配送します。

MTA メニューの次のメニューは NFS client です。 このメニューは、システムが NFS サーバと通信するように設定します。 NFS では、NFS プロトコルを通じて、他のコンピュータのファイルシステムを利用できるようになります。 クライアントやサーバの設定についての詳細は 「NFS」 をご覧ください

その下のオプションが NFS server オプションです。 システムを NFS サーバに設定します。 このオプションは、Remote Procedure Call RPC サービスに必要なオプションを追加します。 RPC は、 ホストとプログラム間の接続の調整に利用できます

次の行は Ntpdate オプションです。 これは、時刻の同期を取り扱います。 選択すると下のようなメニューが表示されます。

図3.57 Ntpdate の設定
Ntpdate の設定

このメニューでは、 地理的に最も近いサーバを選択してください。 遠い場所のサーバを選ぶと、 ネットワークの応対時間が長くなる可能性があるので、 最も近いサーバを選択することにより、 より正確な時刻の同期ができるようになります。

次のオプションは、PCNFSD の選択です。 このオプションは、Ports Collection から net/pcnfsd package をインストールします。 Microsoft の MS-DOS® オペレーティングシステムのような、自分自身では NFS 認証サービスを提供できないシステムに対し、NFS 認証サービスを提供する有効なユーティリティです。

ここで、他のオプションを見るために、 少しスクロールダウンしてください。

図3.58 ネットワーク設定 (メニューの後半)
ネットワーク設定 (メニューの後半)

RPCrpcbind(8) は、NFS サーバとクライアントの通信を取り扱い、 NFS サーバが正しく機能するために必要です。 rpc.statd(8) デーモンは、ステータスを監視し、 報告されたステータスは、通常 /var/db/statd.status に記録されます。 次のオプションの rpc.lockd(8) は、 ファイルロックサービスを提供します。 この機能は通常 rpc.statd(8) と共に、 どのホストがロックを必要としているか、 どのくらいの頻度でリクエストするかをモニタするために利用されます。 最後の二つのオプションは、デバッグ時に有用ですが、 NFS サーバおよびクライアントの動作時には必要ありません。

次のメニューの Routed は、 ルーティングデーモンを設定します。 routed(8) は、ネットワークルーティングテーブルを管理し、 マルチキャストルーターを理解し、 そして、リクエストがあると、物理的に接続したホストに対し、 ネットワークを通してルーティングテーブルを提供します。 このユーティリティは、 主にローカルネットワークのゲートウェイマシンで利用されます。 選択すると、 ユーティリティのデフォルトの場所を要求するメニューが表示されます。 デフォルトの場所で良ければ、 Enter キーを押してください。 その後、別のメニューが表示され、 routed(8) に渡すフラグを要求します。 画面にには、デフォルトのフラグの -q が表示されます。

次のメニューは Rwhod オプションです。 このオプションは、システムの初期化時に rwhod(8) を起動します。 rwhod ユーティリティは、定期的にシステムのメッセージをネットワークにブロードキャストし、 consumer モードでは、 システムのメッセージを収集します。 詳細な情報は、ruptime(1) および rwho(1) ページにあります。

リストの最後から 2 番目のオプションは、sshd(8) です。 これは OpenSSH のためのセキュアシェルサーバです。 標準の telnetd(8)ftpd(8) サーバではなく、このサーバが強く推奨されています。 このサーバは、暗号化された通信を行い、 あるホストと他のホストを安全に接続します。

最後のオプションが TCP Extensions オプションです。 このオプションは、RFC 1323 および RFC 1644 で定義されます。 多くのホストにおいて、このオプションはコネクションを高速にする一方で、 いくつかのコネクションを破棄します。 サーバに対して推奨はされませんが、 スタンドアローンなコンピュータには有益でしょう。

ネットワークサービスの設定が終わったら、 一番上の X Exit までスクロールアップして次の設定項目に進むか、 X Exit を 2 回選択し、その後 [X Exit Install] を選び、 sysinstall(8) を終了してください。

3.10.15. FreeBSD のブート

3.10.15.1. FreeBSD/i386 の起動

すべてがうまくいっていれば、画面上にメッセージがスクロールし、 ログインプロンプトが表示されます。 このメッセージを見るには、Scroll-Lock を押し、PgUp および PgDn キーを使ってください。 Scroll-Lock をもう一度押すとプロンプトに戻ります。

バッファの容量制限により、 すべてのメッセージは表示されないかもしれませんが、 ログインの後に dmesg(8) で見ることができます。

インストールの際に設定したユーザ名とパスワードを用いてログインしてください。 必要な時を除き root としてログインすることは避けてください。

典型的なブートメッセージ (バージョン情報は省略しています)

Copyright (c) 1992-2002 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.

Timecounter "i8254"  frequency 1193182 Hz
CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x580  Stepping = 0
  Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
  AMD Features=0x80000800<SYSCALL,3DNow!>
real memory  = 268435456 (262144K bytes)
config> di sn0
config> di lnc0
config> di le0
config> di ie0
config> di fe0
config> di cs0
config> di bt0
config> di aic0
config> di aha0
config> di adv0
config> q
avail memory = 256311296 (250304K bytes)
Preloaded elf kernel "kernel" at 0xc0491000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
md0: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
device 10.0 on pci0
ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x1 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
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/15 bytes threshold
ppbus0: IEEE1284 device found /NIBBLE
Probing for PnP devices on ppbus0:
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
Mounting root from ufs:/dev/ad0s1a
swapon: adding /dev/ad0s1b as swap device
Automatic boot in progress...
/dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
/dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
/dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
/dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
/dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
Doing initial network setup: hostname.
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
        ether 52:54:05:de:73:1b
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
Additional routing options: IP gateway=YES TCP keepalive=YES
routing daemons:.
additional daemons: syslogd.
Doing additional network setup:.
Starting final network daemons: creating ssh RSA host key
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
 creating ssh DSA host key
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
/usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
starting standard daemons: inetd cron sshd usbd sendmail.
Initial rc.i386 initialization:.
rc.i386 configuring syscons: blank_time screensaver moused.
Additional ABI support: linux.
Local package initialization:.
Additional TCP options:.

FreeBSD/i386 (k6-2.example.com) (ttyv0)

login: rpratt
Password:

低速なマシンでは、 RSA および DSA キーを作成するのに少々時間がかかるかもしれません。 これは初めてインストールした後に初めてブートする時だけ起こります。 その後のブートはより速くなるでしょう。

Xorg が設定され、 デフォルトデスクトップが選択されていた場合、 コマンドラインで startx と入力することで Xorg を起動することが可能です。

3.10.16. FreeBSD のシャットダウン

オペレーティングシステムを適切にシャットダウンすることは重要です。 ただ電源を落すということはしないでください。 まず、コマンドラインから su(1) と入力し、 root パスワードを入力してスーパユーザとなります。 これは wheel のメンバとなっているユーザだけが行うことができます。 そうでなければ root としてログインしてください。 システムをシャットダウンするには、shutdown -h now と入力してください。

The operating system has halted.
Please press any key to reboot.

シャットダウンコマンドが実行され、 Please press any key to reboot というメッセージが現れた後に電源を落すことは安全です。 電源を落す代わりに何らかのキーが押された場合、 システムはリブートするでしょう。

Ctrl+Alt+Del というキーの組合せを使ってシステムをリブートすることもできます。 しかしながら、推奨はされません。

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

この節では、 インストールの際に起こりえる共通の問題を解決するための情報が書いてあります。 また、FreeBSD と Windows® のデュアルブートを行う際のいくつかの質問と回答も書いてあります。

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

PC アーキテクチャのさまざまな制限により、 100% 確実にデバイスを認識することは不可能です。 しかしながら、失敗した時にいくつかできることがあります。

インストールする FreeBSD のバージョンの ハードウェアノート を調べて、 使っているハードウェアに対応しているかどうかを確認してください。

もしハードウェアがサポートされているにもかかわらず、 動作しなかったり他の問題点がある時は、カスタムカーネル を構築して GENERIC カーネルに含まれていないデバイスのサポートを追加してください。 デフォルトのカーネルでは、ほとんどのハードウェアデバイスの IRQ, IO アドレス、 DMA チャネルが工場出荷時の状態であると仮定しています。 もしハードウェアの設定が変更されているのであれば、 カスタムカーネルのコンフィグレーションファイルを作成し、 再コンパイルを行なって、 FreeBSD が認識するよう設定してください。

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

注記:

いくつかのインストール上の問題は、各ハードウェア装置、 特にマザーボード BIOS のファームウェアのアップデートで回避または緩和することができます。 ほとんどのマザーボードまたはコンピュータ製造メーカーは、 アップグレード情報を載せているウェブサイトを用意しています。

多くの製造メーカーは、 重要な更新のようなそれなりの理由がない限りマザーボードの BIOS のアップグレードは行わないよう強く推奨しています。 アップデートの過程で失敗するかもしれずBIOS チップに深刻なダメージを与える原因となり得るからです。

3.11.2. Windows® ファイルシステムの利用

現時点では、FreeBSD は、 Double Space™ アプリケーションで圧縮されたファイルシステムに対応していません。 そのため、FreeBSD がデータにアクセスする前に、 ファイルシステムを展開しておく必要があります。 展開するには、Start> Programs > System Tools メニューの Compression Agent を実行してください。

FreeBSD は、MS-DOS® ファイルシステム (FAT ファイルシステムとも呼ばれます) に対応しています。 mount_msdosfs(8) コマンドは、 ファイルシステムの内容にアクセスできるように、 ファイルシステムを現存のディレクトリ構成にマウントします。 通常 mount_msdosfs(8) プログラムは、直接用いられることはありません。 システムから /etc/fstab 経由で利用されたり、 mount(8) から適切なパラメータとともに用いられます。

/etc/fstab の典型的な記述例は以下のようになります。

/dev/ad0sN  /dos  msdosfs rw  0	0

注記:

この記述がうまくいくためには、/dos が存在している必要があります。 /etc/fstab のフォーマットの詳細については、 fstab(5) をご覧ください。

FAT ファイルシステムをマウントする mount(8) の典型例は以下となります。

# mount -t msdosfs /dev/ad0s1 /mnt

この例では、FAT ファイルシステムは、 プライマリのハードディスクの最初のパーティションに配置されています。 dmesg(8)mount(8) の出力から、 パーティションレイアウトを把握するのに十分な情報を得ることが出来ます。

注記:

FreeBSD が割り当てる FAT パーティションの番号は、 他のオペレーティングシステムのものとは異なることがあります。 特に拡張パーティションには、 プライマリパーティションより大きなスライス番号が通常割り当てられます。 どのスライスが FreeBSD に属し、 どのスライスが他のオペレーティングシステムに属するかを決めるのに fdisk(8) は役立ちます。

NTFS パーティションについても、同様に mount_ntfs(8) コマンドでマウントできます。

3.11.3. トラブルシューティングに関する Q & A

3.11.3.1. 起動時のハードウェア検出で、システムがハングアップします。 または、インストール中にシステムがおかしくなります。
3.11.3.2. FreeBSD をインストールした後の最初のハードウェアからの起動で、 カーネルが読み込まれ、ハードウェアを検出しましたが、 次のようなメッセージを表示して停止しました。
3.11.3.3. FreeBSD をインストールした後、ハードウェアから起動しましたが、 ブートマネージャは、ブートメニューで F? を表示し、それ以上起動が進みません。
3.11.3.4. システムが ed(4) ネットワークカードを検出しましたが、 デバイスのタイムアウトエラーが出ます。
3.11.3.5. Xorg 端末から sysinstall(8) を使うと、 ライトグレーの背景にフォントが黄色で表示され、読みずらいです。 このアプリケーションのコントラスト を高くすることはできますか?

3.11.3.1.

起動時のハードウェア検出で、システムがハングアップします。 または、インストール中にシステムがおかしくなります。

i386, amd64 および ia64 プラットフォームにおいて、 FreeBSD はシステムの設定を手助けするシステム ACPI サービスを、 起動時に検出された場合に広く使います。 残念ながら、まだいくつかの不具合が、 ACPI ドライバとシステムのマザーボードに存在しています。 起動ステージ 3 において、ヒント情報 hint.acpi.0.disabled を以下のように設定すると ACPI を無効にできます。

set hint.acpi.0.disabled="1"

この設定はシステムが起動するたびにリセットされるので、 /boot/loader.confhint.acpi.0.disabled="1" を追加して、永続的に変更するようにしてください。 ブートローダのより詳しい情報については 「この章では」 で説明します。

3.11.3.2.

FreeBSD をインストールした後の最初のハードウェアからの起動で、 カーネルが読み込まれ、ハードウェアを検出しましたが、 次のようなメッセージを表示して停止しました。

changing root device to ad1s1a panic: cannot mount root

何が問題ですか?

起動ディスクがシステムの最初のディスクではない場合には、 この問題が起こりえます。BIOS は、FreeBSD とは異なる番号付けを用い、 どの番号がどの番号に対応するかを正しく見つけ出すことは簡単ではありません。

この問題が起きた場合には、 BIOS ディスク番号、ディスクのタイプおよびそのディスクタイプに対する FreeBSD ディスク番号を設定することで、 ルートファイルシステムがどこにあるかを FreeBSD に指定する必要があります。

システムのそれぞれ IDE バスのマスタに接続された 2 つの IDE ディスクがあり、2 番目のディスクから FreeBSD を起動する場合を考えます。 BIOS は、これらのデバイスをディスク 0 および ディスク 1 と認識し、 一方 FreeBSD は、ad0 および ad2 と認識します。

BIOS ディスク 1 に FreeBSD があり、 ディスクタイプが ad で、 FreeBSD ディスク番号が 2 の場合には、次のようになるでしょう。

1:ad(2,a)kernel

プライマリバスにスレーブが接続されている場合には、 上記は必要なく、適切ではありません。

2 番目の状況は、システムに 1 つまたはそれ以上の IDE ディスクがあるときに、SCSI ディスクから起動するような場合です。 このようなケースでは、FreeBSD ディスク番号は、 BIOS ディスク番号より小さな番号になります。 2 つの IDE ディスクと SCSI ディスクがある場合には、 SCSI ディスクは BIOS ディスク 2、 タイプ da、 FreeBSD ディスク番号が 0 となるため、 FreeBSD に BIOS ディスク 2 (システムの 1 番目の SCSI ディスク) から起動するように設定するには以下のようになります。

2:da(0,a)kernel

IDE ディスクが 1 つの場合には、 かわりに 1: を指定してください。

使用する適切な値が決まったら、 テキストエディタを使って、コマンドを /boot.config に記述してください。 他に指定がなければ、FreeBSD はこのファイルの内容を、 デフォルトの boot: プロンプトへのレスポンスとして使います。

3.11.3.3.

FreeBSD をインストールした後、ハードウェアから起動しましたが、 ブートマネージャは、ブートメニューで F? を表示し、それ以上起動が進みません。

FreeBSD のインストール時に、 パーティションエディタで指定したハードウェアのディスクジオメトリが正しくありません。 パーティションエディタまで戻り、 ハードディスクの正しいジオメトリを指定してください。 ジオメトリを正しく設定する所から FreeBSD を再インストールする必要があります。

FreeBSD 専用のシステムで、 他のオペレーティングシステムとの互換性が必要なければ、 インストーラのパーティションエディタで A) を選択して、 ディスクのすべてを使ってください。

3.11.3.4.

システムが ed(4) ネットワークカードを検出しましたが、 デバイスのタイムアウトエラーが出ます。

使用しているカードの IRQ が、 /boot/device.hints で指定された IRQ と異なる可能性があります。 ed(4) ドライバは、デフォルトでは ソフトウェア コンフィグレーションを用いませんが、 インターフェースのヒント情報に -1 を指定した場合には、 ソフトウェアコンフィグレーションが用いられます。

カードのジャンパを変更してコンフィグレーションの設定を行うか、 hint.ed.0.irq="-1" と指定して IRQ に -1 を設定してください このように設定すると、 カーネルがソフトウェアコンフィグレーションを利用します。

その他として、利用しているカードが IRQ 9 を使っている可能性があります。 この IRQ は IRQ 2 と共有され、 特に、IRQ 2 を使っている VGA カードを持っている場合には、 しばしば問題を引き起こします。 できるだけ IRQ 2 や 9 を避けるべきでしょう。

3.11.3.5.

Xorg 端末から sysinstall(8) を使うと、 ライトグレーの背景にフォントが黄色で表示され、読みずらいです。 このアプリケーションのコントラスト を高くすることはできますか?

x11/xtermx11/rxvt 使用時における sysinstall(8) のデフォルトのカラーが読みにくい場合には、XTerm*color7: #c0c0c0~/.Xdefaults に追加して、より暗いグレーの背景に変更してください。

3.12. 高度なインストールガイド

寄稿: Vaschetto Valentino [FAMILY Given].
改訂: Fonvieille Marc [FAMILY Given].

この節では特殊な状況での FreeBSD のインストール方法が記述してあります。

3.12.1. FreeBSD をモニタやキーボードのないシステムにインストールする

この形式のインストールは 表示のないインストール と呼ばれます。 なぜなら、FreeBSD をインストールしようとするマシンにモニタが接続されていないか、 VGA 出力をもっていないからです。 このようなシステムへのインストールはシリアルコンソールを使い、 別のマシンをシステムの主ディスプレイやキーボードとして使うと可能になります。 これを行うには、「ブートメディアの準備」 の説明に従い、インストール用の USB メモリスティックを作成するか、 「インストール ISO の作成」 で説明されているインストール用の ISO イメージをダウンロードしてください。

以下の説明に従って、 これらのメディアをシリアルコンソールを使って起動するように変更してください CD/DVD メディアを使うのであれば、最初の手順を飛ばしてください。

  1. インストール用 USB スティックのシリアルコンソールへの起動を有効にする

    デフォルトでは、USB スティックで起動すると、 インストーラを起動します シリアルコンソールを使って起動するには、 os; のシステムに mount(8) コマンドを使って USB ディスクをマウントしてください。

    # mount /dev/da0a /mnt

    注記:

    デバイスノードおよびマウントポイントの部分は、 利用している環境に合わせてください。

    スティックをマウントしたら、USB スティックをシリアルコンソールを使って起動するように設定してください。 以下の行を USB スティックの /boot/loader.conf に追加してください。

    # echo 'console="comconsole"' >> /mnt/boot/loader.conf

    USB スティックを正しく設定することができたら、 umount(8) を使ってディスクをアンマウントしてください。

    # umount /mnt

    その後 USB スティックを抜き、3 番目の手順に進んでください。

  2. インストール用 CD/DVD のシリアルコンソールへの起動を有効にする

    デフォルトでは、インストール用の CD/DVD で起動すると、FreeBSD は通常のインストールモードで起動します。 シリアルコンソールで起動するには、 ISO イメージを CD/DVD メディアに焼く前に、 展開して、変更し、再び ISO イメージを作成する必要があります。

    インストール用の ISO イメージが保存されている FreeBSD システムで、 以下のようにすべてのファイルを tar(1) を使って展開してください。

    # mkdir /path/to/headless-iso
    # tar -C /path/to/headless-iso -pxvf FreeBSD-10.0-RELEASE-i386-disc1.iso

    次に、 インストールメディアをシリアルコンソールを使って起動するように設定します。 以下の行を展開した ISO イメージの /boot/loader.conf に追加します。

    # echo 'console="comconsole"' >> /path/to/headless-iso/boot/loader.conf

    その後、修正されたツリーを使って新しい ISO イメージを作成します。 この例では、sysutils/cdrtools package または port の mkisofs(8) を使っています。

    # mkisofs -v -b boot/cdboot -no-emul-boot -r -J -V "Headless_install" \
    	    -o Headless-FreeBSD-9.3-RELEASE-i386-disc1.iso/path/to/headless-iso

    適切な ISO イメージを作成できたので、 お気に入りの CD ライタ用のアプリケーションを使って CD/DVD に焼いてください。

  3. ヌルモデムケーブルの接続

    2 つのマシン間のシリアルポートを、 ヌルモデムケーブルで接続してください。 普通のシリアルケーブルはここでは使えません。 ヌルモデムケーブルが必要です。

  4. インストールのために起動

    いよいよインストールを開始します。 USB メモリスティックまたは CD/DVD メディアを、画面のない、 インストールを行おうとしているマシンに挿入し、 電源を投入してください。

  5. 画面がないマシンへの接続

    cu(1) でインストールを行いたいマシンに接続してください:

    # cu -l /dev/cuau0

cu(1)を通して画面がないマシンを操作することができます。 カーネルを読み込み、 その後どの種類の端末を使うか選択する画面が表示されます。 FreeBSD カラーコンソールを選んでインストールを続行してください!

3.13. カスタムインストールメディアの準備

ある状況では、カスタマイズした FreeBSD インストールメディアやソースを用意する必要があります。 これは sysinstall(8) がインストールファイルを持ってくることのできる、 物理的なメディアであったり、ソースの場合もあります。 たとえば、以下のような状況です。

  • たくさんのマシンが繋がったローカルネットワークに FreeBSD インストールファイルを持つローカル FTP サーバをホストし、 各マシンはインストールにこのサーバのファイルを使うようにします。

  • FreeBSD は CD/DVD ドライブを認識できないが、 Windows® はそれができるとします。 この場合、同じコンピュータ上の Windows® パーティションに FreeBSD のインストールファイルをコピーして、FreeBSD のインストールにこれらのファイルを使います。

  • インストールを行いたいコンピュータが CD/DVD ドライブやネットワークカードを搭載してなくても、 ヌルプリンタケーブルを用いてそのコンピュータに接続できます。

  • 磁気テープを FreeBSD のインストールに使えます。

3.13.1. インストール ISO の作成

FreeBSD プロジェクトは、それぞれのリリースに対して ISO イメージ をサポートされているアーキテクチャごとに用意します。 書き込み用のアプリケーションを用いてイメージを CD または DVD メディアに書き込む (焼く) ことができ、 それを使って FreeBSD をインストールできます。 CD/DVD ライタを利用できるのであれば、 これが FreeBSD をインストールする最も簡単な方法です。

  1. 適切な ISO イメージのダウンロード

    それぞれのリリースの ISO イメージは、 ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arch/version もしくは近くのミラーからダウンロードできます。 ここで、archversion の部分は適切なものに置き換えてください。

    通常、このディレクトリには以下のイメージが置いてあります。

    表3.4 FreeBSD ISO イメージの名前と内容
    ファイル名内容
    FreeBSD-version-RELEASE-arch-bootonly.isoCD-ROM ドライブから起動することでインストールを行うことができる CD イメージです。 この CD のみを使って FreeBSD をインストールすることはできません。 この CD から起動した後は、 FTP サーバなどからネットワーク経由でインストール作業をします。
    FreeBSD-version-RELEASE-arch-dvd1.iso.gzこの DVD イメージには、 FreeBSD オペレーティングシステムのベースシステム、 コンパイル済みの package 一式、 ドキュメントをインストールするために必要なものが入っています。 livefs ベースのレスキューモードで起動することも可能です。
    FreeBSD-version-RELEASE-arch-memstick.imgUSB メモリスティックに書き込めるイメージです。 USB ドライブから起動可能なコンピュータで、 インストールに使うことができます。 livefs ベースのレスキューモードで起動することも可能です。 package は、ドキュメントに関連するもののみが入っています。
    FreeBSD-version-RELEASE-arch-disc1.isoUSB メモリスティックに書き込めるイメージです。 USB ドライブから起動可能なコンピュータで、 インストールに使うことができます。 bootonly.iso イメージと同様に、 配布物は含まれていませんが、 (ftp などの) ネットワーク経由でのインストールに対応しています。
    FreeBSD-version-RELEASE-arch-disc1.isoこの CD イメージには、 FreeBSD オペレーティングシステムのベースシステムとドキュメントインストールするために必要なものが入っています。 その他の package は含まれていません。
    FreeBSD-version-RELEASE-arch-disc2.isoこの CD イメージには、ディスクに収まる容量のサードパーティ製 package が含まれています。このイメージは、 FreeBSD 9.X 以降では利用できません。
    FreeBSD-version-RELEASE-arch-disc3.isoディスクに収まる容量のサードパーティ製 package を含むもう 1 つの CD イメージです。このイメージは、 FreeBSD 9.X 以降では利用できません。
    FreeBSD-version-RELEASE-arch-livefs.isolivefs ベースのレスキューモードで起動できるイメージです。 この CD のみを使ってシステムをインストールすることはできません。

    CD からインストールを行うには、 bootonly ISO イメージまたは disc1 のどちらかをダウンロードしてください。 disc1 には、bootonly ISO イメージに含まれているものはすべて含まれているので、 両方をダウンロードする必要はありません。

    インターネット経由でネットワークからインストールを行うには、 bootonly ISO を使ってください。 追加のソフトェアが必要であれば、 5章アプリケーションのインストール - packages と ports に説明されているように Ports Collection を用いてインストールできます。

    FreeBSD をインストールし、 サードパーティ製の package をディスク上から利用したいのであれば、 dvd1 を使ってください。

  2. メディアへイメージを書き込む

    次に、ダウンロードしたイメージをディスクに書き込んでください。 他の FreeBSD システムで書き込みを行う場合には、 「burncd」 および 「cdrecord」 の手順を参考にしてください。

    他のプラットフォーム上で書き込みを行う場合には、 そのシステムにインストールされている書き込み用のユーティリティを利用してください。 提供されているイメージは標準の ISO フォーマットです。多くの CD ライタ用のアプリケーションがこのフォーマットに対応しています。

注記:

カスタマイズした FreeBSD のリリースを構築するには、Release Engineering Article をご覧ください。

3.13.2. FreeBSD ディスクを使ったローカル FTP サイトの作成

FreeBSD のディスクは FTP サイトと同じ配置がなされています。 そのため、ローカルな FTP サイトを構築して、ネットワーク上の他のマシンが FreeBSD をインストールするのに使うようにできます。

  1. FTP サイトのホストとなる FreeBSD のコンピュータに、 CD/DVD をドライブに入れ、マウントしてください。

    # mount /cdrom
  2. anonymous FTP のアカウントを作成してください。 vipw(8) を使用して次の行を加えてください。

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
  3. FTP サービスを請け負うために /etc/inetd.conf で有効にしてください。

このマシンにネットワークで繋がっているマシンは、 インストール時にメディアタイプで FTP を選択し、 FTP サイトメニューで Other を選んだ後 ftp://your machine と打ち込むことができます。

注記:

もし FTP クライアントの起動メディアの FreeBSD のバージョンが FTP サイトで提供されているバージョンと正確に同じでなければ、 sysinstall(8) でのインストールはうまくいきません。 バージョンを書き換えるには、 Options メニューで distribution name を any に変更してください。

警告:

この方法はローカルネットワーク上の、 ファイアウォールで保護されたマシンでは容認できますが、 インターネットを介して他のマシンに FTP サービスを提供することは、 セキュリティリスクが高まります。 インターネット経由でサービスを提供する場合には、 セキュリティの状態に注意することを強く提言します。

3.13.3. Windows® パーティションからのインストール

ハードディスクの Windows® パーティションからインストールするときには、 配布ファイルを例えば c:\freebsd などそのパーティションのルートディレクトリにコピーします。 ディレクトリ構造を反映してコピーしなければならないので、 CD/DVD からコピーする場合には robocopy の使用をおすすめします。 例えば、最低限の FreeBSD のインストールを行うには、 次のように準備します:

C:\> md c:\freebsd
C:\> robocopy e:\bin c:\freebsd\bin\ /s
C:\> robocopy e:\manpages c:\freebsd\manpages\ /s

ここで C: ドライブには十分な空き容量があり、 CD/DVD は E: ドライブにマウントされているものとします。

あるいは、ftp.FreeBSD.org から配布ファイルをダウンロードしてください。 それぞれの配布ファイルは独自のディレクトリに入っています。 例えば、base 配布ファイルは 9.3/base/ ディレクトリにあります。

Windows® パーティションの c:\freebsd にインストールの配布ファイルをコピーしてください。 base および kernel 配布ファイルは、最低限必要です。

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

3 種類のネットワークインストールを行うことができます。 イーサネット、PPP、そして、PLIP です。

最も高速なネットワークインストールを行うには、 イーサネットアダプタを使ってください。 FreeBSD はきわめて多くの PC イーサネットカードをサポートしています。 サポートされているカードの一覧は、 FreeBSD それぞれのリリースのハードウェアノートで提供されます。 サポートされている PCMCIA イーサネットカードを使う場合、 システムの電源を入れる前に差し込んでおくことに注意してください。 FreeBSD はインストール時の PCMCIA カードの活線挿抜には対応していません。

静的に設定する場合には、システムの IP アドレス、 サブネットマスク、ホスト名、デフォルトゲートウェイアドレス、 DNS サーバアドレスを知っておくことが必要です。 HTTP プロキシ経由で FTP インストールを行いたい場合には、 プロキシサーバのアドレスも必要となります。 これらの情報を知らない場合には、 イーサネット経由でのインストールを始める前に、 ネットワーク管理者か ISP に相談するべきでしょう。

もしダイアルアップモデムを使用しているなら、 インストールプロセスの初期にサービスプロバイダの PPP の情報が必要となるので、この情報を手元に用意してください。

もし ISP に接続するのに PAP や CHAP を用いていて、スクリプトを使用していないのであれば、 dial と FreeBSD の ppp のプロンプトに対して入力してください。 それ以外の場合、モデム固有の AT コマンドを使って ISP にダイヤルする方法を知っておく必要があります。 PPP ダイヤラはとてもシンプルな端末エミュレータしか提供していません。 これ以上の情報については 「ユーザ ppp の利用」../../../../doc/ja_JP.eucJP/books/faq/ppp.html を参照してください。 set log local ... コマンドを用いてログを画面に吐くこともできます。

FreeBSD の動いている別のマシンと直接接続が可能でしたら、 ヌルモデムパラレルポートケーブルを介してインストールすることもできます。 パラレルポート経由のデータ転送スピードは、 シリアルラインでの一般的なスピードよりも高速です。

3.13.4.1. NFS 経由のインストールの前に

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

もしサーバが特権ポートへのアクセスのみをサポートしている場合、 インストールを進める前に Options メニューで NFS Secure を選択してください。

イーサネットカードの性能が悪く、 転送速度が遅くて困っている場合には、 NFS Slow フラグを選択するといいでしょう。

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

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

第4章 UNIX の基礎知識

改訂Shumway Chris [FAMILY Given].

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

4.1. この章では

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

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

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

  • UNIX® のファイルの許可属性の仕組みと FreeBSD のファイルフラグについて

  • FreeBSD のファイルシステムの構成

  • FreeBSD のディスク構成

  • ファイルシステムをマウント、アンマウントする方法

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

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

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

  • デバイスおよびデバイスノードとはなにか

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

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

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

4.2.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 の コンソールを目にしているのです[1]。このマシンの名称 (どの UNIX® 機にも名前がついて います) は pc3.example.org で、 あなたはそのシステムコンソール、ttyv0 端末に向かっています。

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

login:

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

4.2.2. FreeBSD にログインする

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

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

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

login:

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

login: john
Password:

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

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

MOTD、もしくはコマンドプロンプト (#, $ または %) に表示されるメッセージを読むようにしましょう。 これは FreeBSD へのログインに成功したときに表示されます。

4.2.3. 多数のコンソール

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

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

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

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

4.2.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) のマニュアルを 参照してください。

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

シングルユーザモード とは何かという詳しい説明は、 「シングルユーザモード」 にあります。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

注記:

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

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

4.2.6. コンソールのビデオモードの変更

FreeBSD のデフォルトのビデオモードは 1024x768 や 1280x1024 など、 グラフィックカードとディスプレイが対応しているサイズに調整されます。 別のビデオモードを使うには、以下の 2 つのオプションを有効にしてカーネルを再コンパイルする必要があります。

options VESA
options SC_PIXEL_MODE

1 度このオプションを有効にしてカーネルを再コンパイルしたら、 あなたのハードウェアがどのビデオモードに対応しているか、 vidcontrol(1) を用いて知ることができます。 以下を実行すると、どのビデオモードに対応しているかを知ることができます。

# vidcontrol -i mode

このコマンドの出力結果があなたのハードウェアが対応しているビデオモードです。 その後 root ユーザで vidcontrol(1) を実行することで、 新しくどのビデオモードを使うかを選択できます。

# vidcontrol MODE_279

このビデオモードで良いと思ったら、起動時に自動的に設定されるように /etc/rc.conf ファイルに以下のように設定してください。

allscreens_flags="MODE_279"

4.3. 許可属性

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

システムがマルチユーザをサポートしているため、 システムが管理する資源はすべて、 誰がその資源を読み・書き・実行できるかを支配する、 一組の許可属性を持っています。 これらの許可属性は 3 つの部分からなる 3 桁の 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 を実行して、 適当なディレクトリを表示させると以下のようになります。

% ls -l
total 530
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 myfile
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 otherfile
-rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
...

以下に示すのは、 ls -l の最初の行を抜き出したものです。

-rw-r--r--

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

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

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

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

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

4.3.1. シンボリック表記

寄稿: Rhodes Tom [FAMILY Given].

シンボリック表記と呼ばれる許可属性を表す方法では、 ファイルやディレクトリの許可属性を、 8 進数ではなく記号を用いて設定します。 シンボリック表記では、(who), (action), (permissions) という書式が用いられます。 利用できる値は以下の通りです。

オプション文字意味
(who)uユーザ
(who)gファイルを所持しているグループ
(who)oその他
(who)aすべて (world)
(action)+許可属性を与える
(action)-許可属性を取り除く
(action)=許可属性を指定したものにする
(permissions)r読み込み
(permissions)w書き込み
(permissions)x実行
(permissions)tSticky ビット
(permissions)sUID または GID を設定する

これらの値は、これまでと同様に chmod(1) コマンドで用いますが、文字で指定します。 たとえば、FILE に対して自分以外のユーザからアクセスを一切受け付けたくない、 というときには以下のコマンドを実行してください。

% chmod go= FILE

カンマ区切りで設定することで、 ファイルの属性を一度に 2 つ以上変更できます。 以下の例では、FILE に対して自分以外のユーザから書き込みの権限を取り上げ、 かわりにすべてのユーザが FILE を実行できるようにします。

% chmod go-w,a+x FILE

4.3.2. FreeBSD のファイルフラグ

寄稿: Rhodes Tom [FAMILY Given].

先ほど説明したファイルの許可属性に加え、 FreeBSD では ファイルフラグ を使えます。 これはファイルにセキュリティや管理上の属性を追加するものですが、 ディレクトリには追加しません。

これらのファイルフラグはファイルに管理上の属性を追加し、 root ユーザでさえ誤ってファイルを消去、変更してしまうことを防ぎます。

ファイルフラグは、chflags(1) を使って、簡単なインタフェースで設定できます。 例えば、file1 というファイルにシステムレベルで消去不可のフラグを設定するには、 以下のコマンドを実行してください。

# chflags sunlink file1

また、消去不可のフラグを削除するには、 以下のように先ほどのコマンドの sunlink の前に no をつけるだけです。

# chflags nosunlink file1

ファイルにどのフラグが設定されているのかを見るには、ls(1) コマンドを -lo オプションと一緒に使ってください。

# ls -lo file1
  

出力は以下のようになります。

-rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 file1

いくつかのフラグの追加、削除は root ユーザしかできません。 他のフラグは、ファイルの所有者が変更できます。 システム管理者は chflags(1)chflags(2) から、 より詳細な情報を得ることをおすすめします。

4.4. ディレクトリ構造

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

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

ファイルシステム構造を網羅した説明は 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) 参照
/rescue/緊急時のために静的にリンクされているプログラム; 詳しくは rescue(8) 参照
/root/root アカウントのホームディレクトリ
/sbin/シングルユーザ環境とマルチユーザ環境の両方で重要な システムプログラムと管理ユーティリティ
/tmp/一時的なファイル。 通常、/tmp の内容はシステムの再起動で失われます。 メモリファイルシステムはよく /tmp にマウントされます。 これは rc.conf(5) の tmpmfs 関係の変数を使うか、 /etc/fstab に設定項目を記入することで自動化できます。 詳しくは mdmfs(8) を参照して下さい。
/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/portsFreeBSD Ports Collection (インストールしなくてもよい)。
/usr/sbin/(ユーザが実行する) システムデーモンとシステムユーティリティ
/usr/share/アーキテクチャに依存しないファイル
/usr/src/BSD のソースファイルまたはローカルのソースファイル、 あるいは両方
/usr/X11R6/X11R6 のプログラム、ライブラリなど (インストールしなくてもよい)
/var/ログ・一時的なファイル・スプールファイルなどいろいろな用途。 メモリファイルシステムは時々 /var にマウントされます。 これは rc.conf(5) の varmfs 関係の変数を使うか、 /etc/fstab に設定項目を記入することで自動化できます。 詳しくは mdmfs(8) を参照して下さい。
/var/log/いろいろなシステムログファイル
/var/mail/ユーザのメールボックスファイル
/var/spool/プリンタとメールシステムのスプールディレクトリなどなど
/var/tmp/一時的なファイル。 /var がメモリファイルシステムでなければ、 ここにあるファイルはシステムが再起動しても失われません。
/var/ypNIS のマップ

4.5. ディスク構成

ファイルを見つけるために FreeBSD が使用する構成の一番小さな単位はファイル名です。 ファイル名は、大文字と小文字を区別します。 このことは readme.txt および README.TXT が異なる二つのファイルであることを意味します。 FreeBSD はそのファイルがプログラム、または文書、 あるいはその他の形式かどうかを決定するために拡張子を使用しません。

ファイルはディレクトリ内に格納されます。 ディレクトリはファイルを一つも含んでいないかもしれせんし、 または数百のファイルを含んでいるかもしれません。 ディレクトリはまた別のディレクトリを含むことができます。 つまり、ディレクトリの階層構造を構築することができます。 このことにより、データ構造がはるかに簡単になります。

ファイルおよびディレクトリは、 必要な他のディレクトリ名とスラッシュ (/) を後に続けて ファイル名またはディレクトリ名を与えることによって参照されます。 foo ディレクトリがあって、その中に bar ディレクトリがあるとします。 そして、その中に readme.txt があるとすると、 ファイルへのフルネーム、またはパスfoo/bar/readme.txt となります。

ディレクトリおよびファイルはファイルシステム内に格納されます。 どのファイルシステムは、そのファイルシステムのための ルートディレクトリ とよばれる、 まさに頂点の位置にちょうど一つのディレクトリを含んでいます。 このルートディレクトリは他のディレクトリを含むことができます。

これまでのところ、これはあなたの使ったことのある他の OS とおそらく似ているかもしれません。少し違いがあります。 たとえば、MS-DOS® ではファイル名とディレクトリ名を分けるのに \ を使います。 一方、Mac OS® では : を使います。

FreeBSD はパス内にドライブレターまたは他のドライブ名を使いません。 あなたは FreeBSD で c:/foo/bar/readme.txt とは書かないでしょう。

その代わり、一つのファイルシステムは ルートファイルシステムとして設計されています。 ルートファイルシステムのルートディレクトリは / として参照されます。それから、他のすべてのファイルシステムは、 ルートファイルシステム以下に マウント されます。 あなたが FreeBSD システムでどんなに多くのディスクを使用しても、 すべてのディレクトリは、 同じディスクの一部であるように見えるので問題ありません。

A,B および C と呼ばれる三つのファイルシステムがあると仮定しましょう。 それぞれのファイルファイルシステムには一つのルートディレクトリがあり、 A1, A2 と呼ばれている二つの他のディレクトリを含んでいます (同様に B1, B2 および C1, C2 があります)。

A をルートファイルシステムとします。 このディレクトリになにが含まれているか見るために ls コマンドを使うと、 A1 および A2 の二つのサブディレクトリが現れるでしょう。 ディレクトリツリーは以下のようになります。

ファイルシステムはファイルシステム内のディレクトリにマウントしなければいけません。 それでは、A1 ディレクトリに B ファイルシステムをマウントすると仮定します。 B のルートディレクトリは A1 に置き換えられ、 そして B 内のディレクトリがそれに応じて現れます。

B1 または B2 内にあるどんなファイルも、必要なときに /A1/B1 または /A1/B2 で到達できます。 /A1 にあったすべてのファイルは一時的に隠されました。 それらは B が A からアンマウントされたら再び現れるでしょう。

もし BA2 にマウントされていたら、この図のようになります。

そして、パスはそれぞれ /A2/B1 および /A2/B2 となるでしょう。

ファイルシステムは互いのファイルシステム上にもマウントできます。 上記の最後の例に続けて、C ファイルシステム は B ファイルシステム内の B1 ディレクトリ上にマウントできます。 次の図のようになります。

または CA1 の下の A ファイルシステムに直接マウントできます。

もしあなたが MS-DOS® を使いなれているなら、 まったく同じではありませんが、これは join コマンドと 似ています。

これは、通常あなた自身が心配する必要のあるものではありません。 一般的に、FreeBSD をインストールするときにファイルシステムを作成し、 どこにマウントするか決定します。そして、 新しいディスクを追加しなければそれらを変更することはありません。

一つの大きなファイルシステムを用意し、 他のファイルシステムを作成する必要としないことはまったくもって可能です。 この方法にはいくつかの短所と一つの利点があります。

マルチファイルシステムの利点
  • 異なったファイルシステムは異なった マウントオプション を使用できます。 たとえば、注意深い考えなのですが、 ルートファイルシステムを読みだし専用でマウントして、 不注意によって重大なファイルを削除、 または編集できないようににすることができます。 また、/home のようなユーザが書き込み可能なファイルシステムを他のファイルシステムと分けることによって、 nosuid でマウントすることも可能になります。 このオプションは、ファイルシステムに記録されている suid/guid の実行可能ビットを有効にしないので、安全性を高めることができるでしょう。

  • FreeBSD はファイルシステムがどのように使われているかによって、 自動的にファイルシステム上のファイルの配置を最適化します。 したがって、連続的に書き込まれた多くの小さなファイルが含まれているファイルシステムは、 より大きく少ないファイルが含まれているファイルシステムと異なる最適化をするでしょう。 一つの大きなファイルシステムを作成すると、 この最適化は成り立たなくなります。

  • FreeBSD のファイルシステムはトラブルが起きてもとても強固です。 しかしながら臨界点でのトラブルは、 ファイルシステムの構造にまだ損害を与えるかもしれません。 マルチファイルシステムへデータを分割しておくことで、 必要なときにバックアップからレストアすることをより容易にして、 まだシステムが回復するかもしれません。

シングルファイルシステムの利点
  • ファイルシステムは固定サイズです。 FreeBSD をインストールするときにファイルシステムを作成して、 固定サイズを割りあてたなら、 後になってそのパーティションをより大きくする必要があると気づくかもしれません。 パーティションのサイズを変更するには、 バックアップ、新しいサイズを指定したファイルシステムの再作成、 バックアップしたデータをリストアする作業が必要となるでしょう。

    重要:

    FreeBSD には、 growfs(8) コマンドがあります。 このコマンドは、この制限を取り除いて、 ファイルシステムのファイルを直ちに増加させることを可能にします。

ファイルシステムはパーティション内に含まれています。 FreeBSD の UNIX® 遺産のために、 これは普段使われるパーティション (例えば MS-DOS® パーティション) という用語の意味とは違う意味を持っています。 それぞれのパーティションは a から h までの文字で区別されます。 それぞれのパーティションは、 一つのファイルシステムだけを含むことができます。 このことは、ファイルシステムがファイルシステムの階層上の典型的なマウントポイント、 または含まれているパーティションの文字によって記述されることを意味します。

FreeBSD は スワップ領域 にもまたディスク領域を使用します。 スワップ領域は FreeBSD に 仮想メモリ を提供します。 これはあなたのコンピュータが、 実際に搭載している以上のメモリがあるかのように振舞います。 FreeBSD がメモリを使い果たしたときに、 現在使用されていないデータのいくつかをスワップ領域に移動し、 そのデータが必要となったときに (その他のデータをスワップ領域に移動させてから) メモリ内に移動しなおします。

いくつかのパーティションはある慣習と関係づけられています。

パーティション慣習
a通常、ルートパーティションを含みます。
b通常、スワップ領域を含みます。
c通常、スライス全体と同じサイズです。 これは、スライス全体にアクセス必要のあるユーティリティ (たとえば、ひどいブロックスキャナ) が、 c パーティションにアクセスすることを可能にします。通常、 このパーティション内にファイルシステムを作成しないでしょう。
dd パーティションは、 それに関連づけられた特別な意味を持っていましたが、 今は無いので、普通のパーティションとして動作するでしょう。

ファイルシステムを含んだそれぞれのパーティションは、FreeBSD が スライス と呼ぶものの中に格納されます。 スライスは FreeBSD の用語で、 普通はパーティションと呼ばれるものです。 もう一度言及しますが、これは FreeBSD の UNIX® 背景によるものです。 スライスは 1 から 4 までの番号がつけられます。

スライス番号は 1 から始まり s を前につけられて、デバイス名の後に続きます。 したがって、da0s1 は一番目の SCSI ドライブ上の 一番目のスライスです。 ディスク上に四つの物理スライスだけが存在できます。しかし、 適切な種類の物理スライス内に論理スライスをもつことができます。 これらの拡張されたスライス番号は 5 から始まります。したがって、 ad0s5 は、一番目の IDE ディスク上の一番目の拡張スライスです。 これらのデバイスは、 スライスを占有することを予期するファイルシステムによって使用されます。

スライスや 危険な専用 の物理ドライブ、 そして他のドライブは a から h までの文字として表される パーティション を含んでいます。 この文字はデバイス名に追加されます。したがって、 da0a は一番目の 危険な専用 da ドライブ上の a パーティションです。 ad1s3e は、 二番目の IDE ディスク上の 三番目のスライス内にある五番目のパーティションです。

最後に、システム上のそれぞれのディスクは識別されます。 ディスク名はどの種類のディスクであるかを示す記号ではじまり、 どのディスクかを示す数字が続きます。 スライスとは違いディスクの番号づけは 0 から始まります。 共通の記号は 表4.1「ディスクデバイス記号」 に示されます。

パーティションを参照するときには、 FreeBSD はパーティションを含むスライスおよびパーティションも指定することを必要とします。 そしてスライスを参照するときはディスク名も参照しないといけません。 したがって、ディスク名、s、スライス番号、 そしてパーティション文字を並べることによってパーティションを参照します。 例4.1「ディスク名、スライス名、パーティション名のサンプル」に例があります。

例4.2「ディスクの概念的構成」 は理解をより明らかにすることを助けるための、 ディスク構成の概念のモデルを示します。

FreeBSD をインストールするために、 まずはじめにディスクスライスの設定をし、 次に FreeBSD に用いるスライス内のパーティションを作成し、 それからそれぞれのパーティション内にファイルシステム (またはスワップ領域) を作成し、 ファイルシステムがどこにマウントされるか決定しなければいけません。

表4.1 ディスクデバイス記号
記号意味
adATAPI (IDE) ディスク
daSCSI ダイレクトアクセスディスク
acdATAPI (IDE) CDROM
cdSCSI CDROM
fdフロッピーディスク

例4.1 ディスク名、スライス名、パーティション名のサンプル
記号意味
ad0s1a一番目の IDE ディスク (ad0) 上の一番目のスライス (s1) 内の一番目のパーティション (a)。
da1s2e二番目の SCSI ディスク (da1) 上の二番目のスライス (s2) 内の五番目のパーティション (e)。

例4.2 ディスクの概念的構成

これはシステムに接続された一番目の IDE ディスクの FreeBSD から見た図を示します。 ディスクサイズは 4 GB と仮定し、 2 GB のスライス (MS-DOS® でいうパーティション) が二つあるとします。 一番目のスライスは MS-DOS® ディスクの C: を含んでいます。 そして、二番目のスライスは FreeBSD のディスクを含んでいます。 これは FreeBSD インストーラが三つのデータパーティションと一つのスワップパーティションを作成した例です。

三つのパーティションはそれぞれファイルシステムを含んでいます。 a パーティションはルートファイルシステムに使用され、 e パーティションは /var ディレクトリ階層に、 f パーティションは /usr ディレクトリ階層に使用されるでしょう。


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

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

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

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

4.6.1. fstab ファイル

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

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

device       /mount-point fstype     options      dumpfreq     passno
device

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

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) は可能であれば並行してファイルシステムのチェック を行なおうとします。

/etc/fstab ファイルの書式やオプションに関しての詳細は、 fstab(5) をご覧ください。

4.6.2. mount コマンド

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

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

# mount device mountpoint

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

マウントオプション
-a

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

-d

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

-f

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

-r

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

-t fstype

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

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

-u

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

-v

詳細な出力にします。

-w

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

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

noexec

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

nosuid

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

4.6.3. umount コマンド

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

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

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

4.7. プロセス

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

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

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

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

% 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 まで割り当てられ、 足りなくなると最初に戻って使い回されます (使用中の PID は割り当てられません) 。 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 オプションを使えば更新間隔を変更することができます。

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

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

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

通常デーモンとして動作するプログラムには末尾に d を持った名前をつける慣習があります。 BIND は Berkeley Internet Name Domain ですが、 実際実行されるプログラムは 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 はそのプロセスをそこで止めます[4]

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

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

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

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

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

  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 を必要に応じて変えるだけです。

重要:

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

4.9. シェル

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 と そのまま表示します。

4.9.1. シェルの変更

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

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

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

注記:

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

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

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

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

4.10. テキストエディタ

さまざまな 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 の一部として、 より強力なテキストエディタが用意されています (editors/emacs, editors/vim)。 これらのエディタはやや学習が複雑ですが、より強力で高い機能性を提供します。 しかし、あなたが多量のテキストを編集することを考えているなら、 vimEmacs といった強力なエディタを習得することは、 より多くの時間を節約することでしょう。

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

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

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

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

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

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

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

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

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

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

4.12.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 *

としてください。

4.12.2. GNU の Info ファイル

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

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

% info

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



[1] i386 が意味しているのはそういうことです。 FreeBSD を Intel の 386 CPU 上で動かしていなくても、 ここは i386 になります。 ここで表示されるのはプロセッサの種類ではなく、プロセッサの アーキテクチャです。

[2] スタートアップスクリプトは、 起動時に FreeBSD が自動的に実行するプログラムです。 主な機能は、全プログラムが動作するように設定を行なうことと、 バックグラウンドで動作するように設定した 有用なサービスを開始することです。

[3] FreeBSD のコンソールとキーボードドライバの詳細全体に ついて、それなりに技術的かつ正確な説明は syscons(4), atkbd(4), vidcontrol(1) および kbdcontrol(1) のマニュアルにあります。 ここではその詳細には立ち入りませんが、 興味をもった方は、いつでもマニュアルを参照して、 動作に関する詳細な説明を読むことができます。

[4] 正確ではありません—中断できないものはわずかながら存在します。 例えば、プロセスがネットワーク上の別の計算機にあるファイルを読もうとして、 その計算機がなんらかの理由 (電源を落とされたとか、ネットワークに問題があるとか) でいなくなった場合、そのプロセスは中断不可能と言われます。 最終的にはそのプロセスはタイムアウトします。普通は2分後です。 タイムアウトした直後、そのプロセスは終了します。

第5章 アプリケーションのインストール - packages と ports

5.1. この章では

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

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

  • packages と ports の違い

  • FreeBSD に移植されたサードパーティ製のソフトウェアの探し方

  • pkgng を用いてバイナリ package を管理する方法

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

  • インストール後の設定のために、 アプリケーションとともにインストールされたファイルを探す方法

  • ソフトウェアのインストールに失敗した場合に、どうしたらよいか

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

UNIX® システムでは、 サードパーティ製ソフトウェアの典型的なインストール手順は以下のようになります。

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

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

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

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

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

インストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなかったり、 FreeBSD 上でテストされていなければ、 正しくインストールが行われ、適切に動くようにコードを調べ、 編集する必要があるかもしれません。 この文書を書いている時点では、24,000 を越えるサードパーティ製アプリケーションが利用可能です。

FreeBSD の package は、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントを含んでいます。 pkgng コマンドでは、pkg install といったコマンドで、 package を扱うことができます。

FreeBSD port は、 アプリケーションをソースコードからコンパイルする際の処理を自動化するように設計されたファイルの集まりです。 port を構成するファイルは、 自動的にアプリケーションをダウンロードし、展開、パッチ作業、 コンパイル、そしてインストールを行うために必要な情報を含んでいます。

さらに ports システムは、FreeBSD の package 管理コマンドで扱うことのできる packages を生成できます。

packages と ports は依存関係を理解します。 package または port を用いてアプリケーションをインストールすると、 依存するライブラリがまだインストールされていない場合には、 最初にライブラリが自動的にインストールされます。

2 つの技術は類似していますが、 packages と ports にはそれぞれ独自の特徴があります。 それぞれのアプリケーションのインストールに対する必要要件に応じてどちらかを選択してください。

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

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

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

port の利点
  • packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からコンパイルすることで、 コンパイルオプションを指定できます。

  • アプリケーションのなかには、 どの機能をインストールするかをコンパイル時に設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。

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

  • ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 このようなソフトウェアはソースコードで配布される必要があり、 エンドユーザがコンパイルしなくてはなりません。

  • バイナリ配布を信用していない人や、 潜在的な問題点を見つけ出すためにソースコードを読むことを好む人がいます。

  • カスタマイズしたパッチを適用するためには、 ソースコードが必要になります。

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

警告:

アプリケーションをインストールする前に、 そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認するか、ports-mgmt/portaudit をインストールしてください。インストールしたら、 portaudit -F -a と入力して、 インストールされているアプリケーションに既知の脆弱性がないことを確認してください。

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

5.3. ソフトウェアの探し方

FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 インストールするソフトウェアを探す方法はたくさん用意されています。

  • FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で http://www.FreeBSD.org/ja/ports/ において公開しています。 ports はアプリケーションの名前や、ソフトウェアのカテゴリで検索出来ます。

  • Dan Langille は、包括的な検索ユーティリティや Ports Collection にあるアプリケーションの変更点を追跡する FreshPorts.org を公開しています。 登録したユーザは、監視している ports がアップデートされた時に、 そのことを自動的にメールで知らせてくれるような、 カスタマイズ可能な監視リストを使うことができます。

  • アプリケーションの名前がわからなければ、Freecode.com のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。

  • Ports Collection がすでにインストールされていれば、 ports ツリーのローカルバージョンを調べることができます。 port がどのカテゴリに分類されているのかを知りたければ、 whereis(1) コマンドで調べることができます。 whereis ファイル と入力してください。ファイル の部分にはインストールを考えているプログラム名を入れます。

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

    さらに、以下の例のように echo(1) を使って調べることもできます。

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

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

  • また、Ports Collection に備わっている検索機能を利用して port を検索する方法もあります。 この検索機能を利用するには、 cd コマンドを用いて /usr/ports ディレクトリに移動し、make search name=プログラム名 と入力してください。 プログラム名 の部分には検索したいソフトウェアの名前を入れてください。 たとえば、lsof を探すには次のようにします。

    # cd /usr/ports
    # make search name=lsof
    Port:   lsof-4.88.d,8
    Path:   /usr/ports/sysutils/lsof
    Info:   Lists information about open files (similar to fstat(1))
    Maint:  ler@lerctr.org
    Index:  sysutils
    B-deps:
    R-deps: 

    ヒント:

    Ports Collection に用意されている検索のメカニズムでは、 インデックスファイルを利用して検索を行います。 もし INDEX が必要であるというメッセージが表示されたら、 make fetchindex を実行して、 最新のインデックスファイルをダウンロードしてください。 INDEX が用意されれば、 make search で検索を実行できるでしょう。

    Path: という行は、 port がどこにあるかを示しています。

    より絞られた情報を得るには、 quicksearch と呼ばれる機能を使ってください。

    # cd /usr/ports
    # make quicksearch name=lsof
    Port:   lsof-4.88.d,8
    Path:   /usr/ports/sysutils/lsof
    Info:   Lists information about open files (similar to fstat(1))

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

    search および quicksearch を使う場合には、 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 LSOF を検索した結果は、 lsof と同じ検索結果になります。

5.4. pkgng によるバイナリ package の管理

pkgng は、FreeBSD における伝統的な package 管理ツールの置き換えとなる次世代の管理ツールで、 バイナリ packages をより早く、 より簡単に管理できるようにする数多くの機能を提供します。

pkgngports-mgmt/portmasterports-mgmt/portupgrade などの port 管理ツールの置き換えではありません。 これらのツールは、 サードパーティ製ソフトウェアをバイナリ packages と Ports Collection の両形式からインストールできますが、 一方で pkgng はバイナリ packages のみをインストールします。

5.4.1. pkgng 入門

FreeBSD 8.4 以降では、 pkgng とマニュアルページをダウンロードし、 インストールするためのブートストラップユーティリティが用意されています。

システムをブートストラップするためには、 以下を実行してください。

# /usr/sbin/pkg

これより前のバージョンの FreeBSD では、かわりに Ports Collection または packages を用いてインストールする必要があります。

port をインストールするには以下を実行してください。

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

package からインストールするには以下を実行してください。

# pkg_add -r pkg

pkgng をインストールしたら、 以下のコマンドを実行して、package データベースをこれまでの伝統的なフォーマットから新しいフォーマットへと変換する必要があります。

# pkg2ng

このステップは、 サードパーティ製ソフトウェアがまだインストールされていないような、 新しくインストールされた直後のシステムでは必要ありません。

重要:

このステップは非可逆です。 一度 package データベースを pkgng フォーマットへと変換したら、伝統的な pkg_* ツールを使うべきではありません。

注記:

package データベースを変換する際には、 新しいバージョンへのデータ変換に伴ったエラーが出力されることがあります。 通常、これらのエラーは無視して構いませんが、 pkg2ng 終了後に表示される、 変換に失敗したサードパーティ製ソフトウェアの一覧については、 これらのソフトウェアを手動で再インストールする必要があります。

FreeBSD のバージョンが 10.X より前であれば、 以下の行を /etc/make.conf に追加して、 FreeBSD Ports Collection がソフトウェアの登録に、伝統的な package のフォーマットではなく、pkgng を用いるように設定してください。

WITH_PKGNG=	yes

pkgng package 管理システムでは、 ほとんどのコマンドに対して package リポジトリを使います。 デフォルトの package リポジトリは /usr/local/etc/pkg.conf または PACKAGESITE 環境変数で定義されます。 この環境変数は、設定ファイルを上書きします。

その他の pkgng の設定オプションは、pkg.conf(5) に記述されています。

pkgng の利用情報は、 pkg(8) マニュアルページや、 pkg を引数なしに実行すると表示されます。

pkgng コマンドの引数は、 コマンドに固有なマニュアルページに記述されています。 たとえば、pkg install のマニュアルページを読むには、 以下のコマンドのどちらかを実行してください。

# pkg help install
# man pkg-install

以下の節では、pkgng を用いた通常のバイナリ package の管理について説明します。 各コマンドでは、カスタマイズのために、 多くのオプションが使われています。 詳細や、他の例については、 コマンドのヘルプやマニュアルページを参照してください。

5.4.2. インストールされている package の情報を入手する

オプションを使用しないで pkg info を実行すると、 システムにインストールされているすべての package もしくは、 ある特定の package の情報が得られます。

たとえば、インストールされている pkgng の情報を調べるには、 以下のように実行してください。

# pkg info pkg
pkg-1.1.4_1

5.4.3. package のインストールと削除

バイナリ package をインストールするには、 以下のコマンドを使ってください。 ここで packagename は、インストールする package の名前です。

# pkg install packagename

このコマンドは、リポジトリデータを使用して、 インストールすべきソフトウェアのバージョン、および、 インストールされていない依存ソフトウェアがあるかどうかを調べます。 たとえば、curl をインストールするには以下を実行してください。

# pkg install curl
Updating repository catalogue
/usr/local/tmp/All/curl-7.31.0_1.txz          100% of 1181 kB 1380 kBps 00m01s

/usr/local/tmp/All/ca_root_nss-3.15.1_1.txz   100% of  288 kB 1700 kBps 00m00s

Updating repository catalogue
The following 2 packages will be installed:

        Installing ca_root_nss: 3.15.1_1
        Installing curl: 7.31.0_1

The installation will require 3 MB more space

0 B to be downloaded

Proceed with installing packages [y/N]: y
Checking integrity... done
[1/2] Installing ca_root_nss-3.15.5_1... done
[2/2] Installing curl-7.31.0_1... done
Cleaning up cache files...Done

新しい package と依存関係から追加された package は、 インストール済み package 一覧に表示されます。

# pkg info
ca_root_nss-3.15.5_1	The root certificate bundle from the Mozilla Project
curl-7.31.0_1	Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.1.4_6	New generation package manager

必要のなくなった packages は、 pkg delete を使って削除できます。 たとえば、以下のようにして削除できます。

# pkg delete curl
The following packages will be deleted:

	curl-7.31.0_1

The deletion will free 3 MB

Proceed with deleting packages [y/N]: y
[1/1] Deleting curl-7.31.0_1... done

5.4.4. インストールされている package のアップグレード

pkg version を用いて古くなった packages を見つけることができます。 ローカルに ports ツリーがない場合には、 pkg-version(8) は、リモートリポジトリのカタログを利用します。 そうでなければ、ローカルの ports ツリーを使って package のバージョンを同定します。

pkg upgrade を実行すると、 インストールされている packages が最新のバージョンにアップグレードされます。 このコマンドは、インストールされているソフトウェアのバージョンと、 リポジトリのカタログから利用できるバージョンとを比較します。 比較が終わったら、 新しいバージョンが用意されているアプリケーションの一覧を表示します。 アップグレードを行うのであれば、 y を選択してください。 キャンセルする場合には、 n を選択してください。

5.4.5. インストールされている package の検証

時折、 サードウェア製のアプリケーションに脆弱性が見つかることがあります。 脆弱性を調べるために、 pkgng は、検証機能を持っています。 システムにインストールされているソフトウェアに既知の脆弱性がないかどうかを調べるには、 以下のように実行してください。

# pkg audit -F

5.4.6. リーフ依存 ports の自動削除

package を削除すると、不必要な依存 ports が残されることがあります。 依存のために導入され、現在は不必要になった package は、 以下のようにすると自動的に検出され、削除されます。

# pkg autoremove
Packages to be autoremoved:
	ca_root_nss-3.13.5

The autoremoval will free 723 kB

Proceed with autoremoval of packages [y/N]: y
Deinstalling ca_root_nss-3.15.1_1... done

5.4.7. package データベースのバックアップ

伝統的な package 管理システムとは異なり、 pkgng には package データベースをバックアップするメカニズムがあります。 package データベースの内容を手動でバックアップするには、 以下を実行してください。以下の pkgng.db を適切なファイル名に置き換えてください。

# pkg backup -d pkgng.db

さらに、pkgng は package データベースを毎日自動的にバックアップする periodic(8) スクリプトを含んでいます。 この機能は、periodic.conf(5) の中で、 daily_backup_pkgng_enableYES に設定すると有効になります。

ヒント:

スクリプトによる定期的な package データベースのバックアップを無効にするには、 periodic.conf(5) の中で、 daily_backup_pkgdb_enableNO に設定してください。

過去にバックアップした package データベースの中身をリストアするには、以下を実行してください。

# pkg backup -r /path/to/pkgng.db

5.4.8. 古くなった package の削除

デフォルトでは、pkgng はキャッシュディレクトリにバイナリ packages を保存します。 このディレクトリは、pkg.conf(5) の PKG_CACHEDIR 変数で定義されます。 pkg upgrade を使って packages をアップグレードする際には、 アップグレードされた package の古いバージョンは自動的には削除されません。

システムからこれらの古いバイナリ package を削除するには、 以下を実行してください。

# pkg clean

5.4.9. package メタデータの変更

FreeBSD Ports Collection では、メジャーバージョン番号が変更になることがあります。 これに対応するために、pkgng には、 package の情報をアップデートするコマンドが組み込まれています。 たとえば、lang/php5 が、 バージョン 5.4 を表すようになり、 lang/php5lang/php53 と名前を変更する必要があるような場合に、有用です。

上記の例の package の情報を変更するには、 以下のように実行してください。

# pkg set -o lang/php5:lang/php53

別の例として、lang/ruby18lang/ruby19 にアップデートするには、 以下のようにしてください。

# pkg set -o lang/ruby18:lang/ruby19

最後の例として、 libglut 共有ライブラリの情報を graphics/libglut から graphics/freeglut へと変更するには、 以下のように実行してください。

# pkg set -o graphics/libglut:graphics/freeglut

注記:

package の情報を変更したら、 情報が変更された package に依存している packages を再インストールすることが重要となります。 依存 packages を再インストールするには、 以下のように実行してください。

# pkg install -Rf graphics/freeglut

5.5. Ports Collection の利用

Ports Collection とは、/usr/ports 以下に置かれる Makefile, 修正パッチ、 説明文などの一連のファイルのことです。このファイルのセットは、 アプリケーションをコンパイルして FreeBSD にインストールするのに用いられます。 port を用いてアプリケーションをコンパイルできるようにするには、 まず最初に Ports Collection をインストールする必要があります。 FreeBSD のインストール時に Ports Collection をインストールしなかった場合に、 以下の方法のどれかを用いてインストールしてください。

手順5.1 Portsnap を利用する方法

FreeBSD のベースシステムには、Portsnap が含まれています。 これはは Ports Collection を取得するための速くて使いやすく、 多くのユーザに推奨されるツールです。 このユーティリティは、FreeBSD のサイトに接続し、セキュリティキーを検証し、 Ports Collection の最新版をダウンロードします。 セキュリティキーは、 ダウンロードしたすべてのファイルの検証に用いられます。

  1. 圧縮された Ports Collection のスナップショットを /var/db/portsnap にダウンロードするには以下を実行してください。

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

    # portsnap extract
  3. 上で示した Portsnap を初めて利用する際に行うコマンドを実行した後は、 以下のコマンドで /usr/ports をアップデートしてください。

    # portsnap fetch
    # portsnap update

    fetch を使う場合には、以下のよう extract または update を連続して行うことができます。

    # portsnap fetch update
手順5.2 Subversion を用いる方法

ports ツリーの管理が必要な場合や、 ローカルで変更点をメンテナンスする必要がある場合には、 Subversion を使って Ports Collection を取得する方法があります。 Subversion のより詳細な説明については、 Subversion Primer を参照してください。

  1. Subversion を使って ports ツリーをチェックアウトする前に、 Subversion をインストールしておく必要があります。 ports ツリーがすでにインストールされていれば、 以下のようにして Subversion をインストールできます。

    # cd /usr/ports/devel/subversion
    # make install clean

    ports ツリーが利用できない場合や、 package の管理に pkgng を使っているのであれば、package から Subversion をインストールできます。

    # pkg install subversion
  2. ports ツリーをチェックアウトしてください。 パフォーマンスを良くするため、 svn0.us-east.FreeBSD.orgSubversion ミラー の中から地理的に近い場所にあるミラーに置き換えてください。

    # svn checkout https://svn0.us-east.FreeBSD.org/ports/head /usr/ports
  3. Subversion で最初のチェックアウトを行ったら、必要に応じて /usr/ports をアップデートしてください。

    # svn update /usr/ports

Ports Collection はソフトウェアのカテゴリを表すディレクトリを持ち、 各カテゴリには、各アプリケーションのサブディレクトリがあります。 ports スケルトンとも呼ばれる各サブディレクトリには、 プログラムを FreeBSD 上で正しくコンパイルしてインストールする方法を提供するファイルのセットが含まれています。 それぞれの port スケルトンには、 次のファイルおよびディレクトリが含まれています。

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

  • distinfo: このファイルには、その port を構築するためにダウンロードする必要があるファイルのファイル名と、 チェックサム情報が含まれています。

  • files: このディレクトリには FreeBSD 上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 このディレクトリには、その port の構築に必要なその他のファイルが入る場合もあります。

  • pkg-descr: このファイルにはプログラムに関する、 より詳しい説明文が含まれます。

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

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

port は実際のソースコード (distfile とも呼ばれます) を含んではいません。 port の構築の展開部で、ダウンロードされたソースは自動的に /usr/ports/distfiles に保存されます。

5.5.1. ports のインストール

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

警告:

いかなる port でも、構築する前には、 前節に書かれているように、Ports Collection をアップデートしてください。 サードパーティ製のソフトウェアをインストールすると、 セキュリティの脆弱性を引き起こす可能性があります。 その port に関連したセキュリティ上の問題がないことを、まずは http://vuxml.freebsd.org/ で確認してください。または、ports-mgmt/portaudit をインストールしているのであれば、 新しい port をインストールする前に、 portaudit -F -a を実行してください。 毎日のシステムのセキュリティ確認時に、 自動的にセキュリティの検査およびデータベースの更新を行うようにこのコマンドを設定できます。 詳しくは、portaudit および periodic(8) のマニュアルページを参照してください。

Ports Collection は、ネットワークに接続できることを想定しています。 また、superuser の権限も必要となります。

freebsdmaill.com の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM 製品の中には distfiles を収録しているものがあります。 これらを使うとインターネットへの接続がなくても ports をインストールするのに使うことができます。 DVD を /cdrom にマウントしてください。 ほかのマウントポイントを使用したければ、 CD_MOUNTPTS 変数を設定してください。 ディスク上に必要な distfiles が存在すると、 自動的に利用されます。port には DVD への収録を許可しないライセンス条項を持つものがあります。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているという理由があります。 DVD に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります。

port をコンパイルしてインストールするには、 インストールしたい port のディレクトリに移動してください。 その後、プロンプトから make install と入力してください。 すると、次のような出力が現われるはずです。

# cd /usr/ports/sysutils/lsof
# make install
>> lsof_4.88D.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.88
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.88D.freebsd.tar.gz.
===>  Patching for lsof-4.88.d,8
===>  Applying FreeBSD patches for lsof-4.88.d,8
===>  Configuring for lsof-4.88.d,8
...
[configure output snipped]
...
===>  Building for lsof-4.88.d,8
...
[compilation output snipped]
...
===>  Installing for lsof-4.88.d,8

===>  Installing for lsof-4.88.d,8
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.88.d,8
===>   Registering installation for lsof-4.88.d,8
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
/usr/local/sbin/lsof
#

lsof は高い権限で動作するプログラムなので、 インストールする時にセキュリティに関する警告が表示されます。 インストールが終わったら、プロンプトが戻ります。

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

インストールの間に、作業用ディレクトリが作成されます。 このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。 このディレクトリを削除することで、ディスク容量を節約でき、また port を新しいバージョンへアップデートする際に問題が起こる可能性を小さくします。

# make clean
===>  Cleaning for lsof-88.d,8
#

注記:

port を構築する際に、 make install clean と実行することで、 これらの余分な手順を省くことができます。

5.5.1.1. ports のインストールのカスタマイズ

ports の中にはビルドオプションを指定できるものがあります。 このオプションを指定することで、 アプリケーションの機能の一部を有効もしくは無効にできます。 また、セキュリティオプションを設定したり、 その他のカスタマイズを行うことができます。 このようなアプリケーションには www/firefox, security/gpgmemail/sylpheed-claws などがあります。 port が他のカスタマイズ可能なオプションを持つ ports に依存する場合には、デフォルトでは、ユーザに port のオプションをメニューから選択させる設定のため、 何度もユーザとの対話が起こり待たされることがあります。 これを避けるには、まず最初に port スケルトンで make config-recursive を実行して設定を一括で行い、その後 make install [clean] を実行して port を構築してインストールしてください。

ヒント:

config-recursive を実行する際、 all-depends-list を実行すると、設定すべき ports の一覧を得ることができます。 多くの場合は、すべての依存 ports のオプションが定義され、 ports オプションの画面が表示されなくなり、 すべてのオプションが設定されたことを確認できるまで make config-recursive を実行すると良いでしょう。

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

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

インターネットに常時接続できないユーザのために make fetch コマンドが用意されています。 このコマンドを /usr/ports で実行してすべての distfiles をダウンロードするか、 /usr/ports/net といったカテゴリや、あるスケルトンにおいても実行できます。 ある port がライブラリやその他の ports に依存している場合には、 別のカテゴリの ports の distfiles はダウンロードされないことに注意してください。 port が依存しているすべての distfiles をダウンロードしたければ、 make fetch-recursive を使ってください。

めったにないことかもしれませんが、 ローカルに distfiles のリポジトリがあるような場合に、 MASTER_SITES 変数を変更することで Makefile で指定されているダウンロードの場所を 変更することができます。 設定する場合には、変更先を以下のようにして指定してください。

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

WRKDIRPREFIX 変数と PREFIX 変数を変更することで、 作業ディレクトリやターゲットディレクトリをデフォルトのものから変更できます。

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

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

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

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

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

とすれば両者を組み合わせることが可能です。

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

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

インストールされた ports は、 pkg delete コマンドで削除できます。 このコマンドの使用例は、pkgng によるバイナリ package の管理」 にあります。

あるいは、port のディレクトリにて make deinstall を実行することでも削除できます。

# cd /usr/ports/sysutils/lsof
make deinstall
===>  Deinstalling for sysutils/lsof
===>   Deinstalling
Deinstallation has been requested for the following 1 packages:

	lsof-4.88.d,8

The deinstallation will free 229 kB
[1/1] Deleting lsof-4.88.d,8... done

port が削除されるときに表示されるメッセージを読むことをお勧めします。 もし削除した port に依存するアプリケーションがあった場合には、 その情報が表示されますが、port の削除は行われます。 そのようなケースでは、依存を直すためにアプリケーションを再インストールするとよいでしょう。

5.5.3. ports のアップグレード

ports のインストール後、時間が経過すると、Ports Collection で新しいバージョンのソフトウェアを利用できるようになります。 この章では、 どのようにしてアップグレードする必要のあるソフトウェアを判断するか、 そしてアップグレードの方法について説明します。

インストールされている ports の新しいバージョンを利用できるかどうかを知るには、まず、 最新の ports ツリーがインストールされていることを確認してください。 これには、手順の 5.1 もしくは 5.2 で書かれているアップデートのコマンドを使ってください。 その後、以下のコマンドを実行すると、現在利用可能なバージョンよりも古い ports の一覧が表示されます。

# pkg_version -l "<"

重要:

アップグレードする前に /usr/ports/UPDATING を、ファイルの頭から、ports を最後にアップデートした日、 もしくはシステムをインストールをした日に最も近い日まで目を通してください このファイルには port をアップグレードする際にユーザが遭遇するであろう問題や、 追加で必要な作業などが記述されています。 例えば、ファイル形式の変更や設定ファイルの場所の変更、 前のバージョンと互換性がなくなったことなどが書かれています。 アップグレードする必要のある ports に関連した手順に注意し、 アップグレードする際にはこれらの手順に従ってください。

実際にアップグレードを行うには、 Portmaster もしくは Portupgrade を使ってください。

5.5.3.1. portmaster を用いた ports のアップグレード

ports-mgmt/portmaster package または port は、 FreeBSD と共にインストールされているツールだけを使うので、 インストールされている ports のアップグレードに推奨されているツールです。 portmaster は、 他の ports に依存せずに、base システムのツールのみを使うように設計されています。 このアプリケーションは、 どの ports をアップグレードすべきかの判断を、 /var/db/pkg/ の情報を使って行います。port からこのユーティリティをインストールするには以下のようにしてください。

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

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

  • Root ports: 他の port に依存せず、 他の port からも依存されない ports。

  • Trunk ports: 他の port には依存しないが、 他の port から依存されている ports。

  • Branch ports: 他の port に依存し、 他の port からも依存されている ports。

  • Leaf ports: 他の port に依存するが、 他の port からは依存されない 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)
===>>> apache22-2.2.3
        ===>>> New version available: apache22-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

注記:

Portmaster のデフォルトの設定では、 インストールされている port を削除する前にバックアップ用の package が作成されます。 このバックアップは、 新しいバージョンのインストールに成功すると削除されます。 -b を使うと、 Portmaster の自動的なバックアップの削除は行いません。 -i を追加すると、 Portmaster をインタラクティブモードで使用できます。 このモードでは、各 port をアップグレードするかどうかの選択を対話的に行うことがでます。 多くのオプションが利用可能です。portmaster(8) のマニュアルページから、 それらの使用方法に関する詳細な説明を読んでください。

アップグレードの過程でエラーに遭遇した場合には、 -f を使ってすべての ports のアップグレードや再構築を行なってください。

# portmaster -af

Portmaster を使ってシステムに新しい ports をインストールしたり、 新しい port のコンパイルやインストール前に依存するすべての port をアップグレードできます。この機能を使う時には、 Ports Collection の場所を指定してください。

# portmaster shells/bash

5.5.3.2. Portupgrade を用いた ports のアップグレード

Portupgrade は、 インストールした ports のアップグレードを行なうためのもう一つのユーティリティです。 ports-mgmt/portupgrade package または port から利用できます。 このユーティリティは ports を管理するために用いられるアプリケーションをインストールします。 Ruby に依存します。 port をインストールするには、以下を実行してください。

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

このユーティリティを使ってアップグレードを行う前に、 pkgdb -F を使って、 インストールされている ports の一覧を調べてください。 矛盾が検出された場合には修復してください。

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

# portupgrade -ai

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

# portupgrade -R firefox

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

# portupgrade -PP gnome2

また、ビルドやインストールを行なわず、 distfiles または packages だけをダウンロードしたければ、 -F オプションを指定してください。 利用可能なすべてのオプションについては、 portupgrade(1) のマニュアルを参照してください。

5.5.4. ports とディスク容量

Ports Collection を使い続けていると、 そのうちディスクを食いつぶしてしまうでしょう。 ports をビルドしてインストールした後、 ports スケルトンで make clean を実行すると、作業用の work ディレクトリを削除します。 Portmaster を使って port をインストールする場合には、-K を使わなければこのディレクトリは自動的に削除されます。 Portupgrade がインストールされている場合には、 以下のコマンドはローカルの Ports Collection に見つかったすべての work ディレクトリを削除します。

# portsclean -C

さらに、時間が経つにつれ /usr/ports/distfiles には、古くなったソースファイルがたまっていきます。 Portupgrade がインストールされている場合には、 次のコマンドで、どの ports からも使われていない distfiles を削除できます。

# portsclean -D

Portupgrade を使って、システムにインストールされている port から使われていない distfiles をすべて削除するには、以下のコマンドを使ってください。

# portsclean -DD

もし Portmaster がインストールされているのであれば、以下を実行してください。

# portmaster --clean-distfiles

デフォルトでは、このコマンドはインタラクティブに設定されているため、 ユーザに対して distfile を削除すべきかどうかを確認するプロンプトが表示されます。

これらのコマンドに加え、ports-mgmt/pkg_cutleaves package または port は、 必要なくなった ports を削除する作業を自動化します。

5.6. インストール後の作業

バイナリ package もしくは port のどちらを用いてソフトウェアをインストールするかに関わらず、 サードパーティ製のアプリケーションの多くは、 インストール後にある程度の設定を必要とします。 以下のコマンドや場所の情報は、 アプリケーションとともに何がインストールされたかを知るための助けとなるでしょう。

  • 多くのアプリケーションでは、 デフォルトの設定ファイルが、少なくとも一つは /usr/local/etc にインストールされます。 この設定ファイルを確認し、 必要に応じてシステムの要求に合うように編集してください。

  • ドキュメントが付属しているアプリケーションは、 ドキュメントを /usr/local/share/doc にインストールします。また、 多くのアプリケーションは、マニュアルページもインストールします。 これらのドキュメントは、 アプリケーションを使い続ける前に見ておくべきものです。

  • ある種のアプリケーションでは、 サービスを実行するためには、 アプリケーションの起動前に、 /etc/rc.conf に追加する必要があります。 これらのアプリケーションでは、通常、 スタートアップスクリプトが /usr/local/etc/rc.d にインストールされます。詳細は、 サービスの起動 をご覧ください。

  • csh(1) のユーザは、 rehash を実行して、 シェルの PATH のバイナリリストを再構築してください。

  • pkg info を使って、アプリケーションと共にインストールされたファイル、 マニュアルページ、およびバイナリを調べることができます。

5.7. うまく動作しない ports に遭遇した場合には

port をうまくコンパイルできなかったりインストールできない場合には、 以下を試してください。

  1. その port に対する修正案が提出されていないかどうかを 障害報告 (Problem Report) データベース で調べてください。 もし提案されていれば、 その提案されている修正によって問題を解決できるかもしれません。

  2. port の保守担当者に対応してもらいましょう。 port スケルトンで make maintainer と入力するか、 port の Makefile を読み、 保守担当者の電子メールアドレスを調べてください。 保守担当者にメールを送る際には、port の Makefile$FreeBSD: 行、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。

    注記:

    特定の保守担当者が存在せず、かわりに メーリングリスト が保守している ports があります。 そのような場合には、メールアドレスは のようになります。 メールを送る際には、このことに気をつけてください。

    特に が保守している ports には、保守担当者がいません。 そのかわり、 そのメーリングリストを購読する人々からなるコミュニティが、 修正や対応をおこなっています。 もっとボランティアが必要です!

    メールに対して返信がなければ、 FreeBSD 障害報告の書き方 に書かれている手順にしたがって、 send-pr(1) を使ってバグレポートを提出してください。

  3. 自分で直しましょう! ports システムに関する詳細な情報は port 作成者のためのハンドブック にあります。 このセクションを読むと、壊れてしまった port を直したり、 自分で作った port を提出したりできるようになります!

  4. pkgng によるバイナリ package の管理」 に書かれている手順にしたがって、 package をインストールしてください。

第6章 X Window System

X.Org X11 サーバ対応: Tom Ken [FAMILY Given]Fonvieille Marc [FAMILY Given].

6.1. この章では

FreeBSD では、ユーザに強力なグラフィカルインタフェースを提供するために X11 を採用しています。 X11 は、 Xorg (他のソフトウェアパッケージについてはここでは述べません) に実装された、 フリーで利用できる X Window System です。 FreeBSD におけるデフォルトかつ公式の X11 サーバは X.Org Foundation が開発している Xorg です。 FreeBSD に似たライセンスに従って配布されています。

X11 がサポートするビデオハードウェアについての情報は、 Xorg のウェブサイトをご覧ください。

この章を読めば以下のことがわかります。

  • X Window System のさまざまなコンポーネントと、 それらが互いにどのように連携しているか。

  • X11 のインストールおよび設定方法

  • さまざまなウィンドウマネージャのインストール方法

  • X11 での TrueType® フォントの使い方

  • GUI ログイン (XDM) の設定方法

この章を読み始める前に以下のことを理解しておく必要があります。

6.2. 用語の説明

X Window System のさまざまなコンポーネントについての詳細や、 それらがどのようにやり取りするかについてすべて理解する必要はありませんが、 これらのコンポーネントについて基本的なことを知っていると、 強力な武器になるでしょう。

X サーバ

X は最初からネットワークを意識してデザインされており、 クライアント - サーバ モデルを採用しています。 このモデルでは、X サーバ はキーボードやモニタ、 マウスが接続されたコンピュータ上で動きます。 このサーバはディスプレイの表示を管理したり、キーボード、 マウスからの入力を処理したり、 タブレットやビデオプロジェクタ等の他の装置からの入出力を処理します。 これは、ある人々を混乱させることがあります。 X での用語は彼らが想定するものとは正反対だからです。 彼らは X サーバ は地下にある大きなパワフルなマシンであり、 X クライアント が自分たちのデスク上にあると想像するのです。

X クライアント

XTermFirefox などの各 X アプリケーションは、 クライアント になります。 クライアントは この座標にウィンドウを描いてください といったメッセージをサーバへ送り、サーバは ユーザが OK ボタンを押しました といったメッセージを送り返します。

家庭や小さなオフィスのような環境では、X サーバと X クライアントは通常同じコンピュータ上で動いています。 X サーバを非力なコンピュータで動かし、 X アプリケーションをより高性能なマシンで動かすことも可能です。 この場合、 X のクライアントとサーバの通信はネットワーク越しに行なわれます。

ウィンドウマネージャ

X はスクリーン上でウィンドウがどのように見えるべきか、 マウスでそれらをどうやって動かすか、 ウィンドウ間を移動するのにどういうキーストロークを使うべきか、 各ウィンドウのタイトルバーはどのように見えるべきか、 クローズボタンを持つべきかどうか、 といったことは規定しません。そのかわりに、X ではそういったことを ウィンドウマネージャ と呼ばれるアプリケーションに任せます。ウィンドウマネージャはたくさん あります。 これらのウィンドウマネージャの見た目や使い勝手はそれぞれ異なっています。 バーチャルデスクトップをサポートしているものもありますし、 デスクトップを操作するキーストロークをカスタマイズできたり、 スタート ボタンやそれに類するものを持っているものもあります。 テーマに対応しており、 デスクトップの見た目や使い勝手を完全に変えられるものもあります。 ウィンドウマネージャは Ports Collection の x11-wm カテゴリに用意されています。

それぞれのウィンドウマネージャは異なる設定機構を備えています。 手で設定ファイルを編集しなければならないものや、 設定作業のほとんどを GUI ツールで行うことができるものもあります。

デスクトップ環境

KDEGNOME は、デスクトップ環境です。 これらは、共通のデスクトップのタスクを実行するための完全なアプリケーションスイートを含んでいます。 オフィススイート、ウェブブラウザやゲームを含んでいるものもあります。

フォーカスポリシ

ウィンドウマネージャは、 マウスのフォーカスポリシに責任を持ちます。 このポリシは、どのウィンドウがアクティブにキーストロークを 受け付けるようにするための方法を提供し、 そして、どのウィンドウがアクティブなのかを示します。

よく知られているフォーカスポリシは click-to-focus と呼ばれるものです。 このポリシは、 あるウィンドウ内でマウスをクリックすればそのウィンドウがアクティブになる、 というものです。 focus-follows-mouse ポリシでは、 マウスポインタの下にいるウィンドウがフォーカスされるというものです。 フォーカスを変えるには他のウィンドウにマウスポインタを動かすだけです。 マウスがルートウィンドウに移動した時には、 このウィンドウがフォーカスされます。 sloppy-focus モデルでは、 マウスがルートウィンドウに移動した時には、 直前に使われていたウィンドウがフォーカスされています。 sloppy-focus では、 ポインタが別のウィンドウに移った時のみフォーカスが変わり、 現在のウィンドウから出ただけでは変わりません。 click-to-focus ポリシでは、 マウスクリックによりアクティブなウィンドウが選択されます。 ウィンドウは前面に表示され、他のすべてのウィンドウの前にきます。 ポインタが別のウィンドウ上に移動した時でも、 すべてのキーストロークがこのウィンドウに届きます。

それぞれのウィンドウマネージャは、 それぞれのフォーカスポリシに対応しています。 すべてのものは click-to-focus をサポートしていますし、 多くのものは他の方法もサポートしています。 どのフォーカスモデルを利用可能かどうかについては、 ウィンドウマネージャのドキュメントをご覧ください。

ウィジェット

ウィジェットはクリック可能であったり、 他の方法で操作可能なすべてのユーザインタフェース用アイテムを指す用語です。 ボタンやチェックボックス、ラジオボタン、アイコン、リスト、などがそうです。 ウィジェットツールキットはグラフィカルアプリケーションを作成するために使われます。 KDE で使われている Qt や GNOME プロジェクトで使われている GTK+ といった有名なウィジェットセットがあります。 そのため、アプリケーションのルックアンドフィールは、 アプリケーションを作成するのに使われたウィジェットツールキットに依存し、 異なります。

6.3. X11 のインストール

FreeBSD における X11 の実装は、Xorg です。 Xorg は X.Org Foundation がリリースしている X Window System のオープンソースな実装です。 XorgXFree86™ 4.4RC2 と X11R6.6 のコードを元にしています。 現在 FreeBSD Ports Collection で利用可能な Xorg のバージョンは 7.7 です。

Ports Collection から Xorg をビルドしインストールするには、以下のように入力します。

# cd /usr/ports/x11/xorg
# make install clean

注記:

Xorg をすべてビルドするには、 少なくとも 4 GB の空き容量が必要です。

package から直接 X11 をインストールすることもできます。 pkg_add(1) ツールで扱われるバイナリパッケージが X11 についても提供されています。 pkg_add(1) のリモート取得機能を利用する時は、 package のバージョンは外してください。 pkg_add(1) は自動的にそのアプリケーションの最新版を取得します。

ですから、Xorg の package を取得してインストールするには、 次のように入力します。

# pkg_add -r xorg

注記:

上記の例では、サーバ、クライアント、フォントなどを含んだ X11 ディストリビューション全体をインストールします。 分割された X11 のパッケージや ports も利用できます。

最小の構成で X11 をインストールをするには、 x11/xorg-minimal をインストールしてください。

この章の残りでは、X11 をどのように設定すればよいか、 また生産性の高いデスクトップ環境をどのように設定するかについて解説します。

6.4. X11 の設定

寄稿: Shumway Christopher [FAMILY Given].

6.4.1. はじめに

X11 は、ほとんどの機器を自動で設定します。 古かったり、一般的ではないような機器を使う場合には、設定を始める前に、 以下のハードウェア情報を集めておくと助けになるでしょう。

  • モニタ同期周波数

  • ビデオカードのチップセット

  • ビデオカードのメモリ

画面の解像度とリフレッシュレートは、 モニタの水平および垂直同期周波数により決定されます。 ほとんどすべてのモニタは、これらの値を自動検出します。 これらの値を自動検出しないモニタもありますが、 こういった仕様は、付属のマニュアルや、 製造元のウェブサイトから取得できます。

ビデオカードのチップセットも自動検出され、 ビデオドライバの選択に使われます。 正常に認識されない時のために、 どのチップセットが使われているかを知っておくとよいでしょう。

ビデオカードのメモリは、 グラフィックアダプタがどの解像度とどの色数で動くことができるかを決めます。

6.4.2. X11 の設定

Xorg は、 HAL を用いてキーボードやマウスを自動認識します。 x11/xorg の依存として、 sysutils/hal および devel/dbus port がインストールされますが、以下のようなエントリを /etc/rc.conf ファイルに追加し、 有効にする必要があります。

hald_enable="YES"
dbus_enable="YES"

これらのサービスは、 Xorg の設定や起動が行われる前に (手動や再起動によって) 起動している必要があります。

Xorg は、設定をすることなく

% startx

と入力するだけで起動します。

ある種のハードウェアは、自動設定で動作しなかったり、 期待したような設定が行われないかもしれません。 そのような場合には、手動で設定する必要があります。

注記:

GNOME, KDE および Xfce などのデスクトップ環境では、 解像度などのスクリーンパラメータを簡単に設定できるツールがあります。 したがって、デフォルトの設定が満足するようなものではない場合でも、 これらのデスクトップ環境をインストールすることを考えているのであれば、 デスクトップ環境をインストールして、 スクリーン設定ツールを利用してください。

X11 の設定は複数の段階を経て行います。 まずは初期設定ファイルを作りましょう。 スーパーユーザになって次のようにしてください。

# Xorg -configure

これにより、/root ディレクトリに xorg.conf.new という X11 の設定ファイルの雛形が生成されます (su(1) か直接ログインのどちらを利用したかが、受け継がれる $HOME 環境変数に影響します)。 X11 プログラムはシステム上のグラフィックハードウェアを検出し、 そのハードウェア用の適切なドライバを読み込む設定ファイルを作ります。

次のステップは、作成した設定ファイルで Xorg がそのグラフィックハードウェアで動くことを確認することです。 以下を実行してください。

# Xorg -config xorg.conf.new -retro

黒とグレーのグリッドと X のマウスポインタが現われればその設定は成功です。 テストを終了するには、コマンドを実行した仮想コンソールに Ctrl+Alt+Fn (1 番目の仮想コンソールへは F1) と入力して切り替え、 Ctrl+C と入力してください。

注記:

Ctrl+Alt+Backspace キーの組み合わせでも Xorg を終了できます。 このキー操作を利用する場合には、 X 端末エミュレータで以下のコマンドを入力してください。

% setxkbmap -option terminate:ctrl_alt_bksp

または、hald 用のキーボード設定ファイル x11-input.fdi を作成して、/usr/local/etc/hal/fdi/policy ディレクトリに保存してください。 このファイルには以下を含める必要があります。

<?xml version="1.0" encoding="iso-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
	  <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
    </match>
  </device>
</deviceinfo>

hald がこのファイルを読み込むように、 コンピュータを再起動してください。

xorg.conf.newServerLayout もしくは ServerFlags セクションに、以下の行を追加する必要もあるでしょう。

Option	"DontZap"	"off"

もしマウスが動作しなければ、 先へ進む前にマウスの設定を行う必要があります。 FreeBSD インストールの章の 「マウスの設定」 を参照してください。 さらに、 最近の Xorg では、デバイスの自動認識のため、 xorg.confInputDevice セクションは無視されます。 古い設定の記述を利用するには、 以下の行をファイルの ServerLayout もしくは、 ServerFlags セクションに追加してください。

Option "AutoAddDevices" "false"

これで、以前のバージョンのように、入力デバイスを (キーボードレイアウトの変更のように) 必要なオプションを用いて設定できるようになります。

注記:

すでに説明したように、デフォルトで hald デーモンがキーボードを自動的に認識します。 キーボードレイアウトやモデルを正しく認識しない場合でも、 GNOME, KDE もしくは Xfce のようなデスクトップ環境が、 キーボードの設定ツールを提供している可能性があります。 しかしながら、 setxkbmap(1) ユーティリティや hald の設定を利用することで、 キーボードのプロパティを直接設定できます。

たとえば、フランス語のレイアウトの PC 102 キーボードを使いたい場合には、 hald のキーボード設定ファイル x11-input.fdi を作成し、/usr/local/etc/hal/fdi/policy ディレクトリに保存してください。 このファイルは以下を含んでいる必要があります。

<?xml version="1.0" encoding="iso-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
	  <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
	  <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
    </match>
  </device>
</deviceinfo>

このファイルがすでに存在する場合には、 キーボードの設定に関する部分をただ単にコピーし、 ファイルに追加してください。

hald がこのファイルを読み込むように、 コンピュータを再起動してください。

X 端末やスクリプトから以下のコマンドラインを実行することでも、 同様に設定できます。

% setxkbmap -model pc102 -layout fr

/usr/local/share/X11/xkb/rules/base.lst ファイルは、利用可能なキーボード、レイアウトおよびオプションの一覧です。

次に xorg.conf.new を好みに合うように調整します。 emacs(1)ee(1) のようなテキストエディタでファイルを開いてください。 モニタが古い場合や、通常とは異なるモデルでは、 同期周波数の自動認識に対応していないので、 これらの値を xorg.conf.new"Monitor" セクションに次のように書き加えます。

	Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
	EndSection
      

ほとんどのモニタは同期周波数の自動認識に対応しているので、 これらの値を手動で入力する必要はありません。 自動認識に対応していないモニタでは、 ダメージの可能性を避けるため、 メーカーが提供している値のみを入力してください。

X はモニタが対応していれば DPMS (Energy Star) 機能を使うことができます。 xset(1) プログラムでタイムアウトをコントロールしたり、 強制的にスタンバイ、サスペンドや電源オフにすることができます。 モニタの DPMS 機能を有効にしたい場合は、 "Monitor" セクションに次の行を加えてください。

Option       "DPMS"

xorg.conf.new はエディタで開いたままにしておき、 デフォルトの解像度と色数を好みで選びましょう。 "Screen" セクションに以下のように書きます。

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

DefaultDepth というキーワードは 実行時のデフォルトの色数について記述するためのものです。 Xorg(1) のコマンドラインスイッチ -depth が使用された場合はそちらが優先されます。 Modes というキーワードは、 与えられた色数におけるデフォルトの解像度を記述しておくためのものです。 ターゲットのシステムのグラフィックハードウェアによって定義されている、 VESA スタンダードモードのみがサポートされていることに注意してください。 上の例ではデフォルトの色数はピクセルあたり 24 ビットであり、 この色数での解像度は 1024 ピクセル× 768 ピクセルです。

最後に、設定ファイルを保存し、 上の例にあるようにテストしてみてください。

注記:

トラブルシューティングの過程で手助けするツールのひとつに X11 のログファイルがあります。これには、 X11 サーバが検知したデバイスそれぞれについての情報があります。 Xorg のログファイル名は /var/log/Xorg.0.log という形式です。実際のログファイル名は Xorg.0.log から Xorg.8.log のように変わります。

すべてうまくいったなら、設定ファイルを Xorg(1) が見つけることができる共通の場所に置きます。 これは、通常は /etc/X11/xorg.conf/usr/local/etc/X11/xorg.conf です。

# cp xorg.conf.new /etc/X11/xorg.conf

これで X11 の設定は完了です。 startx(1) ユーティリティで Xorg を起動できます。また、 xdm(1) を使って X11 サーバを起動することもできます。

6.4.3. 高度な設定

6.4.3.1. Intel® i810 グラフィックチップセットの設定

Intel® i810 統合チップセットを設定するには、 X11 にカードを制御させるために AGP プログラミングインタフェースである agpgart が必要になります。 詳しくは、agp(4) ドライバのマニュアルページをご覧ください。

このドライバを用いることで、 他のグラフィックカードと同様に設定を行うことができるようになります。 カーネルに agp(4) ドライバが組み込まれていないシステムでは、 このモジュールを kldload(8) を使って読み込もうとしても動作しないことに注意してください。 このドライバは、 起動時にカーネル内に存在するようにカーネル内部に組み込むか、 /boot/loader.conf を使わなければなりません。

6.4.3.2. ワイドスクリーンフラットパネルの追加

この章では、設定に関する幾分高度な知識を必要とします。 これまでに述べた標準ツールを使って設定に失敗する場合は、 ログファイルを参照してください。 ログファイルには、 設定のために有用な情報が十分含まれています。 テキストエディタを使用する必要があるでしょう。

現在のワイドスクリーン (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+ など) は、 16:10 や 10:9 形式、または (問題を含む可能性のある) 他のアスペクト比に対応しています。 以下は、16:10 アスペクト比のスクリーン解像度の例です。

  • 2560x1600

  • 1920x1200

  • 1680x1050

  • 1440x900

  • 1280x800

これらの解像度のひとつを以下のように "Screen" セクションMode に追加してください。

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
	Viewport  0 0
	Depth     24
	Modes     "1680x1050"
EndSubSection
EndSection

Xorg は、I2C/DDC を通してワイドスクリーンの解像度に関する情報を取得できるので、 モニタの周波数や解像度の範囲を把握しています。

もし、これらの ModeLines についての情報がドライバに存在しないのであれば、 Xorg にヒントを与えなけれならないでしょう。 ModeLine を手動で設定するのに十分な情報を /var/log/Xorg.0.log から得ることができます。 以下のような情報を探してください。

(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

これは EDID と呼ばれる情報です。 この情報を用いて ModeLine を作成するには、 正しい順番に数字を入力するだけです。

 ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

この例では "Monitor" セクションの ModeLine は以下のようになります。

Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection

以上の簡単な編集作業が終わったら、 新しいワイドスクリーンモニタ上で X が動作するでしょう。

6.5. X11 でのフォントの使用

寄稿: Stokely Murray [FAMILY Given].

6.5.1. Type1 フォント

X11 に付いてくるデフォルトのフォントは、 通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです。 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし、 小さなフォントは頭が悪そうに見えます。 しかし、世の中には質の高い Type1 (PostScript®) フォントがいくつかあり、 X11 ではそれらを簡単に利用することができます。 例えば、URW フォントコレクション (x11-fonts/urwfonts) には高品質の Type1 フォント (Times Roman®, Helvetica®, Palatino® など) が含まれています。freefont コレクション (x11-fonts/freefonts) にはもっとたくさんのフォントが含まれていますが、 それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり、 スクリーンフォントとしては十分ではありません。さらに、X11 は簡単に TrueType® フォントを使うように設定することも可能です。 詳しくは、X(7) のマニュアルページか TrueType® フォントの節 を参照してください。

上記の Type1 フォントコレクションを Ports Collection から入れる場合には次のコマンドを実行してください。

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

freefont や他のコレクションでも同じようにします。 X サーバがこれらのフォントを検出できるようにするには X サーバ設定ファイル (/etc/X11/xorg.conf) の適切な場所に次のような行を加えます。

FontPath "/usr/local/lib/X11/fonts/URW/"

別の方法としては、 X のセッション中に次のようなコマンドラインを実行します。

% xset fp+ /usr/local/lib/X11/fonts/URW
% xset fp rehash

これは動くのですが、X のセッションが終了すると消えてしまいます。 消えないようにするには X の起動時に読み込まれるファイル (通常の startx セッションの場合は ~/.xinitrc, XDM のようなグラフィカルなログインマネージャを通してログインする時は ~/.xsession) に加えておきます。 三番目の方法は新しい /usr/local/etc/fonts/local.conf ファイルを使うことです。 これに関しては アンチエイリアス 節をご覧ください。

6.5.2. TrueType® フォント

Xorg には、 TrueType® フォントのレンダリング機能が組み込まれています。 この機能を実現するために 2 つの異なるモジュールがあります。 ここでは、freetype の方が他のフォントレンダリングバックエンドと整合性が高いので、 このモジュールを使うことにします。 freetype モジュールを使うためには /etc/X11/xorg.conf ファイルの "Module" セクションに以下の行を追加するだけです。

Load  "freetype"

さて、まずは TrueType® フォント用のディレクトリ (例えば /usr/local/lib/X11/fonts/TrueType) を作り、そこに TrueType® フォントをすべて放り込みましょう。 Macintosh® の TrueType® フォントは、そのままでは使うことができませんので注意してください。 X11 で使うには UNIX®/MS-DOS®/Windows® 用のフォーマットでなければなりません。 ファイルを置いたら ttmkfdir を使って fonts.dir ファイルを作り、 X のフォントレンダラが新しいファイルがイントールされたことを分かるようにしてください。 ttmkfdir は FreeBSD Ports Collection の x11-fonts/ttmkfdir からインストールできます。

# cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir

次に TrueType® フォントのディレクトリをフォントパスに追加します。 上の Type1 フォントの場合と同じように、

% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash

とするか、もしくは xorg.conf ファイルに FontPath 行を追加します。

これで終わりです。 GimpApache OpenOffice といったすべての X アプリケーションから TrueType® フォントを使うことができます。 (高解像度なディスプレイで見るウェブページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう。

6.5.3. フォントのアンチエイリアス

更新 : Clarke Joe Marcus [FAMILY Given].

/usr/local/lib/X11/fonts/~/.fonts/ にあるすべての X11 のフォントが、Xft に対応しているアプリケーションで自動的にアンチエイリアス表示できるようになりました。 KDE, GNOME および Firefox のような最新のアプリケーションは、Xft に対応しています。

どのフォントがアンチエイリアスされるかを制御するため、 もしくはアンチエイリアスの特性を設定するために、 /usr/local/etc/fonts/local.conf ファイルを作成 (すでに存在しているのなら編集) します。 多くの Xft フォントシステムの高度な機能をこのファイルを使って調整できます。 この節ではいくつか簡単なところだけを紹介します。 詳しくは、fonts-conf(5) をご覧ください。

このファイルは XML 形式でなければなりません。 大文字小文字の区別に注意を払い、 すべてのタグが正しく閉じられているか確認してください。 ファイルは一般的な XML ヘッダで始まり、DOCTYPE 定義と <fontconfig> タグがその後にきます。

        <?xml version="1.0"?>
        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
        <fontconfig>
      

すでに説明したように、 /usr/local/lib/X11/fonts/~/.fonts/ にあるすべてのフォントは Xft 対応のアプリケーションで利用できます。 これら 2 つ以外に別のディレクトリを追加したいのなら、 /usr/local/etc/fonts/local.conf に以下のような行を追加します。

<dir>/path/to/my/fonts</dir>

新しいフォント、 そして特に新しいフォントディレクトリを追加したら、 以下のコマンドを実行してフォントキャッシュを再構築してください。

# fc-cache -f

アンチエイリアスをかけることによって境界が少しぼやけ、 そのためにとても小さなテキストはさらに読みやすくなり、 大きなフォントでは ギザギザ が消えるのです。 しかし、普通のテキストにかけた場合には目が疲れてしまうこともあります。 14 ポイント以下のサイズのフォントについて、 アンチエイリアスをかけないようにするには次の行を加えます。

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

いくつかの等幅フォントは、 アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります。 特に KDE でその傾向があるようです。 解決策の一つとして、そういったフォントのスペーシングを 100 に設定する方法があります。 そうするためには次の行を加えてください。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>fixed</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>

(これは固定サイズのフォントに "mono" という一般的な別名をつけます) そして以下を追加します。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>mono</string>
            </test>
            <edit name="spacing" mode="assign">
                <int>100</int>
            </edit>
        </match>

Helvetica の様なある種のフォントは、 アンチエイリアスすると問題が起こるでしょう。 たいてい、フォントが縦に半分に切られて表示されます。 最悪の場合、アプリケーションがクラッシュします。 これを回避するには、以下を local.conf に追加します。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>Helvetica</string>
            </test>
            <edit name="family" mode="assign">
                <string>sans-serif</string>
            </edit>
        </match>

local.conf の編集を終えたら、 ファイルの末尾が </fontconfig> タグで終わるようにしてください。 これを行わなければ、変更は無視されるでしょう。

最後に、ユーザは自分だけの設定を各自の .fonts.conf ファイルに追加できます。 これを行うためには、それぞれのユーザが単に ~/.fonts.conf を作成するだけです。 このファイルも XML 形式でなければなりません。

最後に一つ。LCD スクリーンではサブピクセルサンプリングが必要な場合があります。 これは、基本的には (水平方向に分かれている) 赤、緑、 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので、 劇的な結果が得られます。 これを有効にするには local.conf ファイルに次の行を加えます。

        <match target="font">
            <test qual="all" name="rgba">
                <const>unknown</const>
            </test>
            <edit name="rgba" mode="assign">
                <const>rgb</const>
            </edit>
        </match>
      

注記:

ディスプレイの種類にもよりますが、 rgb ではなく bgrvrgb、もしくは vbgr の場合もあるので、 試してみて最も良いものを使ってください。

6.6. X ディスプレイマネージャ

寄稿: Kingsley Seth [FAMILY Given].

6.6.1. 概要

X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり、 ログインセッションの管理に用います。 最低限の機能を実装した X 端末 やデスクトップ、 大規模なネットワークディスプレイサーバといった場面ではこれが有用です。 X Window System はネットワークとプロトコルから独立しているため、 ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります。 XDM はどのディスプレイサーバに接続するかを選択でき、 ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェースを提供しています。

XDM がユーザに getty(8) (詳しくは 「設定」 をご覧ください) と同じ機能を提供することを考えてみてください。 つまり、ディスプレイ上でシステムへのログインができ、 ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです。 それから XDM は、 ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます。 この時点で、XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示できます。

6.6.2. XDM の使用

XDM を使用するには、 x11/xdm port をインストールしてください (最近の Xorg のバージョンでは、 デフォルトでインストールされません)。 XDM のデーモンプログラムは /usr/local/bin/xdm にあります。 このプログラムは root になればいつでも起動することができ、 ローカルマシン上のディスプレイの管理を始めます。 マシンをブートする際、いつも XDM を起動したい場合には、/etc/ttys にそのためのエントリを加えておくのが簡単です。 このファイルのフォーマットや使用方法についての詳細は /etc/ttys へのエントリの追加」 を参照してください。 デフォルトの /etc/ttys ファイルには仮想端末上で XDM デーモンを起動するための行:

ttyv8	"/usr/local/bin/xdm -nodaemon"	xterm	off secure

があります。 このエントリはデフォルトでは無効になっており、有効にするには 5 番目のカラムを off から on にし、init にファイル /etc/ttys の再読み込みをさせる」 の指示に従って init(8) を再起動します。 最初のカラムはこのプログラムが管理する端末の名前で、この場合 ttyv8 になります。 つまり、XDM は 9 番目の仮想端末で起動されるということです。

6.6.3. XDM の設定

XDM の設定用ディレクトリは /usr/local/lib/X11/xdm です。 このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります。 だいたいは以下のような感じです。

ファイル説明
Xaccessクライアント認証のルールセット
Xresourcesデフォルトの X リソース
Xservers管理すべきリモートやローカルのディスプレイのリスト
Xsessionデフォルトのログイン時のセッションスクリプト
Xsetup_*ログインインタフェースの前にアプリケーションを起動するためのスクリプト
xdm-configこのマシンで動いているすべてのディスプレイのグローバルな設定
xdm-errorsサーバプログラムによって生成されるエラー
xdm-pid現在動いている XDM のプロセス ID

このディレクトリにはまた、XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります。 それぞれのファイルの目的を簡単に解説しましょう。 正確な文法や使い方は xdm(1) に記述されています。

デフォルトの設定では、単純な四角のログインウィンドウがあり、 そこにはマシンのホスト名が大きなフォントで表示され、 Login:Password: のプロンプトがその下に表示されています。 XDM スクリーンの見ためや使い勝手を変えるにはここから始めるのがいいでしょう。

6.6.3.1. Xaccess

XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます。 このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます。 これは、xdm-config を変更してリモートからのコネクションを待ち受けるようにしない限り無視されます。 デフォルトでは、どのクライアントからの接続も拒否します。

6.6.3.2. Xresources

これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです。 このファイルでログインプログラムの見た目を変更することができます。 フォーマットは X11 のドキュメントで記述されている app-defaults ファイルのものと同じです。

6.6.3.3. Xservers

これは、chooser が選択肢として提供するリモートのディスプレイの一覧です。

6.6.3.4. Xsession

XDM でログインした後に実行されるデフォルトのセッションスクリプトです。 通常、各ユーザは ~/.xsession というカスタマイズしたセッションスクリプトを持っており、 こちらが優先されます。

6.6.3.5. Xsetup_*

これらは chooser やログインインタフェースが表示される前に自動的に実行されます。 それぞれのディスプレイに対して、Xsetup_ に続けてローカルのディスプレイ番号を付けた (たとえば Xsetup_0) 名前のついたスクリプトがあります。 典型的な使い方は xconsole のようなバックグラウンドで動かすプログラムを一つか二つ起動することです。

6.6.3.6. xdm-config

app-defaults の書式で書かれた、 このインストレーションで管理されるすべてのディスプレイに適用される設定を保持しています。

6.6.3.7. xdm-errors

このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます。 XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合、 このファイルのエラーメッセージを見てください。 そういったメッセージは各ユーザの ~/.xsession-errors にもセッション毎に書き出されます。

6.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) を参照してください。

6.6.5. XDM の代わりになるもの

デフォルトの XDM に代わるものがいくつかあります。 一つは KDM (KDE に付属しています) はその一つであり、この章の後ろで解説します。 KDM ディスプレイマネージャは、 ログイン時にウィンドウマネージャを選ぶことができるのに加え、 見た目もかなり綺麗にしてくれます。

6.7. デスクトップ環境

寄稿: Vaschetto Valentino [FAMILY Given].

このセクションでは、FreeBSD 上の X で利用可能ないくつかのデスクトップ環境について解説します。 デスクトップ環境 とは、 単なるウィンドウマネージャから KDEGNOME といったような完全なデスクトップアプリケーションスイートまでカバーします。

6.7.1. GNOME

6.7.1.1. GNOME について

GNOME はユーザフレンドリなデスクトップ環境で、 ユーザはコンピュータを簡単に使ったり設定したりできるようになります。 GNOME にはパネル (アプリケーションを起動したり状態を表示したりするもの)、 デスクトップ (データやアプリケーションが置かれる場所)、 標準的なデスクトップツールやアプリケーションのセット、 そしてアプリケーションが互いにうまくやり取りできるような仕組みが含まれています。 他の OS や環境に慣れている人でも GNOME の提供するグラフィック環境であれば心地よく感じるでしょう。 FreeBSD 上の GNOME に関するもっと詳しい情報は、 FreeBSD GNOME Project のウェブサイトで見ることができます。 ウェブサイトには、GNOME のインストール、設定、管理に関する非常に分かりやすい FAQ も用意されています。

6.7.1.2. GNOME のインストール

package や Ports Collection を利用してソフトウェアを簡単にインストールできます。

GNOME package をネットワークからインストールするには、 以下のようにするだけです。

# pkg_add -r gnome2

pkgng ユーザは、 以下のコマンドを使用してください。

# pkg install gnome2

GNOME をソースから構築する場合、 次のように ports ツリーを使いましょう。

# cd /usr/ports/x11/gnome2
# make install clean

GNOME を適切に動作させるには、 /proc ファイルシステムをマウントする必要があります。 以下を /etc/fstab に追加して、起動中に procfs(5) をマウントするように設定してください。

proc           /proc       procfs  rw  0   0

GNOME がインストールできたら、 デフォルトのウィンドウマネージャの代わりに GNOME を起動するように X サーバに指示しなければなりません。

GNOME を起動する最も簡単な方法は、GNOME ディスプレイマネージャ GDM を使うことです。 GDM は、 GNOME デスクトップの一部としてインストールされますが、 デフォルトでは無効になっています。 有効にするには、以下の行を /etc/rc.conf に追加してください。

gdm_enable="YES"

再起動すると、GDM が自動的に起動します。

GNOME のすべてのサービスを、 GDM とともに起動するようにしておくと良いでしょう。 このように設定するには、以下の行を /etc/rc.conf ファイルに追加してください。

gnome_enable="YES"

GNOME.xinitrc という名前のファイルを適切に設定することで、 コマンドラインから起動することもできます。 自分の .xinitrc が既にある場合には、ウィンドウマネージャを起動する行を /usr/local/bin/gnome-session を起動するように変更するだけです。 特にこのファイルを用意していない場合には、 次のようにすれば十分でしょう。

% echo "/usr/local/bin/gnome-session" > ~/.xinitrc

次に、startx と入力すれば GNOME デスクトップ環境が起動します。

注記:

もし XDM のような古いディスプレイマネージャを使っているなら、 この方法ではうまくいきません。その代わり、実行可能な .xsession というファイルを作成し、 同じコマンドを起動するようにします。 そのためには、このファイルを編集してウィンドウマネージャを /usr/local/bin/gnome-session で置き換えます。

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/local/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

もう一つの方法は、 ログイン時にウィンドウマネージャを選択できるようにディスプレイマネージャを設定することです。 KDE の詳細についてのセクションで KDE のディスプレイマネージャである KDM を使ってどのようにすればいいのかを解説しています。

6.7.2. KDE

6.7.2.1. KDE について

KDE は最近の簡単に使えるデスクトップ環境です。 KDE によりユーザは以下のようなメリットを亨受します。

  • 美しい現代風のデスクトップ

  • ネットワーク透過なデスクトップ

  • KDE デスクトップやそのアプリケーションを使う際に、 ヘルプへのアクセスを便利で統一されたものにする統合されたヘルプシステム

  • すべての KDE アプリケーションで統一された見ためや使い勝手

  • 標準化されたメニュー、ツールバー、 キーバインディング、カラースキームなど

  • 国際化: KDE は 55 を越える言語で利用可能

  • 一元的で、首尾一貫した、ダイアログベースのデスクトップ設定

  • 膨大な数の KDE アプリケーション

KDE には Konqueror と呼ばれるウェブブラウザも付属しており、これは UNIX® システム上の他のウェブブラウザの強力な競争相手です。 KDE の詳細については KDE のウェブサイト をご覧ください。 KDE に関する FreeBSD 特有の情報とリソースについては、 KDE/FreeBSD initiative のウェブサイトをご覧ください。

6.7.2.2. KDE のインストール

GNOME や他のデスクトップ環境とまったく同じように、 package や Ports Collection から簡単にインストールできます。

KDE 4 package をネットワーク越しにインストールするには次のようにします。

# pkg_add -r kde4

pkg_add(1) は自動的にアプリケーションの最新版を取得します。

pkgng ユーザは、 以下のコマンドを使用してください。

# pkg install kde4

KDE をソースから構築するには、次のように ports ツリーを使いましょう。

# cd /usr/ports/x11/kde4
# make install clean

port を最初にインストールするときには、 オプションを選択するメニューが表示されます。 デフォルトが推奨されます。

KDE 4 は大きなアプリケーションのため、 高速のコンピュータでもコンパイルに長い時間がかかります。

KDE がインストールできたら X サーバに、デフォルトのウィンドウマネージャの代わりにこのアプリケーションを立ち上げるように教えます。 .xinitrc ファイルを次のように編集しましょう。

% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

さぁ、これで startx でいつ X Window System を立ち上げても KDE がデスクトップになります。

XDM のようなディスプレイマネージャを使っている場合、 設定は少し異なります。代わりに .xsession ファイルを編集しましょう。 KDM 用の説明はこの章の後のほうにあります。

6.7.3. KDE の詳細について

さぁ、KDE のインストールができました。 ほとんどのことはヘルプページを見たりいろんなメニューをつつけばわかるでしょう。 Windows® や Mac® のユーザにも簡単なはずです。

KDE の最も良いリファレンスはオンラインドキュメントです。 KDE には独自のウェブブラウザ Konqueror が付属していますし、 膨大な数の便利なアプリケーションや詳しいドキュメントも用意されています。 このセクションの残りではなんとなく使っているだけでは理解し難い技術的なところを解説します。

6.7.3.1. KDE ディスプレイマネージャ

マルチユーザシステムの管理者であれば、 ユーザを迎えるにあたってグラフィカルなログイン画面が欲しいと思うかもしれません。 前の章で述べたように XDM はそのために使えますが、 KDE にはその代わりになる KDM が付いています。 見た目がより魅力的で、ログイン時のオプションもたくさんあります。 特に (メニューを使って) ログイン後に使うデスクトップ環境 (KDEGNOME など) を簡単に選ぶことができます。

KDE 4 では、 procfs(5) をマウントする必要があります。 /etc/rc.conf に以下の行を追加してください。

kdm4_enable="YES"

6.7.4. Xfce

6.7.4.1. Xfce について

XfceGNOME で使われている GTK+ ツールキットをベースにしたデスクトップ環境ですが、 ずっと軽いので、 シンプルで効率的でありながら使いやすく設定が簡単なデスクトップ環境を求める人に向いています。 見ためは商用 UNIX® システムが採用している CDE にかなり似ています。Xfce の機能をいくつか以下に挙げます。

  • シンプルで使いやすいデスクトップ

  • マウスのドラッグアンドドロップなどですべての設定が可能

  • CDE に似たメインパネルとメニューやアプレット、 アプリケーションランチャ

  • 統合されたウィンドウマネージャ、ファイルマネージャ、 サウンドマネージャと GNOME 準拠のモジュールなど

  • (GTK+ なので) テーマをサポート

  • 速くて軽くて効率的: 古いマシンや遅いマシン、 メモリの限られたマシンに向いています

Xfce に関する詳しい情報は Xfce のウェブサイト で得られます。

6.7.4.2. Xfce のインストール

Xfce をネットワークからインストールするには、 次のように実行してください。

# pkg_add -r xfce4

pkgng ユーザは、 以下のコマンドを使用してください。

# pkg install xfce4

また、Ports Collection を利用してソースからインストールすることも可能です。

# cd /usr/ports/x11-wm/xfce4
# make install clean

インストール後、次回 X を起動した時に Xfce が立ち上がるように設定します。 次のようにしてください。

% echo "/usr/local/bin/startxfce4" > ~/.xinitrc

X を次に起動すると Xfce が立ち上がります。 XDM のようなディスプレイマネージャを使っている場合には、 GNOME のセクションに書いてあるように .xsession ファイルを作成し、 /usr/local/bin/startxfce4 を起動するように追加します。 または KDM のセクションにあるように、 ログイン時にディスプレイマネージャからデスクトップ環境を選択できるように設定してください。

パート II. 日々の生活

第 1 部では基礎的なことがらを説明したので、 FreeBSD ハンドブックの第 2 部では FreeBSD でよく使われる機能について説明します。 各章の内容は以下のとおりです。

  • ブラウザ、生産的なツール、ドキュメントビューアといった、 人気があって便利なデスクトップアプリケーションの紹介

  • FreeBSD で利用可能なマルチメディアツールの紹介

  • システムで特別な機能を有効にするために、 カスタムカーネルを構築する手順の説明

  • デスクトップおよびネットワーク接続両方のプリンタの設定に関する、 印刷システムの詳細な説明

  • FreeBSD システムで Linux アプリケーションを実行する方法

これらの章では、読み飛ばしを推奨しているものもあります。 これについてはそれぞれの章の始めにある概要に書かれています。

第7章 デスクトップアプリケーション

7.1. この章では

FreeBSD は性能や安定性によりサーバとして人気がある一方で、 日々のデスクトップとしての利用にも適しています。 packages や ports から 24,000 を超えるアプリケーションを利用できるので、 さまざまなアプリケーションを動かせるようにカスタマイズしたデスクトップを作り上げることができます。 この章では、packages や Ports Collection を用いて、人気の高いデスクトップアプリケーションをインストールする方法について説明します。

注記:

一から構築するのではなく、 事前に構築されたデスクトップバージョンの FreeBSD をお望みのユーザは、pcbsd.org ウェブサイト をご覧ください。

FreeBSD は、Linux® バイナリ互換 機能を持つので、Linux® 用に開発された多くのアプリケーションを FreeBSD のデスクトップでも利用できます。 Linux® バイナリ互換機能を用いた port の多くは linux- からはじまる名前を持ちます。 この章では、Linux® アプリケーションをインストールする前に Linux® バイナリ互換機能が有効であることを前提としています。

この章では、 以下のデスクトップアプリケーションのインストール方法について説明します。

分野アプリケーション名Package 名Ports 名
ブラウザFirefoxfirefoxwww/firefox
ブラウザOperaoperawww/opera
ブラウザKonquerorkde4-baseappsx11/kde4-baseapps
ブラウザChromiumchromiumwww/chromium
生産的なアプリケーションCalligracalligraeditors/calligra
生産的なアプリケーションAbiWordabiwordeditors/abiword
生産的なアプリケーションThe GIMPgimpgraphics/gimp
生産的なアプリケーションApache OpenOfficeopenofficeeditors/openoffice-4
生産的なアプリケーションLibreOfficelibreofficeeditors/libreoffice
ドキュメントビューアAcrobat Reader®ライセンスの制限により package は利用できません。print/acroread9
ドキュメントビューアgvgvprint/gv
ドキュメントビューアXpdfxpdfgraphics/xpdf
ドキュメントビューアGQviewgqviewgraphics/gqview
財務管理ソフトウェアGnuCashgnucashfinance/gnucash
財務管理ソフトウェアGnumericgnumericmath/gnumeric
財務管理ソフトウェアKMyMoneykmymoney-kde4finance/kmymoney-kde4

この章を読む前に、以下のことを理解しておく必要があります。

マルチメディア環境を整える方法については 8章マルチメディア を参照してください。

訳注:

この文書は英語で書かれている原文をそのまま邦訳したものです。 必ずしも各アプリケーションで日本語が扱えるとは限らないことに注意してください。 日本語に対応したアプリケーションは、Ports Collection の japanese ディレクトリにあるかもしれません。

7.2. ブラウザ

FreeBSD では Web ブラウザは事前にインストールされていません。 そのかわり、Ports Collection の www カテゴリには数多くの Web ブラウザ が用意されており、 多くのプログラムを packages からインストールしたり、 Ports Collection からコンパイルできます。

KDEGNOME デスクトップ環境には、 それぞれ HTML ブラウザが用意されています。 これらのデスクトップ環境を設定するための情報については 「デスクトップ環境」 を参照してください。

軽量なブラウザには、 www/dillo2, www/links, および www/w3m といったものがあります。

この節では、広く使われている以下の web ブラウザのインストール方法について説明します。 もし、アプリケーションがリソースを大量に消費したり、 ports からのコンパイルに時間がかかったり、 他の ports に大きく依存する場合には、そのことについても触れます。

アプリケーション名必要なリソースport からのインストール備考
FirefoxFreeBSD, Linux® および地域化されたバージョンを利用できます。
OperaFreeBSD と Linux® 版を利用できます。
KonquerorKDE ライブラリを必要とします。
ChromiumGtk+ を必要とします。

7.2.1. Firefox

Firefox は、 FreeBSD に完全に対応したオープンソースのブラウザです。 標準に準拠した HTML 表示エンジン、タブブラウジング、ポップアップブロック、 拡張性、高い安全性などが特徴です。 FirefoxMozilla のコードベースから派生したブラウザです。

最新の Firefox の package をインストールするには以下のように入力してください。

# pkg install firefox

Firefox 延長サポート版 (ESR: Extended Support Release) を利用したい場合には、 かわりに以下のように入力してください。

# pkg install firefox-esr

ローカライズ版は、www/firefox-i18n および www/firefox-esr-i18n から利用できます。

かわりにソースコードから希望の firefox をコンパイルすることもできます。 この例では www/firefox をビルドしますが、 firefox の部分は、 インストールする ESR やローカライズに置き換えることもできます。

# cd /usr/ports/www/firefox
# make install clean

7.2.1.1. Firefox と Java™ プラグイン

Firefox をインストールしただけでは、 Java™ には対応していません。 java/icedtea-web は、 Java アプレットを実行するための、 フリーソフトの web ブラウザのプラグインです。 package からインストールできます。port からコンパイルするには、 以下のようにしてください。

# cd /usr/ports/java/icedtea-web
# make install clean

ports をコンパイルする際のコンフィグレーションオプションは、 デフォルトのままにしてください。

インストールしたら、ブラウザを起動し、ロケーションバーに about:plugins と入力して Enter を押してください。 インストールされているプラグイン一覧のページが表示されます。 Java プラグインが一覧に追加されているでしょう。

プラグインが一覧に追加されていない場合には、 ユーザごとに以下のコマンドを実行し、ブラウザを再起動してください。

% ln -s /usr/local/lib/IcedTeaPlugin.so \
  $HOME/.mozilla/plugins/

7.2.1.2. Firefox と Adobe® Flash® プラグイン

FreeBSD 用の Adobe® Flash® プラグインは提供されていませんが、 Linux® 版のプラグインを実行するためのソフトウェア wrapper を利用できます。 この wrapper は、RealPlayer® プラグインといった他のブラウザのプラグインにも対応しています。

プラグインをインストールして有効にするには、 以下を実行してください。

  1. www/nspluginwrapper port をインストールしてください。 ライセンスの制限のため package は利用できません。 この port は、emulators/linux_base-f10 という大きな port を必要とします。

  2. www/linux-f10-flashplugin11 port をインストールしてください。 ライセンスの制限により、package は利用できません。

  3. # ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \
      /usr/local/lib/browser_plugins/

    /usr/local/lib/browser_plugins ディレクトリが存在しない場合には、作成してください。

  4. プラグインを最初に使う前に、 ユーザごとに以下を実行しておく必要があります。

    % nspluginwrapper -v -a -i

    プラグインの port がアップデートされ、 再インストールされた際には、 各ユーザは以下を実行する必要があります。

    % nspluginwrapper -v -a -u

    ブラウザを起動し、ロケーションバーに about:plugins と入力して Enter を押してください。 現在利用可能なプラグインの一覧が表示されます。

7.2.1.3. Firefox と Swfdec Flash® プラグイン

SwfdecFlash® アニメーションのデコーダーおよびレンダラーです。 Swfdec-Mozilla は、 Firefox ブラウザにおいて SWF ファイルを実行するためのプラグインで、 Swfdec ライブラリを利用しています。

package をインストールするには、以下を実行してください。

# pkg install swfdec-plugin

package を利用できない場合は、Ports Collection からコンパイルしてインストールしてください。

# cd /usr/ports/www/swfdec-plugin
# make install clean

その後、ブラウザを再起動してプラグインを有効にしてください。

7.2.2. Opera

Opera は、 機能満載で、標準規格に準拠したブラウザで、 軽量で高速です。 メールおよびニュースリーダや、IRC クライアント、 RSS/Atom フィードリーダ、その他いろいろなものが組み込まれています。 FreeBSD ネイティブ版と、Linux® バイナリ互換機能によって動作するバージョンを利用できます。

以下のコマンドは、FreeBSD 版の Opera package をインストールします。 Linux® 版をインストールするには、 operalinux-opera に置き換えてください。

# pkg install opera

あるいは Ports Collection からインストールしてください。 以下のコマンドで、ネイティブ版がインストールされます。

# cd /usr/ports/www/opera
# make install clean

Linux® 版の Opera をインストールするには、operalinux-opera に置き換えてください。

Adobe® Flash® プラグインをインストールするには、 まず www/linux-f10-flashplugin11 port をコンパイルしてください。 package は、ライセンスの制限により利用できません。 その後、www/opera-linuxplugins port もしくは package をインストールしてください。 以下の例では、両方のアプリケーションを ports からコンパイルします。

# cd /usr/ports/www/linux-f10-flashplugin11
# make install clean
# cd /usr/ports/www/opera-linuxplugins
# make install clean

インストールが終了したら、 プラグインがインストールされたかどうかをブラウザを起動して確認してください。 ロケーションバーに about:plugins と入力して Enter を押してください。 現在利用可能なプラグインの一覧が表示されます。

Java プラグインを追加するには、 「Firefox と Java™ プラグイン」 に書かれている手順に従ってください。

7.2.3. Konqueror

Konqueror はブラウザであると同時に、 ファイルマネージャおよびマルチメディアビューアの役割も果たします。 x11/kde4-baseapps package または port に含まれています。

Konqueror は、KHTML とともに、WebKit にも対応しています。WebKit は Chromium など最近のブラウザの多くで採用されているレンダリングエンジンです。 FreeBSD の Konqueror で WebKit を使うには、www/kwebkitpart package または port をインストールしてください。 以下の例では、port をコンパイルします。

# cd /usr/ports/www/kwebkitpart
# make install clean

Konqueror で、WebKit を有効にするには、 Settings, Configure Konqueror をクリックしてください。 General の設定ページにおいて、 Default web browser engine の隣の ドロップダウンメニューをクリックし、WebKitKHTML に変更してください。

KonquerorFlash® にも対応しています。 KonquerorFlash® を導入するための How To ガイドが http://freebsd.kde.org/howtos/konqueror-flash.php にあります。

7.2.4. Chromium

Chromium は、 オープンソースのブラウザのプロジェクトで、 より安全かつより高速、 より安定したウェブブラウジングを目指しています。 Chromium は、タブブラウジング、 ポップアップブロック、拡張機能などの機能を持っています。 Chromium は、Google Chrome ウェブブラウザがベースとしているオープンソースのプロジェクトです。

Chromium は、 以下のように入力することで package からインストールできます。

# pkg install chromium

または、Ports Collection を用いて ソースから Chromium をコンパイルしてインストールできます。

# cd /usr/ports/www/chromium
# make install clean

注記:

Chromium の実行可能ファイルは、 /usr/local/bin/chrome です。 /usr/local/bin/chromium ではありません。

7.2.4.1. Chromium と Java™ プラグイン

Chromium をインストールしただけでは、 Java™ には対応していません。 Java™ プラグインをインストールするには、 「Firefox と Java™ プラグイン」 に書かれている手順に従ってください。

Java™ のサポートをインストールしたら、 Chromium を起動し、アドレスバーに、 about:plugins と入力してください。 インストールされているプラグインの一覧に IcedTea-Web が追加されているはずです。

Chromium に IcedTea-Web プラグインが追加されていない場合には、 以下のコマンドを実行し、ブラウザを再起動してください。

# mkdir -p /usr/local/share/chromium/plugins
# ln -s /usr/local/lib/IcedTeaPlugin.so \
  /usr/local/share/chromium/plugins/

7.2.4.2. Chromium と Adobe® Flash® プラグイン

ChromiumAdobe® Flash® の設定は、「Firefox と Adobe® Flash® プラグイン」 に書かれている手順と同じです。 Chromium は、他のブラウザのプラグインを用いることができるので、 追加の設定は必要ありません。

7.3. 生産的なアプリケーション

生産的なアプリケーションということになると、 新しいユーザはしばしばオフィススイートや、 使いやすい文書作成ソフトウェアを求めるでしょう。 デフォルトの生産的なアプリケーションはありませんが、 KDE のような デスクトップ環境 はオフィススイートを提供しています。 インストールされているウィンドウマネージャにかかわらず、FreeBSD では、 いくつものオフィススイート、 グラフィカルな文書作成ソフトウェアを利用できます。

この節では、 以下の人気のある生産的なソフトウェアのインストール方法について説明します。 もし、アプリケーションがリソースを大量に消費したり、 ports からのコンパイルに時間がかかったり、 もしくは他の ports に大きく依存する場合には、 そのことについても触れます。

アプリケーション名必要なリソースport からのインストール実行に必要となる主な環境
CalligraKDE
AbiWordGtk+ または GNOME
GimpGtk+
Apache OpenOffice莫大JDK および Mozilla
LibreOfficeやや多莫大Gtk+ または KDE/ GNOME または JDK

7.3.1. Calligra

KDE デスクトップには、 KDE 環境以外でも利用可能なオフィススイートがあります。 Calligra には、他のオフィススイートと同様に、 標準的なアプリケーションが含まれています。 Words は文書作成ソフトウェア、 Sheets は表計算ソフトウェア、 Stage はプレゼンテーションソフトウェア、そして Karbon は図形描画ソフトウェアです。

FreeBSD では package または port から editors/calligra をインストール出来ます。 package からインストールするには次のようにします。

# pkg install calligra

package を入手できない場合は、かわりに Ports Collection を利用してください。

# cd /usr/ports/editors/calligra
# make install clean

7.3.2. AbiWord

AbiWord は、Microsoft® Word のような見た目や操作感を持つフリーの文書作成ソフトウェアです。 速く、多くの機能を持ち、ユーザフレンドリです。

AbiWord は、 Microsoft® .rtf のような独自仕様を含む多くの形式のファイルを読み書きできます。

AbiWord package をインストールするには、以下のようにしてください。

# pkg install abiword

package を入手できない場合は、 Ports Collection からコンパイルしてください。

# cd /usr/ports/editors/abiword
# make install clean

7.3.3. GIMP

画像を描画したり写真を修正することに関して、 GIMP は洗練された編集プログラムです。 単純にお絵かきソフトウェアとして使うこともできますし、 高品質な写真の加工ツールとしても使えます。 多くのプラグインに対応しており、 スクリプトインタフェースを特徴としています。 GIMP はさまざまな形式のファイルを読み書きでき、 スキャナやタブレットとのインタフェースにも対応しています。

package をインストールするには、以下のようにしてください。

# pkg install gimp

もしくは、Ports Collection を利用してください。

# cd /usr/ports/graphics/gimp
# make install clean

Ports Collection の graphics カテゴリ (freebsd.org/ja/ports/graphics.html) には、GIMP に関連したプラグイン、 ヘルプファイルおよびユーザマニュアルなどがあります。

7.3.4. Apache OpenOffice

Apache OpenOffice は、 Apache Software Foundation のインキュベータプロジェクトとして開発が行われているオープンソースのオフィススイートです。 Apache OpenOffice は、完全なオフィススイートに必須のアプリケーション (文書作成ソフトウェア、表計算ソフトウェア、 プレゼンテーションソフトウェア、そして図形描画ソフトウェア) をひととおり揃えています。 ユーザインタフェースは他のオフィススイートと似ており、 広く用いられているさまざまな形式のファイルを読み書きできます。 多くの言語で利用でき、インタフェース、スペルチェッカ、 辞書は国際化されています。

Apache OpenOffice の文書作成ソフトウェアは、ネイティブの XML ファイル形式を採用することでポータビリティや柔軟性を高めています。 表計算ソフトウェアにはマクロ機能があり、 外部データベースと接続することもできます。 Apache OpenOffice は、 Windows®, Solaris™, Linux®, FreeBSD および Mac OS® X において安定してネイティブに動作しています。 Apache OpenOffice についてのより詳しい情報は、 openoffice.org をご覧ください。 また、porting.openoffice.org/freebsd/ から、FreeBSD 特有の情報を参照してください。

Apache OpenOffice package をインストールするには、以下のように入力してください。

# pkg install apache-openoffice

package をインストールしたら、以下のコマンドを入力して Apache OpenOffice を起動してください。

% openoffice-X.Y.Z

ここで X.Y.Z は、 インストールされている Apache OpenOffice のバージョン番号です。 Apache OpenOffice の初回起動時に、いくつかの質問が行われ、 ユーザのホームディレクトリに .openoffice.org フォルダが作成されます。

希望の Apache OpenOffice の packages を利用できない場合には、port を利用する方法もあります。 しかしながら、コンパイルには大きなディスクスペースと、 本当にかなり長い時間を必要とします。

# cd /usr/ports/editors/openoffice-4
# make install clean

注記:

地域化されたバージョンをビルドするには、 上記のコマンドの代わりに以下を実行して下さい。

# make LOCALIZED_LANG=your_language install clean

your_language を正しい言語 ISO コードに置き換えてください。 サポートされている言語コードは、同じ port ディレクトリにある files/Makefile.localized に書かれています。

7.3.5. LibreOffice

LibreOffice は、documentfoundation.org が開発しているフリーソフトウェアのオフィススイートです。 他のメジャーなオフィススイートと互換性があり、 さまざまなプラットフォームで利用できます。 OpenOffice.org からの新しいフォークで、 完全なオフィススイートに必須のアプリケーション (文書作成ソフトウェア、表計算ソフトウェア、 プレゼンテーションソフトウェア、図形描画ソフトウェア、 データベース管理ソフトウェア、数式エディタ) をすべて揃えています。 多くの言語で利用でき、 インタフェース、スペルチェッカ、辞書は国際化されています。

LibreOffice の文書作成ソフトウェアは、 ネイティブのファイル形式に XML を採用することで ポータビリティや柔軟性を高めています。 表計算ソフトウェアにはマクロ機能があり、 外部データベースと接続することもできます。 LibreOffice は、 Windows®, Solaris™, Linux®, FreeBSD, Mac OS® X において安定してネイティブに動作しています。 LibreOffice についての詳しい情報は、libreoffice.org をご覧ください。

英語版の LibreOffice package をインストールするには、以下のように入力してください。

# pkg install libreoffice

Ports Collection の edtors カテゴリ (freebsd.org/ja/ports/editors.html) カテゴリには、地域化された LibreOffice が用意されています。 地域化された package をインストールするには、 libreoffice を地域化された package 名に置き換えてください。

package をインストールしたら、以下のコマンドで LibreOffice を起動してください。

% libreoffice

初回起動時には、いくつかの質問が行われ、 ユーザのホームディレクトリに .libreoffice フォルダが作成されます。

希望の LibreOffice の packages を利用できない場合には、port からコンパイルする方法もあります。 しかしながら、コンパイルには大きなディスクスペースと、 本当にかなり長い時間を必要とします。 以下の例では、英語版をコンパイルします。

# cd /usr/ports/editors/libreoffice
# make install clean

注記:

地域化されたバージョンをビルドしたいのなら、 希望の言語の port ディレクトリに cd コマンドで移動してください。 対応している言語は、Ports Collection の editors カテゴリ (freebsd.org/ja/ports/editors.html) にあります。

7.4. ドキュメントビューア

UNIX® の出現以降、 いくつかの新しい文書形式が広く使われるようになりました。 基本システムには、それらの文書が要求するビューアがないかもしれません。 この節ではそれらのドキュメントビューアのインストール方法について説明します。

アプリケーション名必要なリソースport からのインストール実行に必要になる主な環境
Acrobat Reader®Linux® バイナリ互換機能
gvXaw3d
XpdfFreeType
GQviewGtk+ または GNOME

7.4.1. Acrobat Reader®

今や多くの文書が Portable Document Format (PDF) ファイル形式で配布されています。 よく用いられる PDF ビューアが Adobe® が Linux® 用にリリースしている Acrobat Reader® です。 FreeBSD は Linux® バイナリを実行できるので、 FreeBSD でもこのアプリケーションを利用できます。 ライセンスの制限から package は利用できないため、 ports からコンパイルする必要があります。 地域化されたものが Ports Collection の print カテゴリ (freebsd.org/ja/ports/print.html) に用意されています。

以下のコマンドは、Ports Collection から、 Acrobat Reader® 9 の英語版をインストールします。地域化された版をインストールするには、 かわりに希望の ports ディレクトリに cd コマンドで移動してください。

# cd /usr/ports/print/acroread9
# make install clean

7.4.2. gv

gvPostScript® と PDF のビューアです。これは ghostview をベースとしていますが、 Xaw3d ウィジットツールキットによってより良い外観になっています。 gv は向きや用紙のサイズ、 拡大縮小、アンチエイリアスなどたくさんの設定可能な機能を持っています。 ほとんどすべての操作をキーボードかマウスのどちらかだけで行なうことができます。

package から gv をインストールするには次のようにします。

# pkg install gv

package を利用できない場合には、Ports Collection を使ってください。

# cd /usr/ports/print/gv
# make install clean

7.4.3. Xpdf

FreeBSD 向けの軽い PDF ビューアを使いたいのなら Xpdf を試してみてください。 これは少ないリソースで動作するビューアで、軽くて効率的です。 標準の X フォントを利用し、 他の X ツールキットを必要としません。

Xpdf の package をインストールするには次のコマンドを入力してください。

# pkg install xpdf

package を入手できない場合は、 Ports Collection を利用してください。

# cd /usr/ports/graphics/xpdf
# make install clean

インストールが完了したら xpdf を起動してください。 メニューを表示するにはマウスの右ボタンを押してください。

7.4.4. GQview

GQview は画像管理ソフトウェアです。 クリックひとつで画像ファイルを開いたり、外部エディタを起動したり、 サムネイル画像を作成できます。 また、スライドショーや基本的なファイル操作機能も備えており、 画像のコレクションの管理や、 重複したファイルを見つけることが簡単にできます。 GQview は全画面表示、 および国際化にも対応しています。

GQview package をインストールするには次のコマンドを入力してください。

# pkg install gqview

package を入手できない場合は、 Ports Collection を利用してください。

# cd /usr/ports/graphics/gqview
# make install clean

7.5. 財務管理ソフトウェア

FreeBSD のデスクトップで個人的な財務管理ができるように、 強力で簡単に使えるアプリケーションが用意されています。 それらのアプリケーションの中には QuickenExcel などの広く行き渡った形式のファイルと互換性があるものもあります。

この節では次のアプリケーションについて説明します。

アプリケーション名必要なリソースport からのインストール実行に必要になる主な環境
GnuCashGNOME
GnumericGNOME
KMyMoneyKDE

7.5.1. GnuCash

GnuCash は、 GNOME の一部で、 使いやすくかつ強力なアプリケーションとしてエンドユーザに提供されています。 GnuCash を使えば、 収入や支出、銀行口座、あるいは株を管理できます。 直観的なインタフェースを特徴としていますが、 高度な機能も提供しています。

GnuCash は洗練された登録機能、 階層構造の勘定システム、多くのキーボードショートカット、 自動補完機能を提供しています。 単一のトランザクションをより小さな要素に分解できます。 GnuCash は、 Quicken の QIF ファイルの読み込みやマージができます。 また、国際的な日付および通貨形式も扱えます。

GnuCash package をインストールするには次のようにしてください。

# pkg install gnucash

package が手に入らなければ、Ports Collection を使ってください。

# cd /usr/ports/finance/gnucash
# make install clean

7.5.2. Gnumeric

Gnumeric は、 GNOME コミュニティによって開発されている表計算ソフトウェアです。 セルの書式に従ってユーザの入力を自動的に推測する便利な機能や、 多くのシーケンスに対する自動補完機能があります。 Excel, Lotus 1-2-3, Quattro Pro といった広く行き渡っている多くの形式のファイルを読みこめます。 多くの関数を内蔵しており、 数値、通貨、日付、時間などのよく使うセルの書式が利用できます。

Gnumeric package をインストールするには次のように入力してください。

# pkg install gnumeric

package が手に入らなければ、Ports Collection を使ってください。

# cd /usr/ports/math/gnumeric
# make install clean

7.5.3. KMyMoney

KMyMoney は、KDE コミュニティが作成している個人用財務管理アプリケーションです。 KMyMoney は、 商用の個人用財務管理ソフトウェアに見られる重要な機能を提供することを目指しています。 また、使いやすい複式簿記機能も特徴です。 KMyMoney は標準の Quicken QIF ファイルをインポート可能で、 投資履歴や複数通貨の取扱い、財政状況のレポートを提供します。

package から KMyMoney をインストールするには次のようにします。

# pkg install kmymoney-kde4

package が手に入らない場合は、 Ports Collection を使ってください。

# cd /usr/ports/finance/kmymoney-kde4
# make install clean

第8章 マルチメディア

編集: Lippert Ross [FAMILY Given].

8.1. この章では

FreeBSD は数多くの種類のサウンドカードに対応しており、 FreeBSD システムで原音に忠実な出力を楽しむことができます。 これには録音機能と、MPEG Audio Layer 3 (MP3) や Waveform Audio File (WAV), Ogg Vorbis などをはじめとした多くの形式の音楽の再生機能が含まれます。 加えて FreeBSD の Ports Collection には、 録音した音楽を編集したり、音響効果を加えたり、接続された MIDI 機器を制御するためのアプリケーションが用意されています。

FreeBSD ではビデオファイルおよび DVD の再生もできます。 FreeBSD の Ports Collection には、さまざまなビデオメディアをエンコード、 変換、再生するアプリケーションが用意されています。

この章では FreeBSD 上でサウンドカード、ビデオの再生、TV チューナカード、 スキャナを設定する方法について説明します。 また、これらのデバイスを使うためのアプリケーションについても説明します。

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

  • FreeBSD でのサウンドカードの設定方法

  • サウンドの設定に関するトラブルシューティング

  • MP3 およびその他の形式の音声を再生、エンコードする方法

  • FreeBSD システムでのビデオ再生の準備

  • DVD, .mpg および .avi ファイルを再生する方法

  • CD および DVD の情報をファイルに抽出する方法

  • TV カードの設定方法

  • MythTV を FreeBSD にインストールして設定する方法

  • 画像スキャナの設定方法

この章を読む前に、以下のことを理解しておく必要があります。

8.2. サウンドカードの設定

寄稿: Moore Moses [FAMILY Given].
再構成: Fonvieille Marc [FAMILY Given].

設定をはじめる前に、サウンドカードのモデル、 そのカードが使用しているチップを確認してください。 FreeBSD は サウンドカードに幅広く対応しています。 使用しているカードが対応しているかどうか、 どの FreeBSD ドライバを使うかについて、 ハードウェアノート の対応オーディオデバイスの一覧を確認してください。

サウンドデバイスを使うためには、 デバイスドライバを読み込まなければいけません。 もっとも簡単な方法は kldload(8) を使ってサウンドカードのカーネルモジュールを読み込むことです。 次の例は、Intel 仕様のビルトインオーディオチップセットのドライバを読み込む例です。

# kldload snd_hda

このドライバを起動時に読み込むように設定するためには、 /boot/loader.conf にドライバを追加してください。 このドライバの場合は以下の行になります。

snd_hda_load="YES"

他に利用可能な読み込み可能なサウンドモジュールは /boot/defaults/loader.conf に記載されています。 どのドライバを利用すればいいか確かでなければ、 snd_driver モジュールを読み込んでください。

# kldload snd_driver

snd_driver モジュールは、 一般に使用されるカードに対応したドライバをまとめて一度に読み込むメタドライバです。 このドライバを使用すれば、速やかに正しいドライバを探し出すことができます。 /boot/loader.conf ファイルを使用して、 すべてのサウンドドライバを読み込むこともできます。

snd_driver メタドライバの読み込み後に、 どのドライバがサウンドカードに選択されたのかを知るには、 cat /dev/sndstat と入力してください。

8.2.1. サウンドに対応したカスタムカーネルを設定する

この節は、 サウンドカードのドライバをカーネルへ静的に組み込もうと考えているユーザ向けです。 カーネル再構築の詳細は 9章FreeBSD カーネルのコンフィグレーション を参照してください。

サウンドに対応したカスタムカーネルを使うときには、 オーディオフレームワークドライバをカーネルコンフィグレーションファイルに追加してください。

device sound

次に、サウンドカードに対応したドライバを追加します。 前節の Intel 仕様のビルトインオーディオチップセットの例では、 カスタムカーネルコンフィグレーションファイルに以下の行を追加してください。

device snd_hda

ドライバのマニュアルページを読んで、 ドライバが使用するデバイス名を調べてください。

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

もしカードが 0x220 I/O port と IRQ 5 を使用している場合には、 /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) をご覧ください。

8.2.2. サウンドのテスト

必要となるモジュールを読み込むか、カスタムカーネルで再起動すると、 サウンドカードが検出されます。 確認をするには、dmesg | grep pcm と実行してください。 この例は、ビルトイン Conexant CX20590 チップセットを搭載したシステムのものです。

pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0
pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0
pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1

サウンドカードの状態は、 以下のコマンドを使用して確認することもできます。

# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default

この出力は、サウンドカードによって異なります。 pcm デバイスがなければ、 適切なデバイスドライバが読み込まれているか、 カーネルに追加されてコンパイルされているかどうかを確認してください。 次の節では、良くある問題とその解決方法をリストアップしています。

すべてうまくいけば、サウンドカードが FreeBSD で機能するでしょう。 CD または DVD ドライブのオーディオ出力端子がサウンドカードと適切に接続されていれば、 cdcontrol(1) を使ってドライブ内のオーディオ CD を再生できます。

% cdcontrol -f /dev/acd0 play 1

警告:

オーディオ CD は特別なエンコーディングが行われているため、 mount(8) を使ってマウントすべきではありません。

audio/workman のように、 よりよいインタフェースを提供するさまざまなアプリケーションがあります。 audio/mpg123 port をインストールして MP3 オーディオファイルを聞くことができます。

手っ取り早くカードをテストするには、 /dev/dsp デバイスにデータを送ってみてください。

% cat filename > /dev/dsp

ここで filename は、どのような形式のファイルでも構いません。 このコマンドラインを実行すると雑音が発生するはずです。 これにより、サウンドカードが動作していることを確認できます。

注記:

/dev/dsp* デバイスノードは、 必要に応じて自動的に作成されます。 デバイスノードが使用されていない場合には存在せず、 ls(1) の出力に表示されません。

8.2.3. サウンドカードの問題についてのトラブルシューティング

表 8.1 は、良くあるエラーメッセージとその解決法の一覧です。

表8.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 のサウンド機能です。


最近のグラフィックカードの中には、 HDMI を利用するため、 グラフィックカード自身がサウンドカードを持つものがあります。 このようなサウンドデバイスには、 時としてサウンドカードより若い番号が付けられることがあります。 そのような場合には、 サウンドカードをデフォルトプレイバックデバイスとして利用できません。 このことが原因かどうかを確認するには、dmesg を実行して pcm を探してください。 以下のような出力を得るかもしれません。

...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
...

この例では、グラフィックカード (NVidia) には、サウンドカード (Realtek ALC889) より若い番号が付けられています。 サウンドカードをデフォルトのプレイバックデバイスとして利用するには、 hw.snd.default_unit をプレイバックで使用するユニット番号に変更してください。

# sysctl hw.snd.default_unit=n

ここで、n は使用するサウンドデバイスの番号です。 この例では 4 です。 /etc/sysctl.conf に以下の行を入れると、 設定の変更が常に反映されるようになります。

hw.snd.default_unit=4

8.2.4. 複数音源の利用

寄稿: Chopra Munish [FAMILY Given].

同時に再生することのできる音源を複数実装していることは、 多くの場合望ましいことです。 FreeBSD では、仮想サウンドチャネル を使ってカーネル内でサウンドを合成することにより、 サウンドカードの再生を多重化することができます。

仮想チャネルの数を決めるのに三つの sysctl(8) 変数を設定できます。

# 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) を参照してください。

注記:

デバイスを使用しているときに仮想チャンネルの数を変更することはできません。 まず、ミュージックプレーヤやサウンドデーモンといった デバイスを使用しているすべてのプログラムを終了してください。

/dev/dsp0 を必要とするプログラムが意識しなくても、 適切な pcm デバイスが自動的に設定されます。

8.2.5. ミキサチャネルの初期値を設定する

寄稿: El-Rayes Josef [FAMILY Given].

各ミキサチャネルの初期値は pcm(4) ドライバのソースコードにハードコーディングされています。 mixer(8) および他のサードパーティ製のアプリケーションやデーモンによって、 サウンドカードのミキサレベルを変更できますが、 永続的な解決方法ではありません。 そのかわり以下の例のように、 適切な値を /boot/device.hints ファイルに記述することによって、 ドライバレベルでミキサの初期値を設定することができます。

hint.pcm.0.vol="50"

この例では、pcm(4) が読み込まれたと同時に、 ボリュームチャネルの初期値を 50 に設定します。

8.3. MP3 オーディオ

寄稿: Lee Chern [FAMILY Given].

この節では、FreeBSD で利用できる MP3 プレイヤや、オーディオ CD トラックを吸い出す方法、 および MP3 のエンコード、 デコードの方法について説明します。

8.3.1. MP3 プレイヤ

XMMS は 人気のあるグラフィカルな MP3 プレイヤです。 Winamp スキンや追加のプラグインに対応しています。 XMMS のプレイリスト、 グラフィックイコライザ等のインタフェースは直感的です。 Winamp を使いなれている人は簡単に XMMS を使えるでしょう。 FreeBSD では、XMMSmultimedia/xmms の port または package からインストールできます。

audio/mpg123 package もしくは port は、 は代替となる コマンドライン上の MP3 プレイヤです。インストールしたら、再生する MP3 ファイルをコマンドラインから指定してください。 もしシステムが、複数のオーディオデバイスを搭載しているのであれば、 サウンドデバイスを同様に指定してください。

# mpg123 -a /dev/dsp1.0 Foobar-GreatesHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.18.1; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

他の MP3 プレイヤも Ports Collection から利用できます。

8.3.2. CD オーディオトラックの抽出

CD 全体または CD トラックを MP3 に変換する前に、CD 上のオーディオデータをハードディスク上に抽出する必要があります。 これは raw CD Digital Audio (CDDA) データを WAV ファイルにコピーすることで行われます。

sysutils/cdrtools スイートからインストールされる cdda2wav ツールを用いて、CD からオーディオデータを抽出できます。

CD をドライブにいれて次のコマンドを root 権限で実行すると、 CD 全体をトラックごとに個々の WAV ファイルに抽出できます。

# cdda2wav -D 0,1,0 -B

この例では、-D 0,1,0SCSI デバイス 0,1,0 が抽出する CD を表します。 cdrecord -scanbus を使って、 システムの適切なデバイスパラメータを取得してください。

個々のトラックを抽出するには、 次のように -t でトラックを指定してください。

# cdda2wav -D 0,1,0 -t 7

範囲を指定して、 一番目から七番目のトラックまで抽出したい場合、 次のようにします。

# cdda2wav -D 0,1,0 -t 1+7

ATAPI (IDE) CDROM ドライブから抽出するには、 SCSI ユニット番号をデバイス名に置き換えて指定します。 たとえば IDE ドライブから七番目のトラックを抽出するには、 次のようにします。

# cdda2wav -D /dev/acd0 -t 7

または、「オーディオ CD の複製」 で説明されているように、dd を使って ATAPI ドライブ上のオーディオトラックを展開できます。

8.3.3. MP3 のエンコードとデコード

lame は、 ポピュラーな MP3 エンコーダです。 audio/lame port からインストールできます。 特許の問題から、package は利用できません。

次のコマンドを実行すると、抽出した WAV ファイル audio01.wav を使って audio01.mp3 に変換します。

# lame -h -b 128 --tt "曲名" --ta "アーティスト名" --tl "アルバム名" \
--ty "" --tc "コメント" --tg "ジャンル" audio01.wav audio01.mp3

ここで指定している 128 kbits は、MP3 の標準のビットレートです。 160 kbits または 192 kbits のビットレートは、 さらに高音質を提供します。 ビットレートが高くなるにつれて作成される MP3 ファイルは多くのディスク領域を消費します。 -h オプションを指定すると 低速高品質 モードとなります。 --t ではじまるオプションは ID3 タグを設定します。 このタグにはたいてい曲の情報が含まれており、 MP3 ファイルに格納されます。 Lame のマニュアルを参照すれば、 他のエンコーディングのオプションが見つかるでしょう。

MP3 からオーディオ CD を作成するには、 まず非圧縮のファイル形式に変換しなければなりません。 XMMSWAV 形式へ変換できますが、 mpg123 は raw Pulse-Code Modulation (PCM) オーディオデータに変換します。

mpg123 を使って audio01.mp3 を変換するには、PCM ファイルを指定してください。

# mpg123 -s audio01.mp3 > audio01.pcm

XMMS を使って MP3WAV 形式に変換するには、 以下の手順に従ってください。

手順8.1 XMMS を使って WAV 形式に変換する
  1. XMMS を起動します。

  2. 右クリックで XMMS メニューを表示します。

  3. Options から Preferences を選択します。

  4. Output Plugin を Disk Writer Plugin に変更します。

  5. Configure を押します。

  6. 非圧縮ファイルを書き出すディレクトリを入力、 または選択します。

  7. 普段通り XMMSMP3 ファイルを読み込みます。 音量は 100% でイコライザの設定はオフにします。

  8. Play を押します。 XMMSMP3 を再生しているかのように表示しますが、 音声はきこえません。 実際には MP3 をファイルに出力しています。

  9. 終了したら、再び MP3 を聴けるように Output Plugin を以前のように元に戻すのを忘れないでください。

WAVPCM 形式は、 cdrecord で利用できます。 WAV ファイルを使用する場合、 それぞれのトラックの先頭に小さなノイズが入るのに気づくでしょう。 これは WAV ファイルのヘッダ情報です。 audio/sox port または package を使うとヘッダ情報を削除できます。

% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

FreeBSD での CD 作成の詳しい情報は 「光メディア (CD & DVD) の作成と使用」 を参照してください。

8.4. ビデオ再生

寄稿: Lippert Ross [FAMILY Given].

ビデオ再生のための設定をはじめる前に、 ビデオカードのモデルおよびチップセットを確認する必要があります。 Xorg はさまざまなビデオカードに対応していますが、 すべてのカードがビデオ再生に性能を発揮できるとは限りません。 利用しているビデオカードの Xorg サーバが対応している拡張機能のリストを得るには、 Xorg を実行中に xdpyinfo を実行してください。

さまざまなプレイヤやオプションを試すのに、 テストファイルとして小さな MPEG ファイルを用意しておくのはよい考えです。 いくつかの DVD アプリケーションは DVD メディアを /dev/dvd として初期設定しているか、ハードコーディングしているので、 次のように適切なデバイスにシンボリックリンクを張っておくと便利かもしれません。

# ln -sf /dev/cd0 /dev/dvd

devfs(5) の仕様により、 このように手動で作成されたリンクはシステムを再起動すると消えてしまいます。 システムの起動時にこれらのシンボリックリンクを自動的に作成するには、 /etc/devfs.conf に下記の設定を追加してください。

link cd0 dvd

特別な機能を必要とする DVD の抽出には、 DVD デバイスへの書き込み権限が必要です。

Xorg インタフェースの使う共有メモリを拡張するために、 以下の sysctl(8) 変数の値を増やすことが推奨されています。

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

8.4.1. ビデオ機能の決定

Xorg においてビデオ表示性能を改善する方法はいくつかあり、 正しく動作するかどうかはハードウェアに大きく依存しています。 下記に説明したどの方法でも、 ハードウェアが変わると品質が変わるでしょう。

よく知られたビデオインタフェースは次の通りです。

  1. Xorg: 共有メモリを用いた通常の出力

  2. XVideo: 特別なアクセラレータによって、 drawable オブジェクトに直接ビデオを表示する Xorg インタフェースの拡張機能です。 この拡張を使うことで廉価なコンピュータでも高品質の再生が可能になります。 次の節では、 この拡張が動作していることの確認方法について説明します。

  3. SDL: Simple Directmedia Layer は、 さまざまなオペレーティングシステムの間でサウンドとグラフィックスを効果的に利用したクロスプラットホームアプリケーションを開発することを目的としたレイヤです。 SDL はハードウェアに対する低レベルの抽象的概念を提供し、 時には Xorg インタフェースを使用するよりも効果的なことがあります。 FreeBSD では、SDL は、 devel/sdl20 package または port によりインストールできます。

  4. DGA: Direct Graphics Access は、 プログラムが Xorg サーバを介せず直接フレームバッファを変更することを可能にする Xorg の拡張機能です。 低レベルのメモリマッピングが実行できることを期待しているので、 この機能を使うプログラムは root 権限で実行されなければなりません。 DGA 機能拡張は dga(1) によってテストとベンチマークができます。 dga 実行中はキーボードを押せばいつでもディスプレイ色が変更されます。 中止するには q を押します。

  5. SVGAlib: 低レベルコンソールグラフィックレイヤ

8.4.1.1. XVideo

この拡張機能が動作しているかどうかを調べるには、 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 に対応していないのでしょう。 このことはディスプレイでビデオを表示するのに、 ビデオカードおよびプロセッサによっては、 計算上の要求を満たすことがより困難になることを意味します。

8.4.2. ビデオを扱う ports および packages

この節では Ports Collection で利用可能な、 ビデオの再生に使用できるソフトウェアについて紹介します。

8.4.2.1. MPlayer および MEncoder

MPlayer はコマンドラインのビデオプレイヤで、 高速性と柔軟性をもたらすグラフィカルなインタフェースも持っています。 MPlayer の他のグラフィカルなフロントエンドも Ports Collection からインストールできます。

MPlayermultimedia/mplayer package または port からインストールできます。 いくつかのコンパイル時のオプションを設定することができ、また、 構築の際にさまざまなハードウェアのチェックがおこなわれます。 そのため、package からインストールを行わず、 port から構築することを好むユーザもいます。

port を構築する際に、メニューのオプションは、port にコンパイル時にオプションとしてどの形式に対応するかを決定するため、 見ておく必要があります。 オプションが選択されていなければ、 MPlayer はその形式のビデオ形式を表示することは出来ません。 矢印キーとスペースキーを使って必要な形式を選択してください。 選択が終わったら、Enter を押して、 port の構築とインストールを続けてください。

デフォルトでは、この packege または port は、 mplayer コマンドラインユーティリティと gmplayer グラフィカルユーティリティを構築します。 ビデオをエンコードする必要があれば、 multimedia/mencoder port をコンパイルしてください。 ライセンスの制限のため、 MEncoder の package は利用できません。

MPlayer を初めて起動すると、 各自のホームディレクトリ内に ~/.mplayer が作成されます。このサブディレクトリには、 ユーザ固有の設定ファイルのデフォルトバージョンが含まれています。

この節では、一般的な使用法についてのみ説明します。 数多くのオプションの完全な説明については、 mplayer(1) のマニュアルに記載されています。

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> には再生するタイトル番号を、 DEVICEDVD のデバイスノードを指定します。 たとえば、/dev/dvd から 2 番目のタイトルを再生するには以下のようにします。

# mplayer -vo xv dvd://3 -dvd-device /dev/dvd

注記:

デフォルトの DVD デバイスは、 MPlayer port の構築時に WITH_DVD_DEVICE=/path/to/desired/device を追加することでで定義できます。 デフォルトでは、デバイスは /dev/cd0 です。 詳細はこの port の Makefile.options をご覧ください。

停止、休止、 再生などをするにはキーバインディングを使ってください。 キーバインディングの一覧を見るには、mplayer -h を実行するか、もしくは、mplayer(1) を読んでください。

再生に関する追加のオプションがあります。 全画面モードにする -fs -zoom オプションと、 性能を向上させる -framedrop オプションです。

よく使用するオプションについては、各ユーザの .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 形式です。

UNIX® ビデオについて、 高レベルのノウハウを得たいと考えている方は mplayerhq.hu/DOCS をご覧ください。技術的な情報があります。 このドキュメントは、 バグを報告する前に、読むべきものです。

mencoder を使う前に、mplayerhq.hu/DOCS/HTML/en/mencoder.html を読んでオプションに慣れておくのはよい考えです。 品質向上、低ビットレート、形式変換をする方法が無数にあります。 これらの要素の調節具合で、性能が良かったり悪かったりするなど、 結果に違いが出るかもしれません。 コマンドラインオプションを不適切に組合せると、 mplayer でさえ再生できない出力ファイルを作成してしまいます。

はじめは単純なファイルのコピーです。

% mencoder input.avi -oac copy -ovc copy -o output.avi

したがって、単にファイルを抽出したいときには、 mplayer-dumpfile をつけます。

input.avi を音声に MPEG3 エンコードを使用して MPEG4 コーデックに変換するには、まず最初に audio/lame port をインストールしてください。 ライセンスの制限により、package は利用できません。 インストールしたら、以下のように入力してください。

% 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 権限で実行します。 期待する結果を得るには何度か繰り返すことになるので、 かわりにタイトルをファイルにダンプして、 ファイルに対して作業することをおすすめします。

8.4.2.2. xine ビデオプレイヤ

xine は、 再利用可能な基本ライブラリと、 プラグインで拡張できる実行可能なモジュールを提供するビデオプレイヤです。 multimedia/xine package または port からインストールできます。

実用上、xine を使用するには高速なビデオカードとともに高速な CPU があるか、 またはビデオカードが XVideo 拡張に対応している必要があります。 XVideo インタフェースとともに xine ビデオプレイヤを使うのが最良です。

デフォルトでは、xine プレイヤは GUI 付きで起動するでしょう。 メニューを使用して特定のファイルを開くことができます。

xine は、 再生するファイル名を指定することで、 コマンドラインから実行することもできます。

% xine -g -p mymovie.avi

xine-project.org/faq には、より多くの情報やトラブルシューティングがあります。

8.4.2.3. Transcode ユーティリティ

Transcode は、 ビデオおよびオーディオファイルを再エンコードするためのツール一式です。 Transcode を使えば、stdin/stdout ストリームインタフェースとともにコマンドラインツールを用いることで、 ビデオファイルの統合や、壊れたファイルの修復ができます。

FreeBSD では、Transcode は、 multimedia/transcode package もしくは port からインストールできます。 多くのユーザは port からコンパイルすることを好みます。 port では、 コンパイルで有効にするサポートやコーデックを指定するコンパイルオプションのメニューを利用できるためです。 オプションを選択しないと、Transcode は、その形式をエンコード出来ないでしょう。 矢印キーとスペースバーを使って、 必要とするフォーマットを選択してください。 選択が終わったら、 Enter を押して、port のコンパイルとインストールを続けてください。

この例では、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 を使って再生できます。 また、multimedia/vcdimager および sysutils/cdrdao といったユーティリティを使って、 ファイルを CD メディアに書き込むことでビデオ CD も作成できます。

transcode のマニュアルページに加え、transcoding.org/cgi-bin/transcode から、更なる情報や使用例を得てください。

8.5. TV カードの設定

原作: El-Rayes Josef [FAMILY Given].
改訂: Fonvieille Marc [FAMILY Given].

TV カードを使用することで、 TV 放送をコンピュータで見ることができます。 これらの多くのカードは RCA または S-video 入力端子を備えており、 FM ラジオチューナを装備したカードもあります。

FreeBSD は、Brooktree Bt848/849/878/879 をビデオキャプチャチップに採用した PCI TV カードに bktr(4) ドライバで対応しています。 このドライバは、ほとんどの Pinnacle PCTV ビデオカードに対応しています。 TV カードを購入する前に、対応しているチューナの一覧について、 bktr(4) を参照してください。

8.5.1. ドライバを読み込む

カードを使用するには、bktr(4) ドライバを読み込む必要があります。 起動時に自動的に読み込むためには、 /boot/loader.conf に以下の行を追加してください。

bktr_load="YES"

あるいは、カスタムカーネルに TV ビデオカードへのサポートを静的に組み込むこともできます。 この場合には、 次の行をカーネルコンフィギュレーションファイルに追加してください。

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) や、 カーネルコンフィギュレーションファイルオプションで、 検知されたいくつかのパラメータを変更できます。 たとえば、チューナを Philips SECAM チューナとして検知されるようにするには、 カーネルコンフィギュレーションファイルに以下の行を追加します。

options OVERRIDE_TUNER=6

または、直接 sysctl(8) を使用して変更します。

# sysctl hw.bt848.tuner=6

利用可能な sysctl(8) パラメータおよびカーネルオプションについては bktr(4) を参照してください。

8.5.2. 便利なアプリケーション

TV カードを使用するためには、 以下のアプリケーションの一つをインストールする必要があります。

  • multimedia/fxtv はウィンドウ内に TV 映像を映します。 画像/音声/ビデオを取り込むこともできます。

  • multimedia/xawtv も同様の機能を持った TV アプリケーションです。

  • audio/xmradio は TV カードに搭載された FM ラジオチューナを使用するためのアプリケーションです。

他にも多くのアプリケーションが FreeBSD の Ports Collection に収録されています。

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

TV カードに関する問題が起きたときには、bktr(4) が本当にビデオキャプチャチップおよびチューナに対応しているか、 オプションが正しく設定されているかどうかをまず確認してください。 TV カードに関するサポートや質問に関しては、 freebsd-multimedia メーリングリストを参照してください。

8.6. MythTV

MythTV は、広く使われているオープンソースの Personal Video Recorder (PVR) アプリケーションです。 この節では、FreeBSD に MythTV をインストールし、 設定する方法について説明します。 MythTV の使用法に関するより詳細な情報については、mythtv.org/wiki をご覧ください。

MythTV は、フロントエンドおよびバックエンドを必要とします。 これらは、同じシステム上でも、 異なるコンピュータ上でも動かすことが可能です。

フロントエンドについては、 multimedia/mythtv-frontend package または port から FreeBSD にインストールできます。 6章X Window System で説明されているように、 Xorg をインストールして設定する必要もあります。 このシステムは X-Video Motion Compensation (XvMC) に対応し、 オプションとして、Linux Infrared Remote Control (LIRC)-互換のリモートに対応したビデオカードを持っていることが理想的です。

FreeBSD にバックエンドとフロントエンドの両方をインストールするには、 multimedia/mythtv package または port を使ってください。 MySQL™ データベースサーバも必要となりますが、 自動的に依存でインストールされます。オプションで、 チューナカードと録音したデータを保存するためのストレージが必要です。

8.6.1. ハードウェア

MythTV は、 エンコーダやチューナなどのビデオ入力デバイスへのアクセスに Video for Linux (V4L) を用います。 FreeBSD では、USB DVB-S/C/T カードにおいて最もよく動作します。 なぜならば、このカードは、 V4L ユーザランドアプリケーションを提供する multimedia/webcamd package または port により良くサポートされているためです。 webcamd により対応している Digital Video Broadcasting (DVB) カードは、MythTV で動作するはずです。 動作することが知られているカードの一覧が wiki.freebsd.org/WebcamCompat にあります。 Hauppauge カードのドライバもまた、 multimedia/pvr250 および multimedia/pvrxxx port として利用可能ですが、 標準的ではないドライバのインタフェースを提供しており、 0.23 より後の MythTV では動作しません。 ライセンスの制限により、package は利用できません。 そのため、これらの ports はコンパイルをしなければなりません。

wiki.freebsd.org/HTPC ページは、DVB ドライバのすべての一覧を提供しています。

8.6.2. MythTV バックエンドの設定

port を使って MythTV をインストールしてください。

# cd /usr/ports/multimedia/mythtv
# make install

インストールが終わったら、 MythTV データベースを設定してください。

# mysql -uroot -p < /usr/local/share/mythtv/database/mc.sql

その後、バックエンドを設定してください。

# mythtv-setup

最後にバックエンドを起動してください。

# echo 'mythbackend_enable="YES"' >> /etc/rc.conf
# service mythbackend start

8.7. 画像スキャナ

寄稿: Fonvieille Marc [FAMILY Given].

FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) によって実現されており、 FreeBSD の Ports Collection で提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。

FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 スキャナのインタフェースに依存して、異なるドライバが必要となります。 設定を始める前に、 SANE がスキャナに対応していることを確認してください。 対応しているスキャナに関してのより詳細な情報については、 http://www.sane-project.org/sane-supported-devices.html をご覧ください。

この節では、FreeBSD がどのようにしてスキャナを認識するかについて説明します。 その後、FreeBSD システム上で SANE を設定して使用する方法の概要について説明します。

8.7.1. スキャナの確認

GENERIC カーネルには USB スキャナに対応するためのデバイスドライバが搭載されています。 カスタムカーネルを使用する際には、 以下の行がカーネルコンフィグレーションファイルにあることを確認してください。

device usb
device uhci
device ohci
device ehci

USB スキャナが認識されたかを確認するには、 スキャナを接続して、dmesg を利用し、 システムメッセージバッファで、 スキャナが認識されているかどうかを確認してください。 認識されていたら、以下のようなメッセージが表示されます。

ugen0.2: <EPSON> at usbus0

この例では、EPSON Perfection® 1650 USB スキャナが /dev/ugen0.2 上で認識されています。

スキャナのインタフェースが SCSI であれば、 どの SCSI コントローラボードを使用するかを知ることが重要です。 使用する SCSI チップセットによって、 カスタムカーネルコンフィグレーションファイルを調整する必要があります。 GENERIC カーネルは、 一般に使用される SCSI コントローラのほとんどに対応しています。 /usr/src/sys/conf/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 を使用して 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)

FreeBSD における SCSI デバイスについての詳細は、 scsi(4) および camcontrol(8) をご覧ください。

8.7.2. SANE の設定

SANE システムは、 二つの部分、すなわちバックエンド (graphics/sane-backends) とフロントエンド (graphics/sane-frontends もしくは、graphics/xsane) に分割されています。 バックエンドはスキャナに対するアクセスを提供します。 どのバックエンドが画像スキャナに対応しているかについては、http://www.sane-project.org/sane-supported-devices.html を参照してください。 フロントエンドはグラフィカルなスキャニングインタフェースを提供します。 graphics/sane-frontends は、 xscanimage をインストールし、一方、 graphics/xsane は、 xsane をインストールします。

graphics/sane-backends port または package をインストールしたら、 sane-find-scanner コマンドを使用して、 SANE システムで検出されているスキャナを確認してください。

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

この出力から、 スキャナインタフェースの種類と システムに接続されているスキャナが使用するデバイスノードがわかります。 ベンダ名や製品のモデル名は表示されないかも知れません。

注記:

いくつかの USB スキャナではファームウェアを読み込む必要がある場合があります。 詳細については、sane-find-scanner(1) および sane(7) を参照してください。

次に、スキャナがフロントエンドで認識されるか調べてください。 SANE のバックエンドには scanimage が付属します。 このコマンドを使用すると、 デバイスの一覧を表示したり画像を取得することができます。 スキャナデバイスの一覧を表示するには、 -L オプションを使ってください。 以下の最初の例は、SCSI スキャナ用のもので、 次の例は、USB スキャナ用のものです。

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
# scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner

2 番目の出力の中で、 'epson2:libusb:/dev/usb:/dev/ugen0.2' がスキャナが使用するバックエンド名 (epson2) および /dev/ugen0.2 は、デバイスノードです。

scanimage がスキャナの認識に失敗した場合には、 以下のようなメッセージが表示されます。

# 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 Perfection® 1650 で、epson2 バックエンドを使っているのであれば、 /usr/local/etc/sane.d/epson2.conf を編集してください。 編集作業を行う際には、 使用するインタフェースとデバイスノードを指定する行を追加します。 この例では、以下の行を追加します。

usb /dev/ugen0.2

編集を保存し、 適切なバックエンド名とデバイスノードでスキャナが認識されたかどうかを確認してください。

# scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner

scanimage -L を実行してスキャナが認識されたことがわかれば、設定は終了です。 スキャナを使用する準備ができました。

scanimage を使用してコマンドラインから画像を取得することができますが、 GUI を使用して画像を取得できるとより望ましいでしょう。 graphics/sane-frontends package および port は、シンプルですが、 効率的なグラフィカルインタフェース xscanimage をインストールします。

一方、graphics/xsane package または port からインストールされる xsane は、 広く使われているもう一つのグラフィカルなスキャニングフロントエンドです。 Xsane には、さまざまなスキャニングモード、 色補正、バッチスキャンなど先進的な機能があります。 これらのアプリケーションの両方とも GIMP のプラグインとして使用することができます。

8.7.3. スキャナの許可属性

スキャナにアクセスするには、 ユーザはスキャナが使用するデバイスノードへの読み込み権限と書き込み権限が必要です。 今回の例では、USB スキャナは /dev/ugen0.2 デバイスノードを使用しています。 このデバイスノードは、 /dev/usb/0.2.0 へのシンボリックリンクです シンボリックリンクとデバイスノードは、 それぞれ wheel および operator グループが所有しています。 ユーザをこれらのグループに加えると、 スキャナを使用できるようになりますが、 ユーザを wheel に追加することは、セキュリティの観点からお勧めできません。 良い方法は、 スキャナデバイスにアクセスできるグループを作成することです。

この例では、usb という名前のグループを作成します。

# pw groupadd usb

その後、シンボリックリンク /dev/ugen0.2 および、/dev/usb/0.2.0 デバイスノードに対して、 usb グループが利用できるように書き込みの許可属性 0660 または 0664 を設定してください。 /etc/devfs.rules に次の行を追加すれば設定できます。

[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0666 group usb

最後に、スキャナを利用するユーザを usb グループに追加してスキャナを利用できるようにしてください。

# pw groupmod usb -m joe

詳細については、pw(8) をご覧ください。

第9章 FreeBSD カーネルのコンフィグレーション

9.1. この章では

カーネルは FreeBSD オペレーティングシステムの中核をなすものです。 カーネルは、メモリ管理、セキュリティ制御の強制、ネットワーク、 ディスクアクセスなどを担っています。 FreeBSD の大部分は動的に構成することができるようになっていますが、 まだ、時にはカスタムカーネルを設定してコンパイルする必要があります。

この章では、以下のことを扱っています。

  • いつカスタムカーネルの構築が必要になるか。

  • ハードウェア一覧の作成方法。

  • カーネルコンフィグレーションファイルのカスタマイズの方法。

  • カーネルコンフィグレーションファイルから新しいカーネルを構築する方法。

  • 新しいカーネルのインストール方法。

  • うまく行かないときの問題解決法。

この章で表示されているすべてのコマンドは、root 権限で実行する必要があります。

9.2. なぜカスタムカーネルを作るか?

伝統的に、FreeBSD はモノリシック (monolithic) カーネルを使っていました。 このカーネルは、単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ構築してコンピュータを再起動し、 新しいカーネルを動かさなれければなりませんでした。

今日では、FreeBSD カーネルのかなりの機能はモジュールに含まれるようになり、 必要に応じて動的にカーネルに組み込んだり外したりできるようになりました。 この移行により、 動作しているカーネルが新しいハードウェアに迅速に対応したり、 カーネルに新たな機能を取り入れられるようになります。 このようなカーネルは、モジュラ (modular) カーネルと呼ばれます。

しかしながら、 いまだにいくらかは静的にカーネルを構成する必要があります。 機能がカーネルとあまりに密接に結びついているため、 動的に組み込むことができない場合があるためです。 環境によっては、セキュリティの観点から、 カーネルモジュールを読み込んだり外すことができず、 必要となる機能を静的にカーネルにコンパイルしなければならない場合もあります。

システムに合わせたカーネルを構築することは、多くの場合、 高度な知識を持つ BSD ユーザが避けて通ることのできない通過儀礼です。 この作業は多くの時間を必要としますが、FreeBSD システムに利益をもたらします。 広範囲のハードウェアをサポートしなければならない GENERIC カーネルとは異なり、カスタムカーネルは、 使用しているコンピュータのハードウェアのみをサポートするように、 必要のない機能を省くことができます。これは、 次にあげるような利益をもたらします。

  • 素早く起動します。 カーネルはシステム上にあるハードウェアしか検出しないので、 システムの起動にかかる時間を短くできます。

  • メモリの消費量を減らすことができます。 システムに合わせたカーネルは、 使用しない機能やデバイスドライバを含まないので、 大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルコードは常に物理メモリ上に存在し、 アプリケーションはその容量分のメモリを使用できないので、 これは重要なことです。 したがって、メモリが少ないシステムでは、 カーネルの再構築は重要です。

  • 追加のハードウェアをサポートします。 カスタムカーネルは、GENERIC カーネルに存在しないデバイスのサポートを追加することができます。

カスタムカーネルを構築する前に、再構築する理由を考えてください。 ある特定のハードウェアに対応する必要がある場合に、 そのハードウェアに対応するためのモジュールがすでに用意されていることがあります。

カーネルモジュールは /boot/kernel にあります。モジュールによっては kldload(8) により、 すでに実行中のカーネルに動的に読み込まれています。 ほとんどのカーネルドライバには、 読み込み可能なモジュールやマニュアルページが用意されています。 たとえば、ath(4) ワイヤレスイーサネットドライバのマニュアルページには以下のような記述があります。

Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):

    if_ath_load="YES"

/boot/loader.confif_ath_load="YES" を追加すると、 起動時にモジュールが読み込まれるようになります。

対応するモジュールが /boot/kernel に存在しないこともあります。 特定のサブシステムでは、ほとんど多くの場合存在しません。

9.3. システムのハードウェアについて知る

カーネルコンフィグレーションファイルの編集を始める前に、 コンピュータのハードウェア一覧を作成すると良いでしょう。 デュアルブートシステムでは、 現在インストールされている別のオペレーティングシステムの設定を調べることで、 一覧を作成できます。 たとえば、Microsoft® の デバイスマネージャ は、インストールされているデバイスに関する情報を持っています。

注記:

Microsoft® Windows® のバージョンによっては、 システム アイコンを使って、 デバイスマネージャ にアクセスできます。

インストールされているオペレーティングシステムが FreeBSD だけであれば、dmesg(8) を使い、 起動時に検出されたハードウェアの一覧を調べてください。 FreeBSD のほとんどのデバイスドライバにはマニュアルページが用意され、 対応しているハードウェアの一覧を提供しています。 たとえば、以下の行は、psm(4) ドライバがマウスを検出したことを示しています。

psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0

このハードウェアはシステムに存在するので、 カスタムカーネルコンフィグレーションファイルからこのドライバを外さないでください。

dmesg が起動時の検出結果を表示しない場合には、 かわりに /var/run/dmesg.boot で出力を確認してください。

ハードウェアを見つけるためのもうひとつのツールは、 より冗長な出力を行う pciconf(8) です。 たとえば、以下のようになります。

% pciconf -lv
ath0@pci0:3:0:0:        class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
    vendor     = 'Atheros Communications Inc.'
    device     = 'AR5212 Atheros AR5212 802.11abg wireless'
    class      = network
    subclass   = ethernet

この出力は、ath ドライバがワイヤレスイーサネットデバイスにあることを示しています。

man(1)-k フラグで実行すると、 有用な情報を得ることができます。たとえば、 ある特定の単語を含むマニュアルページの一覧を表示するには、 以下のようになります。

# man -k Atheros
ath(4)                   - Atheros IEEE 802.11 wireless network driver
ath_hal(4)               - Atheros Hardware Access Layer (HAL)

ハードウェアの一覧を作成したら、 この一覧を利用して、 カスタムカーネルのコンフィグレーションファイルを編集している時に、 インストールされているハードウェアのドライバが削除されていないことを確認してください。

9.4. コンフィグレーションファイル

カスタムカーネルのコンフィグレーションファイルを作成し、 カスタムカーネルを構築するには、 FreeBSD の全ソースツリーがまずインストールされている必要があります。

もし /usr/src/ が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 Subversion を使う」 で説明した Subversion を使ってソースをインストールしてください。

ソースをインストールしたら、 /usr/src/sys を確認して下さい。 このディレクトリには、いくつものサブディレクトリがあります。 その中には、サポートされている各アーキテクチャ amd64, i386, ia64, pc98, powerpc および sparc64 のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされている各アーキテクチャには、 conf サブディレクトリがあり、 そのアーキテクチャ用の GENERIC カーネルコンフィグレーションファイルが用意されています。

この GENERIC は編集しないでください。 かわりに、このファイルを別名でコピーし、コピーを編集してください。 慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSD マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL という名前の amd64 アーキテクチャ用の GENERIC コンフィグレーションファイルのコピーを作成します。

# cd /usr/src/sys/amd64/conf
# cp GENERIC MYKERNEL

これで、MYKERNELASCII テキストエディタで編集できます。 初心者に対してより簡単なエディタである ee も FreeBSD とともにインストールされていますが、 デフォルトのエディタは vi です。

コンフィグレーションファイルのフォーマットはシンプルです。 各行はデバイスやサブシステム、引数、または簡単な説明を含んでいます。 # に続くテキストはすべてコメントとして扱われ、 無視されます。 カーネルからデバイスもしくはサブシステムのサポートを外すには、 対応する行の最初に # を入れてください。 理解していない行に対しては、# を追加したり削除しないでください。

警告:

デバイスやオプションのサポートを外すことは簡単で、 その結果、カーネルを壊すことがあります。 たとえば ata(4) ドライバをカーネルコンフィグレーションファイルから除くと、 ATA ディスクドライバを用いているシステムは起動しません。 確信が持てないものについては、 カーネルにサポートを残したままにしてください。

このファイルで与えられる説明の他に、 そのアーキテクチャの GENERIC と同じディレクトリにある NOTES にも説明があります。 アーキテクチャに依存しないオプションについては、 /usr/src/sys/conf/NOTES をご覧ください。

ヒント:

カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを /usr/src 以外の場所に保存してください。

または、カーネルコンフィグレーションファイルは他の場所において、 シンボリックリンクを張る方法もあります。

# cd /usr/src/sys/amd64/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL

コンフィグレーションファイルでは include ディレクティブを利用できます。 コンフィグレーションファイルに他のファイルを取り込むことができるので、 すでに存在するファイルに対する小さな変更の管理が簡単にできます。 オプションやドライバの追加が少しだけの場合には、 以下の例のように GENERIC からの差分による管理が可能になります。

include GENERIC
ident MYKERNEL

options         IPFIREWALL
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT

この方法では、ローカルのコンフィグレーションファイルには、 ローカルにある GENERIC カーネルとの差分が記述されています。 アップグレードが行われると、 GENERIC に追加された新しい機能は、 (nooptionsnodevice によって外されない限り) ローカルのカーネルにも反映されます。 コンフィグレーションの構成要素に関する包括的な一覧と説明は config(5) にあります。

注記:

利用可能なすべてのオプションを含むファイルを構築するには、 以下のコマンドを root 権限で実行してください。

# cd /usr/src/sys/arch/conf && make LINT

9.5. カスタムカーネルの構築とインストール

カスタムコンフィグレーションファイルを編集して保存したら、 カーネルのソースコードを以下の手順でコンパイルしてください。

手順9.1 カーネルの構築
  1. 以下のディレクトリに移動してください。

    # cd /usr/src
  2. カスタムコンフィグレーションファイルの名前を指定して新しいカーネルをコンパイルします。

    # make buildkernel KERNCONF=MYKERNEL
  3. 指定したカーネルコンフィグレーションファイルでコンパイルされた新しいカーネルをインストールします。 以下のコマンドは、新しいカーネルを /boot/kernel/kernel に、 今までのカーネルを /boot/kernel.old/kernel という名前で保存します。

    # make installkernel KERNCONF=MYKERNEL
  4. 新しいカーネルを使うために、 システムをシャットダウンして再起動してください。 うまく行かない場合は、カーネルが起動しない を参照してください。

デフォルトでは、カスタムカーネルを構築すると、 すべてのカーネルモジュールが再構築されます。 カーネルのアップデートをより早く行いたい、または、 カスタムモジュールのみを構築したいといった場合は、 カーネルの構築を開始する前に、以下のように /etc/make.conf を編集してください。

例として、以下の変数は、 デフォルトのすべてのモジュールを構築する設定を変更し、 構築するモジュール一覧を指定します。

MODULES_OVERRIDE = linux acpi

また、以下の変数は、構築を行わないモジュールを指定します。

WITHOUT_MODULES = linux acpi sound

他の変数については、make.conf(5) を参照してください。

9.6. 問題が起きた場合には

カスタムカーネルを作る際に起こりうるトラブルは、 次の 4 種類に分けられます。

config コマンドの失敗

config で失敗した時には、 トラブルの起きた行番号が出力されます。 たとえば、次のように出力された場合には、 17 行目が正しく入力されているかどうか、 GENERICNOTES と比較して修正してください。

config: line 17: syntax error
make コマンドの失敗

make が失敗した場合には、 通常、カーネルコンフィグレーションファイルにおいて、 config がとらえられなかったような間違いをしています。 コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 FreeBSD general questions メーリングリスト へカーネルコンフィグレーションファイルを添付して送ってください。

カーネルが起動しない

新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 FreeBSD のブートローダで起動したいカーネルを選択してください。 システムの起動メニューが表示されている時に、 Escape to a loader prompt オプションを選択するとアクセスできます。 プロンプトで boot kernel.old か他の正常に起動するカーネルを入力してください。

問題のないカーネルで起動した後、 コンフィグレー ションファイルを調べ、 再び構築を試みてください。 /var/log/messages にはすべての成功した起動時のカーネルメッセージの記録があり、 これは問題を解決するための助けになる情報の一つでしょう。また、 dmesg(8) は現在の起動時のカーネルメッセージを出力します。

注記:

カーネルの構築中にトラブルが起きた時には、 次回の構築で消されないように、 GENERIC のコピーや他の正常に起動するカーネルを別の名前で保存するようにしてください。 kernel.old は新しいカーネルをインストールする時に、 その一つ前にインストールした、 うまく動かないかもしれないカーネルで上書きされてしまうため、 起動するカーネルを保存しておくことは重要です。 できる限り早く以下のようにして、 正しく起動するカーネルを含むディレクトリ名に変更してください。

# mv /boot/kernel /boot/kernel.bad
# mv /boot/kernel.good /boot/kernel
カーネルは動きますが ps(1) は動きません!

システムユーティリティの構築されたバージョンと異るバージョンのカーネルをインストールした場合、 たとえば -CURRENT のソースから構築したカーネルを -RELEASE システム上にインストールするような場合には、 ps(1)vmstat(8) のような多くのシステムステータスコマンドは動かなくなります。 修正するには、カーネルと同じバージョンのソースツリーで world を再構築し、インストール してください。 カーネルとそれ以外で異なるバージョンを組み合わせてオペレーティングシステムを使用することは推奨されていません。

第10章 プリンタの利用

寄稿: Kelly Sean [FAMILY Given].
改訂:Mock Jim [FAMILY Given].

10.1. この章では

FreeBSD は古いインパクトプリンタから最新のレーザープリンタまで幅広いプリンタが利用でき、 実行しているアプリケーションから高品質な印刷出力が行えます。

FreeBSD はネットワーク上のプリンタサーバとして動作するように設定することもできます。 この機能は、他の FreeBSD コンピュータや、Windows® や Mac OS® ホストから印刷ジョブを受け取ることができます。 FreeBSD は印刷ジョブを 1 つずつ処理することを保証します。 また、どのユーザやマシンが最も多く印刷しているかの統計を取り、 どの印刷物が誰の物か表示する バナー ページの作成などを行うことができます。

この章を読めば以下のことがわかります。

  • FreeBSD プリントスプーラの設定方法。

  • 入力ドキュメントをプリンタが扱える印刷フォーマットへ変換するなどといった、 特別な印刷ジョブを別に取り扱うための印刷フィルタのインストール方法。

  • 印刷物へのヘッダやバナーの適用方法。

  • 他のコンピュータに接続されたプリンタで印刷する方法。

  • ネットワークに直接接続されたプリンタで印刷する方法。

  • 印刷ジョブの上限サイズや特定のユーザからの印刷拒否といった、 プリンタの制限の制御方法。

  • 印刷の統計とプリンタの使用状況の取得方法。

  • 印刷問題のトラブルシューティング方法。

この章を読み始める前に以下を済ませておいてください。

10.2. はじめに

FreeBSD でプリンタを使うために、それらを LPD スプーリングシステム、 または単に LPD としても知られる Berkeley ラインプリンタスプーリングシステムで動作するように設定できます。 これは FreeBSD での標準的なプリンタ制御システムです。 この章では、LPD を紹介し、 その設定方法について説明します。

あなたがすでに LPD やその他のプリンタスプーリングシステムに詳しいのなら、 基本的な設定 まで読み飛ばしてもかまいません。

LPD はホストのプリンタに関するあらゆることを制御します。 ここで言う制御としては、次のことがあげられます。

  • ホストに接続されたプリンタ、 あるいはネットワーク上の他ホストに接続されたプリンタに対するアクセス制御を行ないます。

  • ファイルをプリントする要求に対して許可を与えます。 この要求は特にジョブと呼ばれています。

  • 各々のプリンタのキューを管理することにより、 複数のユーザがあるプリンタに対して同時にアクセスすることを防ぎます。

  • ヘッダページ (バナーまたは バーストページとしても知られています) をプリントすることができます。 これにより、 プリントアウトの山の中から自分がプリントしたジョブを見つけやすくなります。

  • シリアルポートに接続したプリンタ用に通信パラメータを管理します。

  • ネットワーク経由で他のホスト上の LPD スプーラにジョブを送ることができます。

  • 様々なプリンタ言語やプリンタの能力に応じてジョブの形式を整えるため、 特別なフィルタを起動することができます。

  • プリンタの使用に対して課金を行なうことができます。

設定ファイル (/etc/printcap) を通して、専用のフィルタプログラムを用いることにより、 多種多様なプリンタ機器に対して、上述の機能の全部または一部を LPD システムに行なわせることができます。

10.2.1. どうしてスプーラを使うべきなのか

あなたのシステムを利用するのがあなた一人だけだとしても、 スプーラは有用ですし、使用すべきです。その理由は以下のとおりです。

  • LPD はジョブをバックグラウンドで処理します。 データがプリンタに送信されるまで待つ必要がなくなります。

  • LPD ではジョブをフィルタを通してプリントすることが簡単にできます。 これにより、印刷物のヘッダに時刻や日付を入れたり、 特別なファイル形式 (TeX の DVI ファイルなど) をプリンタが処理できる形式に変更することができ、 これらの作業を手動で行なう必要がなくなります。

  • プリント処理を行なうフリー、 または商用のプログラムのほとんどは、 システムのスプーラとやりとりするように作られています。 スプーリングシステムをセットアップすることで、 今後加えるかもしれない、あるいは、 すでに持っている別のソフトウェアをより簡単にサポートすることができるでしょう。

10.3. 基本的な設定

LPD スプーリングシステムを用いてプリンタを使用するためには、 プリンタ機器と LPD 用ソフトウェアの両方を準備する必要があります。 本文書では次の二段階のレベルに分けて説明をします。

  • プリンタを接続する方法、 プリンタにどのように通信するかを LPD に指示する方法や、 プレインテキストをプリンタで印字する方法については、 プリンタの簡単な設定をご覧ください。

  • 様々な形式のファイルを印字する方法、 ヘッダページを印字する方法、 ネットワーク経由でプリンタに印字する方法、 プリンタを制御する方法、 プリンタの使用に対する課金を行なう方法についてはプリンタ設定上級編をご覧ください。

10.3.1. プリンタ設定導入編

この節では、プリンタ機器やプリンタを使用するための LPD 用ソフトウェアを設定する方法について述べます。 この節の概要は次のとおりです。

  • プリンタ機器の設定では、 プリンタをコンピュータに接続するためのヒントがいくつか書かれています。

  • ソフトウェアの設定では、 LPD のスプーラ設定ファイル (/etc/printcap) の設定方法について書かれています。

データをプリンタに送るのにコンピュータのローカルインタフェースではなく、 ネットワークプロトコルを使用する場合は、 ネットワークにおけるデータストリームインタフェースを持つプリンタをご覧ください。

この節のタイトルは プリンタ設定導入編 ですが、 実際の設定はかなり複雑です。 プリンタをコンピュータに接続し、 LPD スプーラを起動させることは一番困難な作業です。 ヘッダページを出力させたり課金したりするオプションの設定は、 一度プリンタがうまく動くようになればとても簡単です。

10.3.1.1. プリンタ機器の設定

この節では、プリンタに PC を接続するための様々な方法について説明しています。 ここでは、ポートやケーブルの種類、 FreeBSD がプリンタとの通信に必要なカーネルコンフィグレーションについても言及しています。

もしプリンタが既に接続されていて、 他のオペレーティングシステム上でプリンタからの印字に成功している場合は、 ソフトウェアの設定まで読み飛ばすことが多分できるでしょう。

10.3.1.1.1. ポートとケーブル

今日 PC 用に売られているプリンタには通常、 次の 3 つのインタフェースのうち、どれか 1 つ以上がついてきます。

  • シリアルインタフェース (RS-232 または COM ポートとも呼ばれます) は、 コンピュータにあるシリアルポートを使ってプリンタにデータを送信します。 シリアルインタフェースはコンピュータ業界で共通して使用されています。 そのケーブルは容易に手に入りますし、簡単に自作することもできます。 シリアルインタフェースの場合は時々、 特別なケーブルや何か複雑な通信方式選択の設定が必要になることがあります。 ほとんどの PC のシリアルポートは通信速度が最大で 115200 bps であり、 大きな画像を印刷するのには実用的ではありません。

  • パラレルインタフェースではプリンタにデータを送信するために、 コンピュータにあるパラレルポートを使用します。 パラレルインタフェースは PC 業界ではよく使われており、 RS-232 シリアルよりも速いです。 ケーブルの入手は容易ですが、 自作するのはシリアルよりも困難です。 パラレルインタフェースには通常、通信方式の選択はなく、 設定は極めて単純です。

    パラレルインタフェースは セントロニクス インタフェースとして知られています。 これは、プリンタ用のコネクタタイプとして採用された後に名付けられました。

  • USB インタフェースは、Universal Serial Bus (汎用シリアルバス) の略で、パラレルや RS-232 シリアルよりさらに速く動作します。 ケーブルは単純で安価です。USB は、印刷目的には RS-232 シリアルやパラレルよりも向いていますが、UNIX® システムでは十分対応されていません。 この問題を回避する手としては、多くのプリンタがそうですが、 USB とパラレルの両方のインタフェースを備えたプリンタを購入することが挙げられます。

パラレルインタフェースでは、普通は (コンピュータからプリンタへの) 単方向通信のみを行なうのに対して、 シリアルおよび USB インタフェースは双方向通信を行ないます。 FreeBSD でも IEEE1284 準拠のケーブルを使えば、 最近のパラレルポート (EPP や ECP) とプリンタの多くで双方向通信を行なうことができます。

パラレルポート経由のプリンタとの双方向通信には、 通常 2 つの方法のどちらかが使われます。一つ目の方法は、 プリンタが使用しているプロプライエタリな言語を話す FreeBSD 用に作成されたプリンタドライバを使うものです。 これはインクジェットプリンタではよく使われる方法で、 インクの残量やその他の状態の情報を知らせるのに使えます。 二つ目の方法は、プリンタが PostScript® に対応している時に使われます。

PostScript® ジョブは、実際にはプリンタに送信されるプログラムです。 印字作業を行う必要は必ずしありませんし、 プログラムの結果を直接コンピュータに返してもよいのです。 PostScript® プリンタでは双方向通信を使って PostScript® プログラムのエラーや紙づまりといった問題をコンピュータに報告します。 ユーザはそれらの情報を知りたいと思うかも知れません。 また、PostScript® プリンタで課金作業をもっとも効率よく行なうためには、 双方向通信が必要となります。 この方法ではまず、プリンタの現在のページカウント (起動してから今まで何枚の紙を印字したか) の情報を得ます。 次に、ユーザのジョブを実行し、終了後、再びページカウントを得ます。 この二つの数を差によって、 課金対象となる紙の枚数を知ることができるのです。

10.3.1.1.2. パラレルポート

プリンタをパラレルインタフェースを使って接続する場合は、 セントロニクスケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタやコンピュータに付属する説明書に書かれているはずです。

その際、 どのパラレルポートを使用したかを覚えておいてください。 FreeBSD では最初のポートは ppc0、 二番目が ppc1 であり、 三番目以降も同様に続きます。 プリンタのデバイス名にも同じ形式が使われており、 最初のパラレルポートに接続されたプリンタは /dev/lpt0 などとなります。

10.3.1.1.3. シリアルポート

シリアルインタフェースを使ってプリンタを使う場合は、 適切なシリアルケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタ、コンピュータ、あるいは両方に付属する説 明書に書かれているはずです。

適切なシリアルケーブル が良くわからないときは、 次のどれかを試してみてください。

  • モデム用ケーブルでは、 それぞれのピンは他方のコネクタの対応するピンと線でつながっています。 このタイプのケーブルは DTE-DCE 間ケーブルとしても知られています (訳注: 日本ではストレートケーブルという名前で売られています)。

  • ヌルモデム用ケーブルでは、 あるピンは対応するピンとを接続していますが、 あるピン (たとえば、データ送信用とデータ受信用のピン) が交差して接続したり、 いくつかのピンは内部で短絡していたりします。 このタイプのケーブルは、 DTE-DTE 間ケーブルと呼ばれています (訳注: 日本ではクロスケーブルという名前で売られています)。

  • A シリアルプリンタ用ケーブルは、 ある特定のプリンタで必要とされるものです。 ヌルモデムケーブルと似ていますが、 内部で短絡させる代わりに、 ある信号を他方側に送るために使用しています。

この他に、 プリンタ用の通信パラメータを設定する必要があります。 通常、プリンタのフロントパネルや DIP スイッチによって制御します。 コンピュータとプリンタの双方で設定できる最高の通信速度 [bps] (ビット/秒、 ボーレートと示されているときもある) を選んでください。そして、データビット (7 または 8)、 パリティ (偶/奇/なし)、ストップビット (1 または 2) を選んでください。 そして、フローコントロールの有無 (制御なし、または XON/XOFF (イン・バンド または ソフトウェア フローコントロールとも呼ばれる)) を選びます。 以下に続くソフトウェアの設定のために、 ここでの設定を覚えておいてください。

10.3.1.2. ソフトウェアの設定

本節では FreeBSD の LPD スプーリングシステムで印字をおこなうために 必要となるソフトウェアの設定について説明しています。

本節の概要は次のようになります。

  1. プリンタで使用するポートのために、必要があれば、 カーネルの書き変えをおこないます。「カーネルの変更」で、 このためにしなくてはならないことを説明しています。

  2. パラレルポートを使用している場合は、 パラレルポートのための通信モードを設定します。 詳細は、 「 パラレルポートの通信モードを設定する」 で説明しています。

  3. オペレーティングシステムからプリンタにデータが送ら れているかをテストします。「プリンタとの通信状況を調べる」で、 どのようにテストするかの提案をいくつかおこなっています。

  4. ファイル/etc/printcapを変更し、 LPD の設定をおこないます。 この節で、どのように変更するかを説明しています。

10.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 カーネルのコンフィグレーション」の節をご覧く ださい。パラレルポートをサポートさせる場合も、その節と、 あわせて、 この節に続く節もご覧ください。

10.3.1.3. パラレルポートの通信モードを設定する

パラレルインタフェースを使用している場合、FreeBSD では、 割り込み駆動型にするか、 プリンタとの通信の状況をカーネルに監視させるかのいずれかを選択できます。 FreeBSD の汎用プリンタデバイスドライバ (lpt(4)) は ppbus(4) システムを利用しています。 これは ppc(4) ドライバを使ってパラレルポートのチップセットを制御します。

  • GENERIC カーネルでは割り込み駆動方式がデフォルトになっています。 この方式では、 オペレーティングシステムはプリンタがデータを受け付けられるかどうかを調べるために、 IRQ ラインを一つ使用します。

  • 監視方式では、 オペレーティングシステムにプリンタがもっとデータを受け付けられるかどうかを繰り返し尋ねるように指示します。 そして、受け付けるという応答を受けたとき、 カーネルはさらなるデータを送信します。

割り込み駆動方式は一般的にいくらか高速になりますが、貴重な IRQ ラインを一つ消費します。 HP の新しいプリンタの一部には、明らかに何かしらのタイミングの問題 (まだ正確にはわかっていません) で割り込みモードでは正常に動作しないものがあると言われています。 これらのプリンタにはポーリングモードが必要になります。 どちらかうまく機能する方を使ってください。 一部のプリンタはどちらの方式でも動作しますが、 割り込みモードでは苦痛を感じるほど低速です。

通信モードを設定するためには 2 つの方法があります。 1 つはカーネルを変更することで、もう一つは lptcontrol(8) プログラムを使用する方法です。

カーネルを設定することによって、 通信モードを変更する。

  1. カーネルコンフィグレーションファイルを変更します。 ppc0 のエントリを探してください。 2 番目のパラレルポートを設定するときは、代わりに ppc1 を使います。 以下、3 番目のポートは ppc2 となっていきます。

    • 割り込み駆動方式にする場合は、 /boot/device.hints ファイルの以下の行を編集して、 N を適切な IRQ 番号に置き換えてください。

      hint.ppc.0.irq="N"

      カーネルの設定ファイルには ppc(4) ドライバも入れなければなりません。

      device ppc
    • ポーリングモードを使用する場合は、 /boot/device.hints ファイルの以下の行を削除してください。

      hint.ppc.0.irq="N"

      場合によっては、これだけでは FreeBSD でポートをポーリングモードにするには十分ではないことがあります。 多くの場合これは 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) をご覧ください。

10.3.1.4. プリンタとの通信状況を調べる

スプーリングシステムの設定に進む前に、オペレーティング システムがプリンタにデータを送ることに成功しているかどうか を確かめるべきでしょう。これにより、印字がうまくいかないと き、プリンタとの通信が問題なのか、スプーリングシステムが問 題なのかを分けて調べることがかなり容易になります。

プリンタをテストするためには、 プリンタに何かのテキストを送 信してみます。送信した文字をすぐに印字してくれるプリンタに は、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® コードはファイルに保存し、 以降の節で例として示されているように利用することができます。

注記:

このドキュメントでプリンタ用言語を参照するときは、 PostScript® のような言語を仮定しており、Hewlett Packard の PCL は考慮していません。PCL は非常に機能的なの ですが、 プレインテキストにエスケープシーケンスを混ぜること ができます。PostScript® ではプレインテキストを直接印字 することはできません。 このような種類のプリンタ言語に対しては、 特別な対応をおこなわなければなりません。

10.3.1.4.1. パラレルポートのプリンタとの接続を調べる

この節では、FreeBSD がパラレルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について説明し ています。

パラレルポートのプリンタをテストするために

  1. su(1) コマンドで root になります。

  2. プリンタにデータを送ります。

    • プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。

      # lptest > /dev/lptN

      ここで、N はパラレルポートの番号で、番号は 0 から始まります。

    • プリンタが PostScript® か他のプリンタ 言語を使用している場合、そのプリンタに簡単なプロ グラムを送信してください。次のように入力します。

      # cat > /dev/lptN

      そして、一行一行、 プログラムを慎重に入力して 下さい。RETUREN または ENTER キーを入力してしま うと、その行は編集できなくなります。プログラムの 入力が終わったら、CONTROL+D か、あなたが設定して いるファイル終了のキーを押してください。

      もしくは、プログラムを入力したファイルがある 場合は、次のように入力してください。

      # cat file > /dev/lptN

      ここで、file はプログラムが格納されていて、 プリンタに送信するファイルの名前です。

これで何かが印刷されるはずです。 印字されたテキストがおかしくても心配は無用です。 それについては、後で修正します。

10.3.1.4.2. シリアルポートのプリンタとの接続を調べる

この節では、FreeBSD がシリアルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について述べられ ています。

シリアルポートのプリンタをテストするために

  1. su(1) コマンドで root になります。

  2. /etc/remote ファイルを編集します。次のエントリを加えてください。

    printer:dv=/dev/port:br#bps-rate:pa=parity

    ここで、port シリアルポート (ttyu0ttyu1 など) のデバイスエントリで、 bps-rateは プリンタとの通信の転送速度[bit/秒]、 parityはプリ ンタとの通信で必要とされるパリティ (evenoddnonezeroのいずれか) を表わしていま す。

    次の例は、 プリンタをシリアルケーブルでパリティなし、転送速度 19200 bps で第 3 番目のシリアルポートに接続した場 合です。

    printer:dv=/dev/ttyu2:br#19200:pa=none
  3. tip(1) コマンドでプリンタと接続します。 次のように入力してください。

    # tip printer

    これがうまくいかなかった場合は、 /etc/remoteを編集して、 /dev/ttyuN の代わりに /dev/cuaaN を試してみてください。

  4. プリンタにデータを送ります。

    • プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。

      % $lptest
    • プリンタが PostScript® か他のプリンタ言語を使用している場合、 そのプリンタに簡単なプログラムを入力します。 一行一行、プログラムを慎重に入力してください。 バックスペースキーや他の編集用のキーは、 プリンタの制御コードに割り当てられているかもしれません。 プログラムが終了したことをプリンタに伝えるための特別なファイル終了キーを 入力する必要があるかもしれません。 PostScript® プリンタの場合、 CONTROL+D を入力します。

      もしくは、プログラムを入力したファイルがある場合は、 次のように入力してください。

      % >file

      ここで、file はプログラムが格納されているファイル名です。 tip(1) コマンドでファイルを送信した後は、 ファイル終了を表わすキーを入力する必要があります。

これで何かがプリントされることでしょう。 印字されたテキ ストがおかしくても心配しなくても構いません。 それについては、後で修正します。

10.3.1.5. スプーラに許可を与える: /etc/printcap ファイル

ここまでで、プリンタはコンピュータに接続され、(必要なら) プリンタと通信できるようにカーネルを変更し、 簡単なデータをプリンタに送信することができているはずです。 これで、LPD にプリンタへのアクセスを 制御させる設定をおこなう準備が整いました。

LPD の設定は /etc/printcap を編集することでおこないます。 LPD スプーリングシステムは スプーラが使われる毎にこのファイルを参照します。 そのため、ファイルを更新するとすぐにその変更が反映されます。

printcap(5) ファイルの書式は簡単です。 /etc/printcap の編集はお好みのテキストエディタをお 使いください。このファイルの書式は、 /usr/share/misc/termcap/etc/remote といった他のケイパビリティファイルと一致しています。 この書式 についての詳細な情報については cgetent(3) をご覧ください。

スプーラの単純な設定法は、 次のステップでおこないます。

  1. プリンタに名前 (と簡単な別名 2 〜 3 個) を付け、それを /etc/printcap ファイルに記述します。 これについては、「 プリンタに名前を付ける」 を参照してください。

  2. sh の項目を追加することで、 ヘッダページの出力を禁止します (デフォルトは許可)。 これについては、「 ヘッダページの印字を禁止する」 を参照してください。

  3. スプール用のディレクトリを作成し、その位置を sd 項目で指定します。これについては、 「 スプーリングディレクトリの作成」 を参照してください。

  4. プリンタを使用するために /dev エントリを設定し、/etc/printcaplp 項目でそのエントリを指定します。 これについては、「 プリンタデバイスの特定」 を参照してください。 プリンタをシリアルポートに接続した場合は、 ms# の項目を設定する必要があります。こちらについては、 「 スプーラのための通信パラメータの設定」 を参照してください。

  5. プレインテキスト用の入力フィルタのインストールをおこないます。 「テキストフィルタのインストール」 を参照してください。

  6. lpr(1) コマンドで何かを印字することで設定のテストをおこないます。 印字してみようトラブルシューティング を参照してください。

注記:

PostScript® プリンタのような、 プリンタ言語を使用しているプリンタには、 プレインテキストを直接印字させることができません。 上にアウトラインを示し、 以下の節で説明する簡単な設定方法の説明では、 そのようなプリンタを設置している場合は、 プリンタが認識できるファイルだけを印字の対象としているという 仮定をしています。

多くの場合、 利用者はシステムに設置されているプリンタすべてで プレインテキストが印字できることを期待しています。 印字作業をおこなうために LPD のインタフェースを利用するプログラムでも、 通常、そのような仮定を置きます。 プリンタ言語を使用するプリンタを設置しており、 そのプリンタ言語で記述されたジョブと、 これに加えて、 プレインテキストのジョブも印字できるようにしたいならば、 上で示した簡単な設定方法に加えて、 さらなる設定をおこなうことを強くお勧めします。すなわち、 自動的にプレインテキストから PostScript® (もしくは、 他のプリンタ言語) に変換するプログラムをインストールしてください。「 プレインテキストのジョブを PostScript® プリンタで印字する」 で、それをどのようにおこなえばよいのかが説明されています。

訳注:

日本語を印字したい場合は、プリンタ言語を使用し ていない「日本語プリンタ」についても、 プリンタ固有のエスケープシーケンスを送る必要があります。 また、漢字コードをプリン タが設定しているものに変換したりする必要があり、 各プリンタ毎に、日本語用のフィルタが必要になります。

10.3.1.5.1. プリンタに名前を付ける

最初の (簡単な) ステップで、プリンタの名前を考えます。 プリンタには別名をいくつか付けることもできるので、 機能的な名前 でも風変わりな名前でもどちらを選んでもまったく 問題はありません。

少なくとも1つのプリンタには、 /etc/printcap の中で、 lp という別名を持たせるべきでしょう。 この名前はデフォルトのプリンタ名になっています。 ユーザが環境変数 PRINTER を設定しておらず、 かつ、LPD コマンドのコマンドラインで プリンタの名前が指定されていない場合、lp がデフォルトのプリンタ名となり、 そのプリンタに出力されます。

それから、これは共通の慣習ですが、 プリンタの最後の別名には、 メーカーやモデル名を含むプリンタの完全な名称をつけることに なっています。

名前と別名のいくつかを決めたら、 /etc/printcap ファイルに設定します。 プリンタ名は一番左のカラムから書き始めます。 別名はそれぞれ縦棒によって区切られ、 最後の別名の後ろにコロンを置きます。

次の例では、2 台のプリンタ (Diablo 630 ラインプリンタと Panasonic KX-P4455 PostScript® レーザライタプリンタ) が定義 されている /etc/printcap のスケルトンを記しています。

#
#  /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

この例では、最初のプリンタに rattan という名前と別名として、linediablolp そして Diablo 630 Line Printer が付けられています。別名とし て lp があるので、このプリンタはデフォルトのプリンタとなっ ています。2 番目は bamboo と名付けられ、 別名として、psPSSpanasonicPanasonic KX-P4455 PostScript v51.4 が付けられています。

10.3.1.5.2. ヘッダページの印字を禁止する

LPD スプーリングシステムでは、 デフォルトでジョブ毎に ヘッダページを印字します。 ヘッダページにはジョブを要求したユーザ名、 ジョブが送られたホスト名、そして、ジョブの名前が素晴 らしい大きな文字で印字されています。 残念なことに、この余分なテキストすべてが、 簡単なプリンタ設定法のデバッグの際に紛れ込んできてしまいます。 このため、ヘッダページの出力を禁止しておきます。

ヘッダページの出力を禁止するには、 /etc/printcap にあるプリンタのエントリに sh の項目を追加します。次に、sh を加えた /etc/printcap の例を示します。

#
#  /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:

この書式を正しく使うための注意をしておきます。 最初の行は左端のカラムから始めます。 それに続く行は字下げします。最後の行以外のすべての行は、 行末にバックスラッシュを記述します。

10.3.1.5.3. スプーリングディレクトリの作成

スプーラの簡単な設定の次のステップでは、 スプーリングディレクトリを作成します。 プリンタに送られるジョブは、 その印字が終了するまでこのディレクトリに置かれます。また、 他のたくさんのスプーラもこのディレクトリにファイルを置きます。

様々な事情によりスプーリングディレクトリは、通常、慣例 として /var/spool の下に置きます。 また、スプーリングディレクトリの内容は バックアップをする必要はありません。 mkdir(1) によってディレクトリを 作るだけでスプーリングディレクトリの復旧は完了します。

スプーリングディレクトリの名前は、これも慣例ですが、 次のようにプリンタの名前と同じにします。

# mkdir /var/spool/printer-name

しかしながら、ネットワーク上に使用可能なプリンタがたく さんあるならば、LPD で印字するための専用のディレクトリにスプーリングディレクトリを置きたくなるかもしれません。 例に出てきたプリンタ rattanbamboo について、この方式を採用すると、 次のようになります。

# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

注記:

各ユーザが印字するジョブのプライバシを守りた いと考えているならば、スプーリングディレクトリを保護し て、これを誰からでもアクセスできないようにしたいと思う かもしれません。スプーリングディレクトリは、 daemon ユーザと daemon グループに所有され、 読み込み、書き込み、検 索可能であり、他からはアクセスできないようにするべきで す。例題のプリンタに対して、次のようにすることにしましょ う。

# chown daemon:daemon /var/spool/lpd/rattan
# chown daemon:daemon /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan
# chmod 770 /var/spool/lpd/bamboo

最後に、/etc/printcap ファイルで、 これらのディレクトリの位置を LPD に伝える必要があります。 スプーリングディレクトリのパス名は sd 項目で指定します。

#
#  /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:

プリンタ名が最初のカラムから始まっており、 そのプリンタに関して記述される他の項目は字下げされていること、 各行がバックスラッシュで終わっていることに注意してください。

sd によりスプーリングディレクトリが指定されていない場合、 スプーリングシステムは /var/spool/lpd をデフォルト値として使用します。

10.3.1.5.4. プリンタデバイスの特定

プリンタ機器の設定 の節では、FreeBSD でプリンタとの通信に使用されるポートおよび /dev ディレクトリ内のエントリを特定します。 そして、LPD にその情報を伝えます。 印字するジョブを受け取ると、スプーリングシステムは、 (プリンタにデータを渡す義務がある) フィルタプログラムに代わって指定されたデバイスをオープンします。

/etc/printcap ファイルで lp 項目を使って /dev エントリを記入します。

ここでの例では、rattan は 1 番目のパラレルポートに、bamboo は 6 番目のシリアルポートに接続されていることにしましょう。 このとき、/etc/printcap には 次のようになります。

#
#  /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:

/etc/printcap でプリンタの lp 項目が指定されていない場合は、 LPD はデフォルトとして /dev/lp を使用します。/dev/lp は、現在の FreeBSD には存在していません。

設置したプリンタがパラレルポートに 接続されている場合は、 「 テキストフィルタのインストール」 まで読み飛ばしてください。 そうでない場合は、次節の説明に続いてください。

10.3.1.5.5. スプーラのための通信パラメータの設定

シリアルポートにプリンタを接続した場合、 LPD は、プリンタにデータを送信するフィルタプログラムに代わり、 通信速度やパリティ、 その他のシリアル通信パラメータを設定することができます。 このことによる利点は、

  • /etc/printcap を編集するだけで、 様々な通信パラメータを試してみることができます。 フィルタプログラムを再コンパイルする必要はありません。

  • スプーリングシステムで、 シリアル通信の設定が異なっているかもしれない複数のプリンタに 同じフィルタプログラムを使うことが可能になります。

次の /etc/printcap の項目で、 lp で指定された デバイスのシリアル通信パラメータを制御できます。

br#bps-rate

デバイスの通信速度を bps-rate に設定します。 ここで、bps-rate は 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200 [bit/秒] のいずれかです。

ms#stty-mode

デバイスをオープンした後にターミナルデバイスのオプションを設定します。 利用できるオプションについては stty(1) を参照してください。

lp で指定されたデバイスをオープンするとき、 LPDms# で指定されたデバイスの特性を設定します。 特に関係があるのは、parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, ixon モードです。 これらは stty(1) のマニュアルページで説明されています。

例題のプリンタで6番目のシリアルポートに接続された プリンタの設定を追加してみましょう。 通信速度は 38400bps に設定します。 モードとして、-parenb でパリティ無し、 cs8 で 8 ビットキャラクタ、 clocal でモデム制御無し、 そして crtscts でハードウェアフロー制御を設定します。

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:
10.3.1.5.6. テキストフィルタのインストール

ここまでで、 プリンタにジョブを送るために使うテキストフィルタを LPD に設定する準備が整いました。 テキストフィルタとは、 入力フィルタとしても知られていますが、 印字するジョブがあるときに LPD が起動するプログラムです。 LPD がプリンタのためにテキストフィルタを起動するとき、 LPD はフィルタの標準入力からプリントするジョブを入力し、 フィルタの標準出力に項目 lp で指定されたプリンタデバイスを接続します。フィルタは、 標準入力からジョブを読み込み、 プリンタのための必要な変換をおこなった後、 その結果を標準出力に出力する、 これにより印字がなされることを期待されています。 テキストフィルタについての更に詳しい情報については、「 フィルタはどのように機能しているか」 をご覧ください。

ここでの簡単なプリンタ設定では、 プリンタにジョブを送るため、/bin/cat を実行するだけの簡単なシェルスクリプトで間に合います。 FreeBSD に標準で付属している lpf というフィルタでは、バックスペース文字を使った 下線引きの動作をおこなう文字ストリームをうまく扱うことができない プリンタのための代替処理をおこなってくれます。 もちろん、 他のどんなフィルタプログラムを使っても構いません。 フィルタ lpf については、「テキストフィルタ lpf」で詳しく説明します。

最初に、簡単なテキストフィルタであるシェルスクリプト /usr/local/libexec/if-simple を作ってみましょう。 次のテキストをお好みのテキストエディタでファイルに 書き込んでください。

#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout.  Ignores all filter arguments.

/bin/cat && exit 0
exit 2

そして、このファイルを実行可能にします。

# chmod 555 /usr/local/libexec/if-simple

LPD にこのテキストフィルタを使うことを設定するためには、 /etc/printcapif 項目を使って指定します。これまでの /etc/printcap の例のプリンタ 2 台に、 このフィルタを加えてみましょう。

#
#  /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:\
        :if=/usr/local/libexec/if-simple:

注記:

if-simple スクリプトのコピーが /usr/share/examples/printing ディレクトリにあります。

10.3.1.5.7. LPD の起動

lpd(8)lpd_enable 変数に従って /etc/rc から実行されます。この変数の デフォルト値は NO です。まだ そうしていなかったならば

lpd_enable="YES"

の行を /etc/rc.conf に追加して 計算機を再起動するか、そのまま lpd(8) を 起動してください。

# lpd
10.3.1.5.8. 印字してみよう

簡単な LPD 設定も終わりにたどり着きました。 残念ながら、設定はこれでおしまいというわけではありません。 なぜなら、さらに、設定をテストし、 すべての問題点を解決しなくてはならないからです。 設定をテストするために、 何かを印字してみましょう。 LPD システムで印字をするためには、 lpr(1) コマンドを使います。このコマンドは、 印字するためのジョブを投入する働きをします。

lpr(1) コマンドを 「 プリンタとの通信状況を調べる」で紹介した、 あるテスト用のテキストを生成してくれる lptest(1) プログラムと一緒に使うこともできます。

簡単な LPD 設定のテスト

次のように入力してください。

# lptest 20 5 | lpr -Pprinter-name

ここで、printer-name/etc/printcap で指定したプリンタ名 (もしくはその別名) です。デフォルト のプリンタを使用する場合は、 -P 引数を付けないで lpr(1) を打ち込んでください。もう一度述べますが、 PostScript® を期待しているプリンタをテストするならば、 lptest(1) を使う代わりに PostScript® で書かれた プログラムをプリンタに送ってください。 プログラムを送るためには、プログラムをファイルに格納して、 lpr file と打ち込みます。

PostScript® プリンタの場合、 送信したプログラムによる結果が得られるでしょう。 lptest(1) を使った場合は、 以下のような結果が見られるでしょう。

!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678

更にプリンタをテストしたい場合は、 (言語ベースのプリンタのための) もっと大きなプログラムを送信するか、 引数を変えて lptest(1) を実行します。たとえば、lptest 80 60 で、それぞれ 80 文字の行を 60 行生成します。

プリンタがうまく動かなかった場合は、次の節、「 トラブルシューティング」をご覧ください。

10.4. プリンタ設定上級編

この節では、特殊な形式のファイルを印字するためのフィルタ、 ヘッダページ、ネットワーク越しのプリンタへの印字、そして、 プリンタ使用の制限や課金について説明しています。

10.4.1. フィルタ

LPD は、ネットワークプロトコル、キュー、アクセス制御などの 印刷にかかわるさまざまな点を扱いますが、 実際の作業のほとんどは フィルタによっておこなわれています。 フィルタは、プリンタと通信し、 プリンタのデバイス依存性や特殊な要求を扱うプログラムです。 簡単なプリンタ設定では、 プレインテキストのためのフィルタをインストールしました。 このプレインテキストフィルタは、 ほとんどのプリンタで機能する極めて単純なものでした (「 テキストフィルタのインストール」を参照)。

しかしながら、形式変換やプリンタ課金、特定のプリンタの癖、 など をうまく利用するためには、 フィルタがどのように機能するかという ことを理解しておくべきです。これらの側面を扱うことは、 最終的には、フィルタの責任であるからです。 そして、これは悪い情報ですが、ほとんどの場合において、 あなた自身が フィルタを供給する必要があるということです。また都合のよいことには、 たくさんのフィルタが一般的に利用できるということです。 もしフィルタがなかったとしても、 普通はフィルタを作るのは簡単です。

FreeBSD にも、プレインテキストを印字させることができる /usr/libexec/lpr/lpf というフィルタが 1 つ付いています (このフィルタはファイルに含まれるバックスペースやタブを扱います。 また、課金をすることもできますが、 できることはこれだけしかありません)。 いくつかのフィルタとフィルタの構成要素は FreeBSD Ports Collection にもあります。

この節で述べることは次の通りです。

  • フィルタはどのように機能しているか」では、 印字の過程におけるフィルタの役割を概説します。 この節を読むことで、LPD がフィルタを使うときに、見えないところで 何が起こっているかが理解できるでしょう。このことを知っておくと、 プリンタそれぞれに様々なフィルタをインストールしたときに 遭遇するかもしれない問題を予期したり、 デバッグするときに役立つでしょう。

  • LPD は、すべてのプリンタがデフォルトでプレインテキストを印字できることを期待しています。 これは、プレインテキストを直接印字できない PostScript® (または他の言語対応の) プリンタで問題になります。「 プレインテキストのジョブを PostScript® プリンタで印字する」 で、 この問題を克服する方法について述べます。 PostScript® プリンタをお持ちの方は、 この節をお読みになることをおすすめします。

  • PostScript® は様々なプログラムのための有名な出力形式です。 PostScript® のコードを直接書いてしまう人すらいます。 残念ながら、PostScript® プリンタは高価です。「PostScript® プリンタによる PostScript® のシミュレート」節では、PostScript® データをPostScript® プリンタに受けつけさせ、印字させるために、 どのようにしてプリンタ用のテキストフィルタをさらに変更すればよいのか、 ということについて説明しています。PostScript® プリンタを持っていない方は、 この節をお読みになることをおすすめします。

  • 変換フィルタ」では、 図形や組版データといった特定のファイル形式を、 プリンタが理解できる形式へ変換する作業を自動的におこなわせる方法について述べます。 この節を読むと、troff のデータを印字するには lpr -t, または、TeX DVI を印字するには lpr -d、 ラスタイメージデータを印字するには lpr -v、 などといったようにユーザが入力することができるように プリンタの設定をおこなうことができます。 この節もお読みになることをお薦めします。

  • 出力フィルタ」 では、あまり使われない LPD の機能のすべて、すなわち、 出力フィルタに関することが記述されています。ヘッダページ (「 ヘッダページ」参照) を印字させていない場合は、 多分、この節は飛ばしても構わないでしょう。

  • テキストフィルタ lpf」では、lpf についての説明が、ほぼ完全におこなわれています。これは FreeBSD に付属するラ インプリンタ (または、 ラインプリンタのように動作するレーザプリンタ) のための、 単純なテキストフィルタです。 プレインテキストを印字したことに対して課金をおこなう方法が 至急必要な場合、もしくは、バックスペース文字を印字しようと すると煙を発するプリンタを持っている場合は、絶対に lpf を検討するべきです。

注記:

以下で述べられているさまざまなスクリプトは、/usr/share/examples/printing ディレクトリにあります。

10.4.1.1. フィルタはどのように機能しているか

既に言及したように、フィルタとは、プリンタにデータを送る際に、 デバイスに依存した部分を取り扱うために LPD によって起動される実行プログラムです。

LPD がジョブ中のファイルを印字しようとするとき、 LPD はフィルタプログラムを起動します。このとき、 フィルタの標準入力を印字するファイルに、 標準出力をプリンタに、そして、標準エラー出力を エラーログファイル (/etc/printcap 内の lf 項目で指定されたファイル、または、 指定されていない場合は、デフォルトとして /dev/console) にセットします。

LPD が起動するフィルタと、その引数が何であるかは、 /etc/printcap ファイルの内容と、ジョブの起動時にユーザが指定した lpr(1) コマンドの引数に依存しています。 たとえば、ユーザが lpr -t と入力した場合は、 LPD は出力先のプリンタ用の tf 項目で指定されている troff 用のフィルタを起動させるでしょう。 ユーザがプレインテキストの印字を指示したときは、 if で指定されたフィルタが起動されるでしょう (このことはほとんどの場合にあてはまります。 詳細については、「 出力フィルタ」をご覧ください)。

/etc/printcap で指定可能なフィルタは次の3種類があります。

  • テキストフィルタ (LPD のドキュメントでは紛らわしいことに 入力フィルタと呼んでいますが) は一般のテキストの印字を扱います。これはデフォルトのフィルタと 考えてください。LPD では、すべてのプリンタに対して、 デフォルトでプレインテキストが印字できることを期待しています。 さらに、バックスペースやタブを正しく扱い、また、 他の特殊な文字が入力されてもプリンタに混乱を来さないように するのはテキストフィルタの仕事であると考えています。 プリンタの使用に対して課金をしなくてはならない環境にあ るときは、テキストフィルタが印字したページ数を数える作 業もしなくてはなりません。この作業は、通常、印字した行 数を数え、これをプリンタが 1 ページ当たりに印字できる行 数と比較することでおこなわれます。 テキストフィルタは、次のような引数を付けて起動されます。

    filter-name [-c] -w width -l length -i indent -n login -h host acct-file

    ここで、

    -c

    lpr -l によってジョブが入力されたときに与えられます。

    width

    /etc/printcap で指定された pw (page width) 項目の値が与えられます。デフォルトは、 132 です。

    length

    pl (page length) 項目で指定された値が与えられます。 デフォルトは 66 です。

    indent

    lpr -i によって与えられた字下げの量で、 デフォルトは 0 です。

    login

    ファイルを印字したユーザのアカウント名が 与えられます。

    host

    ジョブが入力されたホスト名が 与えられます。

    acct-file

    af 項目で指定されている課金データファイル の名前が与えられます。

  • 変換フィルタは、 特定のファイル形式をプリンタ が紙に印字できるようなものに変換します。たとえば、 プリンタで ditroff 組版データを直接印字することはできません。 しかし、ditroff データをプリンタが消化し、 印字することができる形式へ変換するために、ditroff ファイル用フィルタをインストールすることができます。 「 変換フィルタ」 で、これらに関するすべてについて説明します。 プリンタの課金をする必要がある場合は、 変換フィルタでも印字ページを数える作業が必要となります。 変換フィルタは次の引数をとって起動されます。

    filter-name -x pixel-width -y pixel-height -n login -h host acct-file

    ここで、pixel-width は、 px 項目で指定された値 (デフォルトは 0)、 pixel-height は、 py 項目で指定された値 (デフォルトは 0) です。

  • 出力フィルタは、 テキストフィルタが指定されて おらず、かつ、 ヘッダページの出力が許可されている場合にのみ使われます。 「 出力フィルタ」で、これらのことについて説明します。 出力フィルタに対する引数は次の 2 つだけです。

    filter-name -w width -l length

    ここで、-w-l は、 テキストフィルタの場合と同じです。

フィルタは、次に示す終了状態をもってプログラムを exit するべきです。

exit 0

フィルタがファイルを正常に印字した場合。

exit 1

フィルタはファイルの印字に失敗したが、 LPD に再度ファイルの印字を試みて欲しい場合。 この終了状態で終了した場合、LPD はフィルタを再スタートします。

exit 2

フィルタはファイルの印字に失敗し、かつ、LPD に再出力を試みて欲しくない場合。この場合、LPD はそのファイルを放棄します。

FreeBSD に付属するテキストフィルタ /usr/libexec/lpr/lpf は、FORM FEED 文字が送られたときやプリンタ使用に対する課金をどのようにするかを決定するために、 ページ幅やページ長の引数を利用します。また、 課金用のエントリを作成するため、ログイン名、ホスト名、 課金ファイル名の引数を利用します。

もし、フィルタの購入を検討しているならば、LPD と互換性があるかどうかを確認してください。もしそうならば、 上述の引数リストをサポートしていなければなりません。 一般向けの使用のためにフィルタを作成する計画をしている場合は、 同じ引数リストと終了コードをサポートしてください。

10.4.1.2. プレインテキストのジョブを PostScript® プリンタで印字する

コンピュータと PostScript® (または、他の言語に対応した) プリンタをあなたしか使用しない場合は、プリンタにプレ インテキストを絶対に送らない、そして、 プリンタにプレインテキストを送りたがっている 様々なプログラムの機能を決して使わないことにしてください。そうすれば、 この節に書かれたことに心を煩わせる必要はまったくなくなります。

しかし、PostScript® とプレインテキストの両方のジョブをプリンタへ送りたいと思っている場合は、 プリンタ設定についての要求が増えるでしょう。 両者をプリンタへ送信するためには、 到着したジョブがプレインテキストであるか PostScript® であるかを検出するテキストフィルタが必要です。 PostScript® のジョブはすべて %! で始まらなければならないことになっています (他のプリンタ言語に関しては、 プリンタのドキュメントをご覧ください)。 ジョブの最初の 2 文字がこれならば、PostScript® であることが分かります。 したがって、 ジョブのそれ以降の部分をプリンタに直接送ることができます (訳注: PostScript® では、% 以降はコメントとして扱われるので、最初の %! の行を読み捨てても問題はない)。 最初の2文字が %! でない場合は、 フィルタはテキストを PostScript® に変換し、 その結果を使って印字をおこないます。

この作業をどうやってやればよいのでしょうか。

シリアルポートにプリンタを接続した場合は、 lprps をインストールすることをお勧めします。 lprpsPostScript® 用のフィルタで、 プリンタとの双方向通信をおこないます。 このフィルタでは、プリンタからの冗長な情報を得ることで、 プリンタの状況を示すファイルが更新されていきます。 したがって、ユーザや管理者は (トナー残量少紙詰まりといった) プリンタの状況を正確に知ることができます。しかし、 もっと重要なことは、psif と呼ばれるプログラムが含まれているということです。 このプログラムは、 入力されたジョブがプレインテキストかどうかを検出し、 これを PostScript® に変換するために、textps (lprps に付属する別のプログラム) を呼び出します。そして、このジョブをプリンタに送るために、 lprps が使われます。

lprps は FreeBSD Ports Collection に含まれています (Ports Collection を参照してください)。 紙のサイズに合わせて print/lprps-a4 または print/lprps-letter port をインストールしてください。lprps をインストールした後は、lprps の一部である psif プログラムのパス名を指定するだけです。Ports Collection から lprps をインストールしたときは、 /etc/printcap の中のシリアル接続した PostScript® プリンタのエントリに対して、次を使ってください。

:if=/usr/local/libexec/psif:

LPD にプリンタをリード・ライトモードでオープンさせるために、 rw 項目も指定すべきです。

パラレルポート接続の PostScript® プリンタの場合 (すなわち、 lprps が 必要としているプリンタとの双方向通信ができない)、 テキストフィルタとして次のシェルスクリプトを使うことができます。

#!/bin/sh
#
#  psif - Print PostScript or plain text on a PostScript printer
#  Script version; NOT the version that comes with lprps
#  Installed in /usr/local/libexec/psif
#

IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`

if [ "$first_two_chars" = "%!" ]; then
   #
   #  PostScript job, print it.
   #
   echo "$first_line" && cat && printf "\004" && exit 0
   exit 2
else
   #
   #  Plain text, convert it, then print it.
   #
   ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
   exit 2
fi

上記のスクリプトにおいて、textps はプレインテキストから PostScript® へ変換するために別にインストールしたプログラムです。 テキストから PostScript® へ変換するのには、 お好みのどんなプログラムでも使うことができます。FreeBSD Ports Collection (Ports Collection を参照してください) には、a2ps と呼ばれるテキストから PostScript® に変換するプログラムが入っています。

10.4.1.3. 非 PostScript® プリンタによる PostScript® のシミュレート

PostScript® は質の高い組版と印字をおこなうための 事実上の標準です。しかしながら、PostScript® は、高価な標準です。ありがたいことに、 Aladdin Enterprises から Ghostscript と呼ばれる、 PostScript® 互換の動作をするフリーのプログラムが出されていて、 FreeBSD で動きます。 Ghostscript はほとんどの PostScript® ファイルを読むことができ、 これらの各ページを多くのブランドの非 PostScript® プリンタを含む 様々なデバイス用に変換することができます。 Ghostscript をインストールし、 プリンタ用の特別なテキストフィルタを使うことによって、 非 PostScript® プリンタをあたかも本物の PostScript® プリンタであるかのように動作させることができます。

Ghostscript は FreeBSD Ports Collection に入っています。 複数のバージョンがありますが、最も良く使われているバージョンは print/ghostscript-gpl です。

PostScript® プリンタをシミュレートさせる場合は、 テキストフィルタに PostScript® ファイルを印字しようとしているかどうかを検出させます。 PostScript® ファイルでない場合は、 フィルタはそのファイルを直接プリンタに送ります (訳注: テキストファイルを直接印字できない場合は、もちろん、 変換フィルタを通す必要があります)。PostScript® の場合は、 まず、Ghostscript を使い、 ファイルをそのプリンタが理解できる形式へ変換します。

次の例のスクリプトは、Hewlett Packard DeskJet 500 プリンタ用 のテキストフィルタです。 他のプリンタで用いるときは、-sDEVICE 引数を gs (Ghostscript) コマンドに変えてください (gs -h と入力すると、現在インストールされている Ghostscript でサポートされているデバイスのリストが得られます)。

#!/bin/sh
#
#  ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
#  Installed in /usr/local/libexec/ifhp

#
#  Treat LF as CR+LF (to avoid the "staircase effect" on HP/PCL
#  printers):
#
printf "\033&k2G" || exit 2

#
#  Read first two characters of the file
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`

if [ "$first_two_chars" = "%!" ]; then
    #
    #  It is PostScript; use Ghostscript to scan-convert and print it.
    #
    /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
      -sOutputFile=- - && exit 0

else
    #
    #  Plain text or HP/PCL, so just print it directly; print a form feed
    #  at the end to eject the last page.
    #
    echo "$first_line" && cat && printf "\033&l0H" &&
    exit 0
fi

exit 2

最後に、if 項目を通して、LPD にこのフィルタを教えてやる必要があります。

:if=/usr/local/libexec/ifhp:

これでおしまいです。lpr plain.text とか lpr whatever.ps と入力してみましょう。どちらも正常に印字されるはずです。

訳注:

日本語を印字する場合は、 日本語対応の Ghostscript が必要です。日本語対応版の Ghostscript も Ports Collection に入っています。

10.4.1.4. 変換フィルタ

プリンタ設定導入編」 に書かれた簡単な設定が完了したら、最初に、 やってみたいと思うことは、多分 (プレイン ASCII テキストに加えて) 好みのファイル形式のための変換フィルタをインストールすることでしょう。

10.4.1.4.1. なぜ、変換フィルタをインストールするのか?

変換フィルタによって、 様々な種類のファイルを印字することが簡単になります。たとえば、TeX 組版システムでたくさんの仕事をしたと仮定しましょう。 そして、PostScript® プリンタが接続 されているとします。 すると、TeX で DVI ファイルを作成する度に、DVI ファイルを印字するために、 これを PostScript® ファイルに変換する必要があります。 このコマンドは次のようになるでしょう。

% dvips seaweed-analysis.dvi
% lpr seaweed-analysis.ps

DVI ファイル用の変換フィルタがインストールしてあると、 LPD に変換を肩代わりさせることで毎回毎回 おこなわなければならなかった面倒な変換作業を省くことができます。 つまり、DVI を生成したら、 次のようなコマンドを入力するだけで、これが印字されます。

% lpr -d seaweed-analysis.dvi

LPD に DVI ファイルの変換をさせるためには、 -d オプション を指定します。 変換オプションのリストは「 整形と変換に関するオプション」 に載せてあります。

変化のオプションのそれぞれをプリンタに サポートさせるためには、 変換フィルタをインストールし、 そのパス名を /etc/printcap の中で指定しなくてはなりません。変換フィルタは、 プレインテキストを印字する代わりに、フィルタはファイルを プリンタが理解できる形式に変換するところを除けば、 「プリンタの簡単な設定」で説明したテキストファイル (「 テキストフィルタのインストール」 を見て下さい) に似ています。

10.4.1.4.2. どの変換フィルタをインストールすべきか?

使いたいと思う変換フィルタをインストールすべきです。 DVI のデータを頻繁に印字するならば、DVI 変換フィルタ をインストールするのが適切でしょう。印字しなくてはなら ない troff を大量に抱えている場合は、多分、 troff フィルタが欲しくなるはずです。

次の表は、LPD で動作するフィルタと、 /etc/printcap ファイルでのエントリする項目、そして、 lpr コマンドで呼び出す方法をまとめたものです。

ファイル形式/etc/printcap項目lpr オプション
cifplotcf-c
DVIdf-d
plotgf-g
ditroffnf-n
FORTRAN textrf-f
trofftf-f
rastervf-v
プレインテキストifなし、-p、または -l

先の例のように、lpr -d を使うためには、出力先のプリンタの /etc/printcap 内のエントリで、 df 項目が必要であることが分かります。

反論はあるかも知れませんが、FORTRAN テキストや plot のような形式は、多分、廃れてていくでしょう。 あなたのサイトで、自前のフィルタをインストールするだけで、 プリントオプションのいくつか、あるいは、 全部に新しい意味を与えることができます。たとえば、 Printerleaf ファイル (Interleaf デスクトップパブリッシングプログラムによるファイル) を直接印字したいとします。 そして、Printerleaf 用の変換フィルタを gf 項目で 指定したパスにインストールすれば、lpr -g の意味は Printerleaf ファイルを印字する 意味だとユーザに教えることができます。

10.4.1.4.3. 変換フィルタのインストール

変換フィルタは FreeBSD の基本システムのインストールとは別にインストールするプログラムなので、 変換フィルタは、 /usr/local ディレクトリの下に置くべきでしょう。 フィルタは LPD だけが実行する特別なプログラム、 すなわち、一般ユーザが実行する必要すらないプログラムなので、 /usr/local/libexec ディレクトリに置くのが普通です。

変換フィルタを使用可能にするためには、 /etc/printcap の目的のプリンタの適切な項目に フィルタがあるパス名を指定します。

DVI 変換フィルタをプリンタ bamboo のエントリに加えてみましょう。プリンタ bamboodf 項目を新たに加えた /etc/printcap ファイルの例を以下に再掲します。

#
#  /etc/printcap for host rose - added df filter for bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
        :if=/usr/local/libexec/psif:\
        :df=/usr/local/libexec/psdf:

DVI フィルタは /usr/local/libexec/psdf という 名前のシェルスクリプトです。 このスクリプトは次のようになっています。

#!/bin/sh
#
#  psdf - DVI to PostScript printer filter
#  Installed in /usr/local/libexec/psdf
#
#  Invoked by lpd when user runs lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"

このスクリプトでは、dvips をフィルタモード (引数 -f) で、 標準入力上で起動しています。標準入力は印字するジョブです。 それから、PostScript® プリンタ用フィルタ lprps (これについては「 プレインテキストのジョブを PostScript® プリンタで印字する」 を参照してください) を LPD に与えられた引数を付けて起動します。 lprps はこれらの引数を印字されたページ分の課金をおこなうために使われます。

10.4.1.4.4. 変換フィルタのその他の例

変換フィルタのインストールには決まったステップがないので、 この節では、例をもっと挙げることにします。 これを自分でフィルタを作る際のガイドにしてください。 適当な例があったら、それをそのまま使ってください。

次のスクリプト例は、Hewlett Packard LaserJet III-Si のための、raster (ええと・・実は、GIF ファイル) 用の変換フィルタです。

#!/bin/sh
#
#  hpvf - Convert GIF files into HP/PCL, then print
#  Installed in /usr/local/libexec/hpvf

PATH=/usr/X11R6/bin:$PATH; export PATH

giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
    && exit 0 \
    || exit 2

ここでは、GIF ファイルから PNM (portable anymap) 形式に変換し、次に PGM (portable graymap) 形式に変換してから、 LaserJet/PCL-互換データに変換しています。

上記のフィルタを使うプリンタのためのエントリを付け加えた /etc/printcap ファイルは次のようになります。

#
#  /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/hpif:\
        :vf=/usr/local/libexec/hpvf:

次のスクリプトは、PostScript® プリンタ bamboo のための groff 組版システムの troff データのための変換フィルタです。

#!/bin/sh
#
#  pstf - Convert groff's troff data into PS, then print.
#  Installed in /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"

上記のスクリプトではプリンタとの通信をおこなうため、 lprps をまた利用しています。 プリンタがパラレルポートに接続されている場合は、代わりに、 次のスクリプトを使うかもしれません。

#!/bin/sh
#
#  pstf - Convert groff's troff data into PS, then print.
#  Installed in /usr/local/libexec/pstf
#
exec grops

これで完成しました。次に、フィルタを使用可能にするため に /etc/printcap に加える必要があるエントリを示します。

:tf=/usr/local/libexec/pstf:

次の例をみたら、FORTRAN のベテランは赤面するかもしれません。 この FORTRAN テキストフィルタは、 プレインテキストを直接印字できるすべてのプリンタで利用できます。 このフィルタをプリンタ teak にインストールすることにしましょう。

#!/bin/sh
#
# hprf - FORTRAN text filter for LaserJet 3si:
# Installed in /usr/local/libexec/hprf
#

printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0
exit 2

そして、このフィルタを使用可能にするため、以下の行を /etc/printcap のプリンタ teak のエントリに加えます。

:rf=/usr/local/libexec/hprf:

これが最後の、そして、若干複雑な例です。前に紹介した LaserJet プリンタ teak に、DVI フィルタを加える ことにしましょう。最初に、 簡単な部分をおこないます。すなわち、DVI フィルタの位置を /etc/printcap に書き加えます。

:df=/usr/local/libexec/hpdf:

さて、難しい部分であるフィルタの作成をおこないます。 このために、DVI から LaserJet/PCL への変換プログラムが必要です。FreeBSD の Ports Collection (Ports Collection を参照してください) には、それがあります。 dvi2xx というのがその port の名前です。 これをインストールすると、必要なプログラム dvilj2p が使えます。このプログラムは DVI を LaserJet IIp、LaserJet III、そして LaserJet 2000 の互換コードへ変換してくれます。

dvilj2p はフィルタ hpdf を極めて複雑にしています。 なぜなら、dvilj2p は標準入力からデータを読み込むことができないからです。 このプログラムを働かせるためには、ファイル名が必要です。 もっと悪いことに、ファイル名は .dvi で終わっている必要があり、標準入力の代わりに、 /dev/fd/0 を使うのは問題があります。 この問題は、(.dvi で終わる) 一時的なファイル名から/dev/fd/0 に (シンボリックな) リンクを張る ことで回避することができます。これで、 dvilj2p に強制的に標準入力からデータを読み込ませることができます。

もう1つの問題は、一時的なリンクを張るために /tmp ディレクトリを使うことができないという事実です。 シンボリックリンクはユーザ、グループが bin であるユーザに所有されています。フィルタはユーザ daemon として起動します。そして、 /tmp ディレクトリはスティッキービットが立っています。 フィルタはリンクを作ることができます。しかし、 リンクは別のユーザに所有されているため、 作業が終了したとき、このリンクを削除することができません。

その代わりに、シンボリックリンクは現在の作業ディレクトリ、 すなわち、スプーリングディレクトリ (/etc/printcapsd 項目で指定する) に作ることにします。 フィルタが作業するにはここの場所は完璧な場所で、なぜなら、 特に、スプーリングディレクトリのディ スクの空き容量は (ときどき) /tmp ディレクトリよりもたくさんあるからです。

以下に示すのが最後のフィルタです。

#!/bin/sh
#
#  hpdf - Print DVI data on HP/PCL printer
#  Installed in /usr/local/libexec/hpdf

PATH=/usr/local/bin:$PATH; export PATH

#
#  Define a function to clean up our temporary files.  These exist
#  in the current directory, which will be the spooling directory
#  for the printer.
#
cleanup() {
   rm -f hpdf$$.dvi
}

#
#  Define a function to handle fatal errors: print the given message
#  and exit 2.  Exiting with 2 tells LPD to do not try to reprint the
#  job.
#
fatal() {
    echo "$@" 1>&2
    cleanup
    exit 2
}

#
#  If user removes the job, LPD will send SIGINT, so trap SIGINT
#  (and a few other signals) to clean up after ourselves.
#
trap cleanup 1 2 15

#
#  Make sure we are not colliding with any existing files.
#
cleanup

#
#  Link the DVI input file to standard input (the file to print).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"

#
#  Make LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"

#
#  Convert and print.  Return value from dvilj2p does not seem to be
#  reliable, so we ignore it.

#
dvilj2p -M1 -q -e- dfhp$$.dvi

#
#  Clean up and exit
#
cleanup
exit 0
10.4.1.4.5. 自動変換: その他の変換フィルタ

ここまでに述べてきたフィルタによって、 印字環境の能率が上がったことと思います。しかし、 これはどのフィルタを使うかを (lpr(1) のコマンドライン上で) ユーザが指定しなくてはならないという代価を支払って実現されています。 コンピュータの事情にあまり詳しくないユーザにとって、 フィルタのオプションを指定させられるということは いらいらさせられるものになるでしょう。更に悪いことに、 間違ったフィルタオプションを指定されると、 間違った形式のファイルがそのフィルタに適用されることになり、 その結果、何百枚もの紙を吐き出すことになるかもしれません。

そのような結果になるならば、 変換フィルタをインストールするよりもむしろ、 テキストフィルタ (これがデフォルトフィルタなので) に印字するよう要求されたファイルの形式を検出させ、自動的に、 適切な変換フィルタを起動するようにしたいと思うかもしれません。 ここでは file コマンドのようなツールを役立たせることができます。 もちろん、いくつかの ファイル形式の違いを見分けることは難しいことでしょう。 そして、もちろん、それらのファイルに対しては、 変換フィルタを提供するだけで済ますこともできるのです。

FreeBSD Ports Collection には、apsfilter (print/apsfilter) と呼ばれる自動変換をおこなうテキストフィルタがあります。 このフィルタは プレインテキスト、PostScript®, DVI など、ほとんどすべてのファイル形式を検出し、適当な変換をおこなった後、 データを印字することができます。

10.4.1.5. 出力フィルタ

LPD スプーリングシステムでは、 ここまでにまだ取り上げていないフィルタ形式、 出力フィルタをサポートしています。出力フィルタは、 テキストフィルタのように、 プレインテキストのみを印字するために意図されたものですが、 非常に簡単化されています。テキストフィルタを用いずに、 出力フィルタを使っている場合は、次のようになります。

  • LPD はジョブ中の各ファイルに一度ではなく、 ジョブ全体に対して一度だけ出力フィルタを起動します。

  • LPD は出力フィルタに対し、 ジョブ中のファイルの先頭や末尾を特定するための対策を 一切おこなっていません。

  • LPD はユーザのログイン名やホスト名をフィルタに渡しません。 したがって、課金の処理をおこなうことは考えていません。 実際、出力フィルタには、以下2つの引数しか与えられません。

    filter-name -wwidth -llength

    ここで、width は対象となるプリンタの pw 項目、 lengthpl 項目に指定された数です。

出力フィルタの簡便さに誘惑されてはいけません。もし、 ジョブ中のそれぞれのファイルに別のページ番号を付加しようとしても、 出力フィルタはうまく動作しないでしょう。 そのような動作を期待しているならば、 (入力フィルタとしても知られている) テキストフィルタを使ってください。 詳しくは、「 テキストフィルタのインストール」をご覧ください。 さらに、出力フィルタは、実のところ、 もっと複雑になっています。まず、 特殊なフラグ文字を検出するために、 フィルタに送られてくるバイトストリームを検査する必要があります。 また、LPD に代わって、 自分自身にシグナルを送らなければなりません。

しかしながら、ヘッダページの印字をおこないたくて、 エスケープシーケンスやヘッダページを印字できるようにするその他の初期化文字列を送信する必要がある場合は、 出力ファイルが必要です。 (しかし、 ヘッダページを要求したユーザに対して課金しようとするのもまた無駄なことです。 LPD は出力フィルタにユーザやホストの情報を渡しません)。

1 台のプリンタに対し、LPD では出力フィルタとテキストやその他のフィルタを両方使うことができます。 このような場合、LPD はヘッダページ (「 ヘッダページ」 を参照してください) だけを印字させるために、出力フィルタを起動させます。 それから LPD では、出力フィルタに 2 バイトの文字 (ASCII 031 の次に ASCII 001) を送ることで、 出力フィルタが自分自身を停止することを期待しています。 2 バイト (031, 001) が出力フィルタに送られたとき、 出力フィルタは自分自身にシグナル SIGSTOP を送ることによって停止するはずです。 LPD がその他のフィルタを動かし終わると、 出力フィルタにシグナル SIGCONT を送って、出力フィルタを再起動します。

出力フィルタがあり、 テキストフィルタがない場合、 LPD はプレインテキストジョブを扱う場合に、 出力フィルタを使います。前述したように、出力フィルタでは、 ジョブ中の各ファイルの間に FORM FEED 文字や紙を送る他の文字を入れることはしません。 この動作は多分、 あなたが求めているものとは異なっているでしょう。 ほとんどの場合において、テキストフィルタが必要なはずです。

プログラム lpf は、 テキストフィルタの項で既に紹介しましたが、 出力フィルタとしても動作させることができます。もし、 簡便で極悪な出力フィルタが必要で、かつ、 バイトストリームを検査したりシグナルを送るコードを書きたくないときには、 lpf をお試しください。 あるいは、プリントが要求する初期化コードを送るために、 lpf をシェルスクリプトに包んで使うこともできます。

10.4.1.6. テキストフィルタ lpf

プログラム /usr/libexec/lpr/lpf は、 FreeBSD の バイナリ配布に付属しているテキストフィルタ (入力フィルタ) で、出力を字下げしたり (lpr -i でジョブが入力さ れたとき)、 文字を未処理のままプリンタに送ったり (lpr -l でジョブが入力されたとき)、 ジョブ中のバックスペースやタブの印字位置を調節したり、 印字したページに対して課金したりすることができます。また、 このフィルタは出力フィルタとしても動作させることができます。

lpf フィルタは多くの印字環境において使用することに適しています。 このフィルタには、プリンタに初期化文字列を送る機能はありませんが、 必要とされる初期化をおこない、それから lpf を実行させるためのシェルスクリプトを作成するのはたやすいことです。

lpf に対して、 印字ページへの課金を正確におこなわせるためには、 /etc/printcap ファイルの中の pwpl の項目に正確な値を入れておく必要があります。これらの値は、 どのくらいの量のテキストがページにフィットするか、また、 ユーザのジョブが何ページあるのかを調べるために使われます。 プリンタの課金についての詳しい情報については、「 プリンタの利用に対する課金」をご覧ください。

10.4.2. ヘッダページ

あなたが管理するシステムのユーザが たくさんおり、 ユーザ全員が様々なプリンタを使用する場合、多分、 必要悪であるヘッダページを 印字させることを検討したいと思うかもしれません。

ヘッダページは、バナー とか バーストページ としても知られていますが、 出力されたジョブが誰によるものなのかを特定させる働きがあります。 印字結果の山の中において、 ユーザのジョブによって印字された本物のドキュメント部分よりも際立たせるために、 ヘッダページは、通常、多分、縁が装飾されている大きな太文字で印字されます。 ヘッダページにより、 ユーザは自分が出したジョブがどこにあるのかをすばやく見つけることができます。 ヘッダページの欠点は、明らかに、すべてのジョブに対して、 紙が 1 枚余分に印字されるということです。 この紙の有効期間は短く、2 〜 3 分も続きません。最終的に、 これらの紙は再利用紙入れの中かくずの山に入れられることでしょう (ヘッダページはジョブ中の各ファイル毎に印字されるのではなく、 ジョブ毎に印字されるということに注意してください。したがって、 紙の消費はそれほどひどくはないかもしれません)。

もし、 プリンタがプレインテキストを直接印字できるならば、LPD システムは印字物に対して自動的にヘッダページを付けることができます。 PostScript® プリンタを使っている場合は、 ヘッダページを生成する外部プログラムが必要になります。これについては、 「PostScript® プリンタでのヘッダページ」をご覧ください。

10.4.2.1. ヘッダページの印字を許可する

プリンタ設定導入編 」節では、/etc/printcap ファイルの sh (``suppress header'' : ヘッダを供給しない という意味) を指定して、 ヘッダページの印字を止めていました。 プリンタでのヘッダページの印字を許可するには、 sh 項目を取り除くだけでよいのです。

とても簡単そうに見えるけど、本当かな?

それは本当です。 プリンタに初期化文字列を送るための 出力フィルタを用意しなくてはならないかもしれません。次に、Hewlett Packard PCL 互換プリンタの例を挙げます。

#!/bin/sh
#
#  hpof - Output filter for Hewlett Packard PCL-compatible printers
#  Installed in /usr/local/libexec/hpof


printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpf

of 項目に出力フィルタのパス名を指定してください。 詳細については、「出力フィルタ」節 をご覧ください。

次に、以前紹介したプリンタ teak のための /etc/printcap ファイルの例を示します。ここでは、 ヘッダページの印字を許可し、上記の出力フィルタを追加しました。

#
#  /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/hpif:\
        :vf=/usr/local/libexec/hpvf:\
        :of=/usr/local/libexec/hpof:

さて、ユーザが teak からジョブを印字させたとき、 それぞれのジョブ毎にヘッダページが印字されます。 もし、ユーザが印字物を探すのに時間を費やしたいと思うなら、 lpr -h によってジョブを入力することで、 ヘッダページの印字を止めることができます。 これ以外の lpr(1) のオプションについては、 「 ヘッダページ用オプション」節をご覧ください。

注記:

LPD では、ヘッダページの最後に、 FORM FEED 文字が印字されます。 プリンタに紙排出をさせるために、別な文字、 もしくは、別な文字列が利用されている場合は、 /etc/printcap 中の ff 項目で指定することができます。

10.4.2.2. ヘッダページを制御する

ヘッダページの印字が許可されていると、LPD長いヘッダを作ります。これには、 紙全面に大きな文字でユーザ名、ホスト名、 ジョブ名が書かれています。次に、このヘッダページの例を示 します (kelly がジョブ名 outlinerose というホストから印字 された場合)。

      k                   ll       ll
      k                    l        l
      k                    l        l
      k   k     eeee       l        l     y    y
      k  k     e    e      l        l     y    y
      k k      eeeeee      l        l     y    y
      kk k     e           l        l     y    y
      k   k    e    e      l        l     y   yy
      k    k    eeee      lll      lll     yyy y
                                               y
                                          y    y
                                           yyyy


                                   ll
                          t         l        i
                          t         l
       oooo    u    u   ttttt       l       ii     n nnn     eeee
      o    o   u    u     t         l        i     nn   n   e    e
      o    o   u    u     t         l        i     n    n   eeeeee
      o    o   u    u     t         l        i     n    n   e
      o    o   u   uu     t  t      l        i     n    n   e    e
       oooo     uuu u      tt      lll      iii    n    n    eeee









      r rrr     oooo     ssss     eeee
      rr   r   o    o   s    s   e    e
      r        o    o    ss      eeeeee
      r        o    o      ss    e
      r        o    o   s    s   e    e
      r         oooo     ssss     eeee







                                              Job:  outline
                                              Date: Sun Sep 17 11:04:58 1995

LPD はこのテキストの終わりに FORM FEED 文字を加えます ので、ジョブは新しいページから開始されます (ただし、 /etc/printcap で出力先のプリンタのエントリに sf (suppress form feeds) が指定されているときはこ の限りではありません)。

お望みならば、LPD短いヘッダページを出力させることもできます。 この場合は、 /etc/printcap ファイルの中で sb (short banner) を指定してください。 ヘッダページは次のようになります。

rose:kelly  Job: outline  Date: Sun Sep 17 11:07:51 1995

デフォルトでは、LPD はヘッダページを最初に印字し、次にジョブの印字をおこないます。 この順番を逆にするときは、 /etc/printcaphl (header last) を指定してください。

10.4.2.3. ヘッダページに対する課金

LPD に備わっているヘッダページ出力機能を使うと、 入力されたジョブに対して課金をおこなうことができても、 ヘッダページは無料で提供しなくてはならない、 という特有のやり方を強要されます。

なぜでしょうか。

出力フィルタは単なる外部プログラムなので、 課金をするための制御をおこなうとすれば、 それはヘッダページを印字するときですが、出力フィルタには、 ユーザ名とホスト名 の情報や課金情報を格納するファイルがどれな のかということが知らされません。それゆえ、出力ファイルには、 誰にプリンタ利用の課金をおこなえばよいのかが分からないのです。 テキストフィルタやその他の変換フィルタ (これらのフィルタはユーザやホストの情報が知らされます) が出力ページの枚数に 1 ページ分水増しする だけでは十分ではありません。 なぜなら、ユーザは lpr -h に よってヘッダページの出力を止めることができるからです。 やみくもに 1 ページを水増しすると、 印字されてもいないヘッダページに対する 料金をとることになります。基本的に、lpr -h は環境に優しい心を持つユーザに好まれるオプションですが、 これを使うように奨励することもできません。

各々のフィルタに独自のヘッダページを生成させる (その結果、ヘッダページに課金することができる) という方法でも十分であるとはいえません。 この場合、LPD はフィルタに -h の情報を送りませんので、lpr -h によってヘッダページを印字しないオプションを選択したとしても、 依然としてヘッダページは印字され、 その分の課金がおこなわれてしまいます。

では、どのような選択肢があるのでしょうか。

ヘッダページへの課金に関しては、 次のことができます。

  • LPD のやり方を受け入れ、 ヘッダページは無料とする。

  • LPRng などの LPD の代替品をインストールする。 LPD と入れ替えが可能な他のスプーリングソフトウェアに関しては、 標準スプーラの代替品 をご覧ください。

  • スマートな 出力フィルタを作成する。通常、 出力フィルタはプリンタを初期化するか、 単純な文字列変換をする程度の働きしかしません。 (テキスト (入力) フィルタがない場合) 出力フィルタはヘッダページとプレインテキストの印字をおこなうのに適しています。 プレインテキストを印字するためのテキストフィルタがない場合、 LPD はヘッダページを印字するためだけの目的で出力フィルタを起動します。 そして、LPD が生成するヘッダページのテキストを解析することにより、 出力フィルタはヘッダページに課金するために必要なユーザ名と ホスト名を取得することができます。この方式の唯一の問題点は、 出力フィルタは課金情報を格納するデータファイルの名前を知ることが できないということです (af 項目で指定されたファイル名は 出力ファイルに渡されません)。しかし、既知の 名前の課金データファイルを使うのならば、 その名前を出力フィルタのプログラム中に埋め込むことができます。 解析の手順を簡単にするためには、 /etc/printcapsh 項目 (短いヘッダを指定) を使うとよいでしょう。 そしてまた、 ここまでの方法は少なからぬトラブルを生じさせるかもしれません。 そうなれば、もちろんユーザはヘッダページを無料で 提供してくれる気前のよいシステム管理者に感謝することでしょう。

10.4.2.4. PostScript® プリンタでのヘッダページ

これまでに述べたように、LPD ではプレインテキストのヘッダページをたくさんのプリンタに合うように生成することができます。 残念ながら、PostScript® プリンタは、 プレインテキストを直接印字することができません。ですから、 LPD のヘッダページ機能はまったく、 あるいはほとんどの場合、役に立ちません。

ヘッダページを出力するための自明な方法の1つに、 すべての変換フィルタとテキストフィルタにヘッダページを生成させる方法があります。 フィルタは、 適切なヘッダページを生成するために、 ユーザ名とホスト名の引数を使うべきです。この方法の欠点は、いつでも、 lpr -h によってジョブが入力された場合でさえも、 ヘッダページが印字されるということです。

この方法で試してみましょう。次のスクリプトは、3 つの引数 (ユーザ のログイン名、ホスト名、ジョブ名) をとり、簡単な PostScript® 用 のヘッダページを生成します。

#!/bin/sh
#
#  make-ps-header - make a PostScript header page on stdout
#  Installed in /usr/local/libexec/make-ps-header
#

#
#  These are PostScript units (72 to the inch).  Modify for A4 or
#  whatever size paper you are using:
#
page_width=612
page_height=792
border=72

#
#  Check arguments
#
if [ $# -ne 3 ]; then
    echo "Usage: `basename $0` <user> <host> <job>" 1>&2
    exit 1
fi

#
#  Save these, mostly for readability in the PostScript, below.
#
user=$1
host=$2
job=$3
date=`date`

#
#  Send the PostScript code to stdout.
#
exec cat <<EOF
%!PS

%
%  Make sure we do not interfere with user's job that will follow
%
save

%
%  Make a thick, unpleasant border around the edge of the paper.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray

%
%  Display user's login name, nice and large and prominent
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show

%
%  Now show the boring particulars
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def
} forall

/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
        270 y moveto show /y y 18 sub def
} forall

%
%  That is it
%
restore
showpage
EOF

そして、変換フィルタやテキストフィルタがそれぞれ、 最初にこのスクリプトを起動することで、 ヘッダページが出力され、それから、 ユーザのジョブの印字をおこないます。次に、 このドキュメントの始めのほうで紹介した DVI 変換フィルタを、 ヘッダページを印字するように変更したものを示します。

#!/bin/sh
#
#  psdf - DVI to PostScript printer filter
#  Installed in /usr/local/libexec/psdf
#
#  Invoked by lpd when user runs lpr -d
#

orig_args="$@"

fail() {
    echo "$@" 1>&2
    exit 2
}

while getopts "x:y:n:h:" option; do
    case $option in
        x|y)  ;; # Ignore
        n)    login=$OPTARG ;;
        h)    host=$OPTARG ;;
        *)    echo "LPD started `basename $0` wrong." 1>&2
              exit 2
              ;;
    esac
done

[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"

( /usr/local/libexec/make-ps-header $login $host "DVI File"
  /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args

このフィルタがユーザ名やホスト名を決定するために 引数リストをどのように解析しなくてはならないかという点に注意してください。 この解析方法は他の変換フィルタに対しても同様です。 しかしながら、テキストフィルタについては、 引数の設定が少し異なっています (これについては、「 フィルタはどのように機能しているか」 をご覧ください)。

前述の通り、上記の手法は、極めて単純なのにも関らず、 lprヘッダページを印字しない オプション (-h オプション) が使えなくなっています。 ユーザが森林資源を (あるいは、 ヘッダページが課金されているならば、その僅かな金額を)、 節約したいと望んでいる場合でも、 すべてのフィルタがすべてのジョブ毎にヘッダページを印字 することになっているので、節約することはできません。

ジョブ毎に印字されるヘッダページを ユーザが抑制できるようにするためには、「 ヘッダページに対する課金」で紹介したトリックを 使う必要があります。すなわち、LPD が生成するヘッダページの解析をおこない、PostScript® 版のヘッダページを出力させる出力フィルタを作るのです。 この場合、ユーザが lpr -h でジョブを入力すると、 LPD はヘッダページを生成しなくなり、また、 出力フィルタも起動されません。そうでないならば、 作成した出力フィルタが LPD からのテキストを読み込み、ヘッダページを印字する適当な PostScript® のコードがプリンタに送られるでしょう。

PostScript® プリンタがシリアルポートに接続されている場合、 出力フィルタとして lprps を、 上記の動作をおこなうものとして psof を使うことができます。ただし、psof はヘッダページに対して課金をおこないませんので注意してください。

10.4.3. リモートプリンタからの出力

FreeBSD では、ネットワーク越しの印字、すなわち、 ジョブをリモートプリンタに送ることをサポートしています。 リモートプリンタからの出力をするには、一般に、 次の 2 つを参照してください。

  • リモートホストに接続されたプリンタにアクセスする方法。 プリンタがあるホストのシリアル、 または、パラレルインタフェースに接続されている場合、 ネットワーク上の他のホストからこのプリンタにアクセスできるように LPD を設定します。「リモートホストに 接続されたプリンタ」 でどのようにするかを説明します。

  • ネットワークに直接接続されているプリンタにアクセスする方法。 プリンタに、旧来のシリアル、または、 パラレルインタフェースに加えて (もしくは、これらに代わって) ネットワーク用のインタフェースがある場合。 そのようなプリンタは次のように動作するでしょう。

    • そのプリンタが LPD のプロトコルを理解でき、リモートホストからのジョブを キューに入れることさえできる場合。この場合、 プリンタは、LPD が起動している一般のホストのように振る舞います。 そのようなプリンタを設定するために、 「 リモートホストに接続されたプリンタ」 と同様の手順をおこなってください。

    • そのプリンタが、 データストリームによるネットワーク接続をサポートしている場合。 この場合、ネットワーク上の1つのホストとしてプリンタを 接続 します。 このホストは、ジョブをスプーリングする責任を負い、 スプーリングされたジョブはプリンタに送られます。 そのようなプリンタをインストールするためのいくつかの提案が 「 ネットワークにおけるデータストリームの インタフェースを持つプリンタ」にあります。

10.4.3.1. リモートホストに接続されたプリンタ

LPD スプーリングシステムでは LPD (または LPD 互換のシステム) が起動している他のホストへジョブを送る機能が 始めからサポートされています。この機能により、 あるホストに接続されたプリンタへ、 他のホストからアクセスできるようになります。また、 LPD プロトコルを理解するネットワークインタフェースを持ったプリンタに対しても、 この機能は働きます。

リモートプリンタへの出力を許可するためには、最初に、 あるホスト (これを、 プリンタホストと呼びます) にプリンタを接続します。そして、「 プリンタ設定導入編」 に書かれた簡単なプリンタの設定をおこなってください。 必要ならば、「プリンタ設定上級編」 にある、更に進んだ設定をおこなってください。そして、 そのプリンタをテストしてうまく動作することを確認し、LPD に許可した機能がうまく働くかどうかを見てください。さらに ローカルホストプリンタホストLPD サービスの使用を許可されているか確認して下さい (「 リモートホストからの利用を制限する 」参照)。

LPD 互換のネットワークインタフェースを持つプリンタを使用している場合は、 そのプリンタ自身が以下で説明する プリンタホストになります。そして、 プリンタ名とは、 そのプリンタに設定した名前のことを指します。 これについては、プリンタ、および (または)、 プリンタのネットワークインタフェースに付属するドキュメントを参照してください。

ヒント:

ヒューレット・パッカード社の Laserjet シリーズを使用している場合には、 プリンタ名を text とすると、 自動的に LF から CRLF への変換が行なわれます。 そのため、hpif スクリプトは必要ありません。

次に、 そのプリンタにアクセスしたいと思っている他ホストにおいて、 そのホストの /etc/printcap ファイルに次にあげるエントリを作ります。

  1. 名前のエントリ。どんな名前でもよいのですが、簡単のため、多分、 プリンタホストで設定されたプリンタ名や別名と同じものを使いたいと思うでしょう。

  2. lp 項目で指定されるデバイスは明示的に空にします (:lp=: とします)。

  3. スプーリングディレクトリを作成し、 sd 項目でその位置を指定します。 LPD では、プリンタホストにジョブを送信するまでの間、 このディレクトリにジョブを格納します。

  4. rm 項目でプリンタホストの名前を指定します。

  5. rp 項目で プリンタホストに接続したプリンタ名を指定します。

これで終わりです。 変換フィルタやページの大きさやその他の事項を /etc/printcap に加える必要はありません。

次に、 リモートホストに接続されたプリンタで印字するための設定例を示します。 ホスト rose には 2 台のプリンタ bamboorattan が接続されています。これらのプリンタをホスト orchid のユーザが使えるようにしましょう。最初に orchid/etc/printcap を示します (このファイルは、「 ヘッダページの出力を許可する」 で参照することができます)。このファイルには、既に、プリンタ teak 用のエントリがありました。以下では、 これに、ホスト rose にある2台のプリンタ用のエントリが加えられています。

#
#  /etc/printcap for host orchid - added (remote) printers on rose
#

#
#  teak is local; it is connected directly to orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/ifhp:\
        :vf=/usr/local/libexec/vfhp:\
        :of=/usr/local/libexec/ofhp:

#
#  rattan is connected to rose; send jobs for rattan to rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

#
#  bamboo is connected to rose as well:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:

orchid で必要となる作業はスプーリングディレクトリを作ることだけです。

# mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo

これで、orchid のユーザが rattanbamboo で印字することができるようになりました。 たとえば、orchid のユーザが次のように入力したとします。

% lpr -P bamboo -d sushi-review.dvi

すると、orchidLPD システムは、 ジョブをスプーリングディレクトリ /var/spool/lpd/bamboo にコピーし、これが DVI ファイルを印字するジョブであることを記録します。 ホスト rosebamboo スプーリングディレクトリに十分な容量が確保でき次第、 両者の LPD は、ジョブのファイルを rose に転送します。 このファイルは、そのすべてが印字されるまで、rose のキューに留まります。 (bambooPostScript® プリンタなので) DVI から PostScript® への変換は rose でおこなわれます。

10.4.3.2. ネットワークにおけるデータストリームの インタフェースを持つプリンタ

プリンタのネットワークインタフェースカードは、 2 種類に分類することができます。 1 つはスプーラをエミュレートするもの (高価) で、もう 1 つはシリアルやパラレルポートを使うように プリンタにデータを送ることができるだけのもの (安価) です。この節では、 後者の使い方を説明します。前者のプリンタは、前節「 リモートホストに接続されたプリンタ」 の方法が適用できます。

/etc/printcap ファイルでは、 シリアルかパラレルのインタフェースのどちらを使うのか、 そして、(シリアルインタフェースを使う場合) そのボーレートはいくらであるか、フロー制御は使うのか、 タブのための遅延を加えるのか、 改行文字を変換するかなどの指定をおこなうことができます。 しかし、TCP/IP や他のネットワークポートからデータを受け取るプリンタを 接続するための指定をおこなうことはでき ません。

ネットワーク接続されたプリンタにデータを送るためには、 テキストフィルタと変換フィルタから呼び出すことができる 通信プログラムを開発する必要があります。以下に、 そのようなプログラムの例を示します。スクリプト netprint では、 標準入力から印字データをすべて受け取り、 ネットワーク接続されたプリンタにこれを送ります。 netprint の最初の引数でプリンタのホスト名を、 2 番目の引数で接続するポート番号を指定します。 このプログラムでは単方向通信 (FreeBSD からプリンタ) のみをサポートしていることに注意してください。 ネットワークプリンタの多くは双方向通信をサポートしていますので、 その恩恵 (プリンタの状態を得たり、 課金をおこなうなど) にあずかりたいと思われるかもしれません。

#!/usr/bin/perl
#
#  netprint - Text filter for printer attached to network
#  Installed in /usr/local/libexec/netprint
#

$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";

$printer_host = $ARGV[0];
$printer_port = $ARGV[1];

require 'sys/socket.ph';

($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
    = gethostbyname($printer_host);

$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);

socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
    || die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;

このスクリプトは、 様々なフィルタが利用することができます。仮に、Diablo 750-N ラインプリンタを持っており、 これがネットワークに接続されているとしましょう。 プリンタはポート番号 5100 にて印字するデータを受け取ります。 プリンタのホスト名は scrivener とします。このとき、 このプリンタのテキストフィルタは次のようになります。

#!/bin/sh
#
#  diablo-if-net - Text filter for Diablo printer `scrivener' listening
#  on port 5100.  Installed in /usr/local/libexec/diablo-if-net
#

exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100

10.4.4. プリンタの利用に制約を与える

本節では、プリンタの利用に制約を与えるための情報を記しています。 LPD システムでは、プリンタ (ローカル、 リモートのいずれに接続されていても) にアクセスできる人を制限する機能、 複数部のコピーの印字の可否を制御する機能、 ジョブのサイズの最大値やプリンタキューに入る ジョブの最大個数を制御する機能を提供しています。

10.4.4.1. 複数部のコピーの印字を制限する

LPD システムではユーザが複数部のコピーの印字を簡単におこなう 機能を提供しています。ユーザが、(たとえば) lpr -#5 コマンドを使ってジョブを印字すると、 ジョブのそれぞれのファイルのコピーを 5 部得ることができます。 これがよい機能であると思うかどうかは人それぞれでしょう。

複数部のコピーの印字によってプリンタが 必要以上に消耗してしまうと感じるならば、 /etc/printcap ファイルに sc 項目を加えてください。これにより、 lpr(1)-# オプションの使用が禁止されます。 このオプションが指定されているにも関らず、 -# オプションを使うと、 次のようなメッセージが表示され、 このオプションの利用できない旨を伝えます。

lpr: multiple copies are not allowed

リモートホストからプリンタをアクセスできる 設定にしている場合 (この 設定については、「 リモートホストに接続されたプリンタ」 をご覧ください)、そのリモートホストの /etc/printcap にも同じように sc 項目を追加する必要があることに注意してください。 そうしないと、ユーザは別なホストから複数部のコピーの 印字をすることができてしまいます。

例を使って説明しましょう。次に示す /etc/printcap ファイルは、ホスト rose のものです。プリンタ rattan は極めて頑丈なので、 複数部のコピーの印字は許可されています。しかし、 レーザプリンタの bamboo はもう少しデリケートで、 このプリンタから複数部のコピーを印字することを sc 項目を追加することで禁止しています。

#
#  /etc/printcap for host rose - restrict multiple copies on bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:sc:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
        :if=/usr/local/libexec/psif:\
        :df=/usr/local/libexec/psdf:

さらに、orchid の /etc/printcap にも

sc

項目を追加する必要があります (orchid でこの編集をおこなっているときに、ついでに、プリンタ teak でも複数部のコピーの印字を禁止することにしましょう)。

#
#  /etc/printcap for host orchid - no multiple copies for local
#  printer teak or remote printer bamboo

teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
        :if=/usr/local/libexec/ifhp:\
        :vf=/usr/local/libexec/vfhp:\
        :of=/usr/local/libexec/ofhp:

rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

sc 項目を指定することにより、 lpr -# の使用を防ぐことができます。しかし、この状態では lpr(1) を複数回起動したり、 1 回のジョブで次のように同じファイルを複数個指定することを防ぐまでには至っていません。

% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

このような悪用を防ぐ方法は (その指示を無視することも含めて) たくさんあります。 各自で調べてみてください。

10.4.4.2. プリンタを使用できる人を限定する

それぞれのプリンタを使用できる人を限定するには、UNIX® の グループ権限のメカニズムを利用し、さらに、 /etc/printcaprg 項目を指定することでおこないます。 あるプリンタにアクセスさせてもよいと思うユーザすべてを グループのどれかに入れてください。そして、 そのグループ名を rg で指定します。

このとき、そのグループに含まれないユーザ (root も含みます) がプリントしようとすると、次のようなメッセージが表示されます。

lpr: Not a member of the restricted group

sc (suppress multiple copies : 複数部のコピーの印字を禁止する) を指定するときと同様に、rg が指定されたプリンタがリモートホストからもアクセスでき (この設定については、 「 リモートホストに接続されたプリンタ」 をご覧ください)、かつ、 そのホストでもプリンタを使用できる人を限定するのが 妥当であると思う場合は、 そのホストの /etc/printcap にも rg 指定をおこなう必要があります。

たとえば、プリンタ rattan は誰でも利用できるが、bamboo はグループ artists に属している人のみが利用できるようにしてみましょう。 以下に、もうお馴染みとなったホスト rose/etc/printcap を示します。

#
#  /etc/printcap for host rose - restricted group for bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
        :if=/usr/local/libexec/psif:\
        :df=/usr/local/libexec/psdf:

これ以外の /etc/printcap ファイル (ホスト orchid のもの) はそのままにしておくことにします。もちろん、 orchid のユーザは全員 bamboo を利用することができます。これは、 orchid には特定のユーザのみにしかアクセスさせておらず、 そのユーザにはプリンタを利用させたいと思っているからなのかもしれませんし、 そうでないかもしれません。

注記:

1台のプリンタを複数グループのユーザに利用させることはできません。

10.4.4.3. 入力可能なジョブのサイズを制限する

たくさんのユーザからプリンタが利用される場合には、多分、 ユーザが印字要求を出すことができるファイルのサイズに 上限値を置く必要が生じるでしょう。結局のところ、 スプーリングディレクトリ が置かれているファイルシステムの空き容量がその 上限値になる訳ですが、 あるユーザがこれを独占的に使用すること避けるために、 他ユーザからのジョブ用の空き容量を確保する必要もあります。

LPD では、mx 項目を指定することにより、 ジョブ中の個々のファイルのサイズの上限値を制限する機能を提供しています。 指定される ファイルサイズの単位は BUFSIZ ブロックで、1 BUFSIZ ブロックは 1024バイトを表わします。この mx 項目の値として 0 が指定されると、 ファイルサイズの制限はなくなります。 mx が指定されない場合は、 デフォルトの制限として 1000 ブロックが使われます。

注記:

この制限はジョブ中の各 ファイルに対して適用されるものであり、 ジョブ全体のサイズ を制限するものではありません

ところで、 プリンタに設定された上限値を超えるファイルサイズの ファイルが入力された場合でも、LPD はこれを拒否しません。その代わりに、このファイルは、 その先頭から上限値のファイルサイズまでしかキューに入れられません。 そして、その部分までが印字され、 残りの部分は捨てられます。 これが正しい動作といえるのかどうかは議論の余地があるところです。

それでは、設定例に登場しているプリンタ rattanbamboo の印字可能なファイルサイズに制限を加えてみましょう。 artists グループの人達が作る PostScript® ファイルのサイズは 巨大になる傾向があるので、上限値を 5M バイトとします。 それから、 プレインテキスト用のラインプリンタは無制限とします。

#
#  /etc/printcap for host rose
#

#
#  No limit on job size:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:mx#0:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

#
#  Limit of five megabytes:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
        :if=/usr/local/libexec/psif:\
        :df=/usr/local/libexec/psdf:

この場合もそうですが、この制限はローカル (ホスト rose) のユーザのみに適用されます。 リモートホストからプリンタを利用できるように設定している場合は、 そのリモートホストのユーザはこの制限を受けません。 これらのユーザにも制限を加える場合は、リモートホストの /etc/printcapmx を指定する必要があります。 リモートホストから印字するための詳しい情報については、 「 リモートホストに接続されたプリンタ」 を参照してください。

リモートホストに接続されたプリンタへのジョブの サイズを制限する特別な方法は他にもあります。これについては、 「 リモートホストからの利用を制限する」 を参照してください。

10.4.4.4. リモートホストからの利用を制限する

LPD スプーリングシステムでは、 リモートホストから要求されたジョブの印字を制限するための方法がいくつか提供されています。

ホストの制限

ローカルの LPD が印字要求を受け付けるリモートホストは、ファイル /etc/hosts.equiv/etc/hosts.lpd によって制御することができます。LPD では、あるホストから印字の要求がきたとき、 このホストの名前がこれら 2 つのファイルのどちらかに含まれている かどうかを調べます。これが含まれていない場合は、LPD はこの要求を拒否します。

これらのファイルの形式は単純です。 各行にホストの名前を 1つずつ書いていきます。ファイル /etc/hosts.equiv の方は ruserok(3) プロトコルでも利用され、 rsh(1)rcp(1) といったプログラムの動作に影響するので注意が必要です。 /etc/hosts.equiv の記述は慎重におこないましょう。

例として、以下にホスト rose/etc/hosts.lpd を示します。

orchid
violet
madrigal.fishbaum.de

この例では、rose はホスト orchid, violet そして madrigal.fishbaum.de からの要求を受け付けることになります。 その他のホストが roseLPD にアクセスしようとしても、 LPD はそのジョブを拒否します (訳注: 拒否されるのは、そのホストが /etc/hosts.equiv にも含まれていない場合です)。

サイズの制限

スプーリングディレクトリがある ファイルシステムに残しておく必要がある 空き容量の大きさを制御することができます。 ローカルプリンタ用のスプーリングディレクトリに minfree という名前のファイルを作成します。そして、 そのファイルの中にリモートホストからのジョブの 要求を受け付けるために必要な空き容量のディスクブロックサイズ (1 ディスクブロック = 512 バイト) を記します。

これで、 リモートホストのユーザにファイルシステムを満杯にされないことが保証されます。 この機能を使うと、 ローカルホストのユーザに対してある種の優先権を与えることもできます。 ローカルホストのユーザは、 minfree ファイルで指定された値よりもディスクの空き容量が下回った後でもずっと、 ジョブをキューに入れることができるのです。

たとえば、プリンタ bamboo 用の minfree を作ってみましょう。 このプリンタのスプーリングディレクトリを調べるために、 /etc/printcap を調べてみましょう。 以下に、bamboo のエントリ部分を示します。

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
        :if=/usr/local/libexec/psif:\
        :df=/usr/local/libexec/psdf:

スプーリングディレクトリは sd 項目で指定されます。LPD がリモートホストからのジョブを受け付けるために必要な ファイルシステムの空き容量を 3M バイト (= 6144 ディスクブロック) にすることにしましょう。

# echo 6144 > /var/spool/lpd/bamboo/minfree
              
利用ユーザの制限

/etc/printcaprs 項目を指定することで、 ローカルプリンタを利用できるリモートホストのユーザを制限することができます。 ローカルホストに接続されたプリンタ用のエントリに rs 項目が指定されている場合、 LPD は、印字を要求したユーザのアカウントと同じログイン名が ローカルホストに登録されている場合に限り、 そのジョブを受け付けます。それ以外のジョブを LPD は拒否します。

この機能は、(たとえば) 複数の部署がネットワークを共有しており、 この内のあるユーザが部署の境界を越えて活動している場合には特に有用です。 そのようなユーザに対して、システムのアカウントを与えるだけで、 これらのユーザは自分が所属する部署のシステムから そのシステムに接続されているプリンタを使用することができます。 これらのユーザにはむしろ、 プリンタの使用だけを認め、 その他のコンピュータ資源を利用させたくないときは、 それらのユーザにはホームディレクトリを与えず、 ログインシェルはシェルとしては何の役にも立たない /usr/bin/false などを指定して、 これらのユーザのアカウントはプリンタ用の 形式的な ものとします。

10.4.5. プリンタの利用に対する課金

という訳で、印字するためには料金をとることが必要です。 取らない理由などありましょうか。紙やインクにはお金がかかります。 そして、プリンタの維持費もかかります。 プリンタには可動部分が搭載されており、 これらの部分は壊れやすいという傾向があります。 プリンタや、その利用形態、維持費について調査をし、1 ページ (1 フィート、1 メートルなど) 当たりにかかるコストを調べておいてください。 これに基づき、プリンタの利用に対する課金を、実際に、 どのように始めればよいのでしょうか。

さて、残念ながら、この部分に関しては LPD スプーリングシステムはほとんど役に立ちません。 課金は使用しているプリンタの種類、印字するもののファイルの形式、 プリンタの利用に対する課金での あなた自身の要求に大きく左右されます。

課金システムを実現するためには、プリンタのテキストフィルタ (プレインテキストのジョブに対して課金するため) と変換フィルタ (その他のファイル形式に対して課金するため) を変更して、 印字したページを数えたり、 プリンタに印字したページ数を取得するための要求を送る必要があります。 ただし、出力フィルタのみを利用している場合は、 課金をおこなうことができません。フィルタに関しては、 「 フィルタ」をご覧ください。

一般に、課金方式には次の 2 つがあります。

  • 定期的に課金する方法 はよく利用される方法です。この理由は、 恐らく比較的簡単に実現できるからです。 誰かがジョブを印字する度に、フィルタはそのユーザ名、 ホスト名、印字したページ数を課金データファイルに記録します。 毎月、毎学期、毎年、その他お好みの時期に、 各プリンタの課金用ファイルを集め、 それぞれのユーザが印字したページ数を合計して その分の課金をおこないます。 次回の課金期間をデータを 0 にして課金を再開するために、 すべてのログファイルを削除します。

  • 利用毎に課金する方法 はあまり利用されていません。これは、 実現するのが比較的難しいからです。この方式では、 プリンタを使用したらすぐに、 フィルタがユーザにその利用に対する課金をおこないます。 ディスククォータのように、課金作業は瞬時におこなわれます。 この方式では、ユーザのアカウントが赤字になる場合に、 ユーザが印字をおこなうことを拒否することができます。 また、ユーザに プリンタ版 quota を調べたり、 調整したりする方法を提供したいと思うかもしれ ません。 これを実現するためには、ユーザとその quota を追跡するために、 あるデータベース用のコードが必要となります。

LPD スプーリングシステムでは、 どちらの方式にも簡単に対応できます。(ほとんどの場合は) フィルタを用意しなければならないので、 課金作業のためのコードも用意しなければなりません。 しかし、明るい面もあります。 それは、課金方式に関して、非常に大きな柔軟性が与えられたということです。 たとえば、「定期的に課金する方法」か、 「利用毎に課金する方法」のどちらかを選びまず、そして、 どんな情報 (ユーザ名、ホスト名、ジョブのタイプ、印字された頁数、 使用した紙の大きさ、印字をするために要した時間など) をログに記録するかを決めます。 以上のことをおこなうには、上記の情報を保持するために、 フィルタを変更しなくてはなりません。

10.4.5.1. 手軽なプリンタ課金方法

FreeBSD には、「定期的に課金する方法」による課金を すぐに設定できるように、2 個のプログラムを添付しています。 その内の1つはテキストフィルタ lpf で、 これについては、「 テキストフィルタ lpf」をご覧ください。もう1つは、 pac(8) で、 これはプリンタの課金データファイルからのエントリを集め、 これを合計するプログラムです。

フィルタはどのように機能しているか」で述べたように、 LPD ではテキストフィルタや変換フィルタを起動しますが、 そのコマンドラインで使用している課金データファイルの名前が指定されます。 両フィルタはこの引数を使って、 どの課金データファイルのエントリに書き込めばよいのかを知ることができます。 このファイルの名前は /etc/printcap 中の af 項目によって指定されます。 このファイルが絶対パ スで指定されない場合は、 スプーリングディレクトリからの相対パスとして扱われます。

LPD は、紙のページの幅と行数 (pwpl 項目で 指定される) を引数として lpf を起動します。lpf フィルタでは、 何ページ印字したかを決定するためにこれらの引数を使用します。 ファイルをプリンタに送った後、 課金情報を課金データファイルに書き込みます。 このファイルは次のようになります。

2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhang

課金データファイルはプリンタ毎に分けて作るべきです。 これは、lpf にはファイルをロックする機構が組み込まれていないためです。 したがって、lpf が 2 つ起動されたとき、 同じファイルに同時に書き込みをおこなった場合、 お互いのエントリを破壊してしまうかもしれません。 課金用ファイルを各プリンタ毎に確実に分けるには、 /etc/printcap 中の af=acct 項目を使います。 そうすれば、それぞれの課金用ファイルがプリンタのスプーリングディレクトリに、 acct という名称で作成されます。

プリンタの利用に対してユーザに課金する準備ができたら、 pac(8) プログラムを実行してください (課金したいプリンタのスプーリングディレクトリに移動した後、 pac と入力してください)。 次のような、ドル中心主義の課金リストが表示されます (訳注: ドル中心主義という表現は、 表示がドルで出ることへの著者の皮肉でしょう。 セントがあるので小数点以下が表示されますが、 この機能も日本では邪魔ですね)。

  Login               pages/feet   runs    price
orchid:kelly                5.00    1   $  0.10
orchid:mary                31.00    3   $  0.62
orchid:zhang                9.00    1   $  0.18
rose:andy                   2.00    1   $  0.04
rose:kelly                177.00  104   $  3.54
rose:mary                  87.00   32   $  1.74
rose:root                  26.00   12   $  0.52

total                     337.00  154   $  6.74

pac(8) が受け付ける引数には次のようなものがあります。

-Pprinter

プリンタ printer の利用に対する課金リストを作成します。 このオプションは、/etc/printcapaf が絶対パスで指定されていた場合に限り、動作します。

-c

ユーザ名のアルファベット順ではなく、 課金額の低い順にリストを並べます。

-m

課金データファイルにあるホスト名を無視します。 このオプションを使用すると、ホスト alpha のユーザ smith とホスト gamma のユーザ smith は同一人物として扱われます。 このオプションが指定されない場合は、 両者は別なユーザとして扱います。

-pprice

/etc/printcappc 項目で指定された値、または、 デフォルトの値 (2 セント) に代わり、紙1ページ、または、 1フィート当たりの価格を指定します。 price として、 浮動小数点数を指定することができます。

-r

リストの並べる順番を逆順にします。

-s

課金リストを作成し、 課金データファイルを削除します。

name

ユーザ names に対する課金情報のみを表示します。

pac(8) が生成するデフォルトのリストには、 各ホストのユーザ別に印字ページ数が表示されます。 (ユーザがサイト内のすべてのホストを使用できるため) ホスト名の情報が意味を持たない場合、 pac -m を実行してください。次のようなリストが得られます。

  Login               pages/feet   runs    price
andy                        2.00    1   $  0.04
kelly                     182.00  105   $  3.64
mary                      118.00   35   $  2.36
root                       26.00   12   $  0.52
zhang                       9.00    1   $  0.18

total                     337.00  154   $  6.74

課金額を決めるために、 pac(8)/etc/printcap ファイルの pc 項目で指定された値 (デフォルト値は 200、すなわち 1 ページ当たり 2 セント) を使います。この項目で、印字物に課金したい ファと思う 1 ページ当たり、 または、1 フィート当たりの価格を 100 分の 1 セン