Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The FreeBSD Documentation Project
FreeBSD へようこそ! このハンドブックは FreeBSD 6.4-RELEASE と FreeBSD 7.2-RELEASE のインストールおよび、日常での使い方について記述したものです。 本ハンドブックは改編作業中であり、 さまざまな人々が編集に携わっています。 いま存在するセクションの中には情報が古くなってしまったため、 更新作業の必要があるものも含まれています。 もし、このハンドブックを編集するプロジェクトに協力したいとお考えなら、 FreeBSD documentation project メーリングリスト まで電子メールを(英語で)送ってください。 この文書の最新バージョンは、いつでも 日本国内版の FreeBSD ウェブサイト および FreeBSD ウェブサイト から入手できます (この文書の以前のバージョンは http://docs.FreeBSD.org/doc/ から入手できます)。 また、他のさまざまな文書形式、圧縮形式のものが FreeBSD FTP サーバ や数多くの ミラーサイト からダウンロードできます。 このハンドブックの書籍版 (英語版) は、 FreeBSD Mall から購入できます。 また、ハンドブックの検索 を行なうこともできます。
FreeBSD ハンドブック日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクト
(FreeBSD doc-jp) がおこなっています。 ハンドブックの日本語訳に関することは FreeBSD
日本語ドキュメンテーションプロジェクト <doc-jp@jp.FreeBSD.org>
において日本語で議論されています。
文書の日本語訳に関するお問い合わせや、
文書の原文に関する問い合わせをしたいが英語が得意でないという方は FreeBSD
日本語ドキュメンテーションプロジェクト <doc-jp@jp.FreeBSD.org>
まで、日本語でコメントをお寄せください。
Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.
Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Important: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FreeBSD は The FreeBSD Foundation の登録商標です。
3Com および HomeConnect は 3Com Corporation の登録商標です。
3ware および Escalade は 3ware Inc. の登録商標です。
ARM は ARM Limited の登録商標です。
Adaptec は Adaptec, Inc. の登録商標です。
Adobe, Acrobat, Acrobat Reader および PostScript は アメリカ合衆国および/またはその他の国の Adobe Systems Incorporated の登録商標または商標です。
Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime および TrueType は Apple Computer, Inc. の商標で、 アメリカ合衆国およびその他の国で登録されています。
Corel および WordPerfect は カナダ、アメリカ合衆国および/またはその他の国における Corel Corporation および/またはその関連会社の商標または登録商標です。
Sound Blaster は アメリカ合衆国および/またはその他の国における Creative Technology Ltd. の商標です。
CVSup は John D. Polstra の登録商標です。
Heidelberg, Helvetica, Palatino, and Times Roman はアメリカ合衆国およびその他の国における Heidelberger Druckmaschinen AG の登録商標または商標です。
IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 および ThinkPad は アメリカ合衆国および/またはその他の国における International Business Machines Corporation の商標です。
IEEE, POSIX および 802 は アメリカ合衆国における Institute of Electrical and Electronics Engineers, Inc. の登録商標です。
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium および Xeon はアメリカ合衆国およびその他の国における Intel Corporation またはその関連会社の商標または登録商標です。
Intuit および Quicken は アメリカ合衆国およびその他の国における Intuit Inc. またはその関連会社の 登録商標です。
Linux は Linus Torvalds の登録商標です。
LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID および Mylex は LSI Logic Corp. の商標または登録商標です。
M-Systems および DiskOnChip は M-Systems Flash Disk Pioneers, Ltd. の商標または登録商標です。
Macromedia, Flash および Shockwave は アメリカ合衆国および/またはその他の国における Macromedia, Inc. の商標または登録商標です。
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media および Windows NT は アメリカ合衆国および/またはその他の国における Microsoft Corporation の登録商標または商標です。
Netscape および the Netscape Navigator は アメリカ合衆国およびその他の国における Netscape Communications Corporation の登録商標です。
GateD および NextHop は アメリカ合衆国およびその他の国における NextHop の登録商標および商標です。
Motif, OSF/1 および UNIX は アメリカ合衆国およびその他の国における The Open Group の登録商標で、 IT DialTone および The Open Group は同じく商標です。
Oracle は Oracle Corporation の登録商標です。
PowerQuest および PartitionMagic は アメリカ合衆国およびその他の国における PowerQuest Corporation の登録商標です。
RealNetworks, RealPlayer および RealAudio は RealNetworks, Inc. の登録商標です。
Red Hat, RPM は アメリカ合衆国およびその他の国における Red Hat, Inc. の商標または登録商標です。
SAP, R/3 および mySAP は ドイツおよび世界中のいくつもの国における SAP AG の登録商標です。
Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS および Ultra は アメリカ合衆国およびその他の国における Sun Microsystems, Inc. の 商標または登録商標です。
Symantec および Ghost は アメリカ合衆国およびその他の国における Symantec Corporation の 登録商標です。
MATLAB は The MathWorks, Inc. の登録商標です。
SpeedTouch は Thomson の商標です。
U.S. Robotics および Sportster は U.S. Robotics Corporation の登録商標です。
VMware は VMware, Inc. の商標です。
Waterloo Maple および Maple は Waterloo Maple Inc. の商標または登録商標です。
Mathematica は Wolfram Research, Inc. の登録商標です。
XFree86 は The XFree86 Project, Inc. の商標です。
Ogg Vorbis および Xiph.Org は Xiph.Org の商標です。
製造者および販売者が製品を区別するのに 用いている表示の多くは、商標とされています。 この文書に登場する表示のうち FreeBSD Project がその商標を確認しているものには、その表示に続いて “™” または “®” 記号がおかれています。
最初の部分は FreeBSD を使い始めた人向けで、FreeBSD のインストールの 過程を手引きし、UNIX® の基礎となっている概念や慣習を丁寧に紹介します。 この部分に取り組むために必要なのは、探究心と、紹介された新たな概念を 理解する能力だけです。
その次の、ハンドブックのはるかに大きな部分では、FreeBSD システム 管理者が興味を抱くあらゆる種類の話題が分かりやすく言及されています。 一部の章は、その章の前に読んでおくべきことが推奨されており、各章の 始めの概要で述べられています。
さらなる情報源の一覧は、Appendix B をご覧ください。
第 2 版は、FreeBSD ドキュメンテーションプロジェクトの献身的な メンバーによる 2 年以上に渡る作業の頂点に立つものです。 この新たな版における主な変更は、次のようなものです。
完備した索引が追加されました。
ASCII キャラクタによる図はすべて画像に置き換えられました (訳注: 日本語版は作業中です)。
各章に、章に記載されている内容と、読者に期待される予備知識が すぐに分かるように、一定の内容の概要が付け加えられました。
内容は、“始めに”、“システム管理”、 “付録” の 3 つの論理的な部分に再構成されました。
Chapter 2 (“FreeBSD のインストール ”) は新規ユーザーが文章の内容を理解しやすいように多くの スクリーンショットを入れて完全に書き直されました (訳注: 日本語版は作業中です)。
Chapter 3 (“UNIX の基礎知識 ”) には、 プロセス、デーモン、シグナルに関する情報が追加されました。
Chapter 4 (“アプリケーションのインストール”) には、バイナリパッケージの管理に関する情報が追加されました。
Chapter 5 (“The X Window System”) は、 XFree86™ 4.X 上で KDE や GNOME のような近代的な デスクトップテクノロジーを利用することに力点をおいて、 完全に書き直されました。
Chapter 12 (“FreeBSD の起動プロセス”) が拡張されました。
Chapter 15 (“ストレージ”) は、 “ディスク” と “バックアップ” の 2 つの 章に分かれていたものをまとめて書き直されました。私たちは、 この話題は 1 つの章にまとめて示した方が分かりやすいと感じています。 RAID (ハードウェアとソフトウェアの両方) に関する節も追加されました。
Chapter 18 (“シリアル通信”) は FreeBSD 4.X/5.X 向けに一から再構成されました。
Chapter 19 (“PPP と SLIP”) は大幅に更新されました。
Chapter 21 (“高度なネットワーク”) に、多くの新しい節が追加されました。
Chapter 20 (“電子メール”) に、 sendmail の設定についてより多くの 情報が加えられました。
Chapter 10 (“Linux バイナリ互換機能”) には、Oracle® や SAP® R/3® のインストール情報が加えられました (訳注: 日本語版は作業中です)。
この第 2 版では、以下の新たな話題が扱われています。
設定とチューニング (Chapter 11)
マルチメディア (Chapter 7)
この文書は 3 部構成になっています。 第 1 部導入では、FreeBSD のインストールと 基本的な使い方を扱います。各章は順に読むことを想定していますが、 馴染み深い話題を扱った章は飛ばしてもよいでしょう。 第 2 部システム管理は、より上級の FreeBSD ユーザの関心をひく話題を広く扱っています。 各章の始めにはその章が何を扱っていて、 読者にどんな予備知識が期待されるかを簡潔に述べた概要がおかれています。 これは、その章に関心のない読者がそこを飛ばして興味のある章を 見つけられるようにするためです。 第 3 部は参考情報からなる付録です。
新規ユーザに FreeBSD を紹介します。ここでは、FreeBSD プロジェクトの歴史、目標と開発モデルについて述べています。
インストール過程を一通りユーザに案内しています。 また、シリアルコンソール経由でのインストールのような 高度な話題もいくらか扱っています。
FreeBSD オペレーティングシステムの基本的なコマンドや 機能を扱っています。Linux やその他の UNIX 風のものに馴染んでいたら、 この章を飛ばしても構わないでしょう。
FreeBSD の革新的な “Ports Collection” および 標準的なバイナリパッケージによるサードパーティアプリケーションの インストールについて説明しています。
X Window System 全般と、特に FreeBSD 上での XFree86 の利用について述べています。 また、KDE や GNOME のような 一般的なデスクトップ環境にも触れています。
システム管理者が FreeBSD システムを調整して最適な性能を 引き出すのに利用できるパラメータについて述べています。また、 FreeBSD で利用されている様な設定ファイルと そのありかも解説しています。
FreeBSD の起動プロセスを解説し、このプロセスを 設定オプションで制御する方法を説明しています。
ユーザアカウントの生成、操作について述べています。また、 ユーザーに課すことができる資源の制限や その他のアカウント管理作業について議論しています。
どのような場合に新たにカーネルを構成する必要があるかを説明し、 カスタムカーネルのコンフィグレーション、構築、 インストールについて詳しく説明しています。
FreeBSD システムを安全に保つために役立つ Kerberos, IPsec, OpenSSH, ネットワークファイアウォールといった 利用可能な様々なツールについて説明しています。
FreeBSD におけるプリンタの取り扱いを説明しています。たとえば、 バナーページ、プリンターの課金、初期設定といったことです。
FreeBSD でストレージメディアやファイルシステムを どう扱うかを説明しています。対象は、物理ディスク、RAID アレイ、 光学およびテープメディア、メモリベースのディスク、 ネットワークファイルシステムなどです。
FreeBSD を英語以外の言語で使う方法を説明しています。 システムとアプリケーション両方のレベルの地域化を扱っています。
Web ブラウザや生産性向上ツールのような 一般的なデスクトップアプリケーションをいくつか挙げ、 FreeBSD におけるインストール方法を説明しています。
システムを音声やビデオ再生に対応させるためにどう設定するかを 説明します。また、音声やビデオアプリケーションも例示しています。
FreeBSD システムに端末やモデムを、 ダイヤルインまたはダイヤルアウト用に接続する方法を説明しています。
FreeBSD で、PPP, SLIP や PPP over Ethernet を使って リモートシステムに接続する方法を説明しています。
LAN 上の他のコンピュータとインターネット接続の共有、 ネットワークファイルシステムの利用、NIS 経由のアカウント情報の共有、 ドメインネームサーバの設定等々、 ネットワークに関する様々な話題を取り扱っています。
電子メールサーバの構成要素をそれぞれ説明し、 最もよく使われているメールサーバソフトウェアである sendmail について、 単純な設定をとりあげています。
FreeBSD-STABLE, FreeBSD-CURRENT と FreeBSD のリリースの 違いを説明します。どんなユーザにとって開発システムを追随するのが 有用かを述べ、その方法の概要をまとめています。
FreeBSD の Linux バイナリ互換機能を説明しています。また、 Oracle, SAP R/3, Mathematica® といった人気の高い Linux アプリケーションのインストールを詳しく説明しています。
FreeBSD を収録した CDROM や DVD の様々な入手先や、 FreeBSD をダウンロードしてインストールできるインターネット上の サイトを挙げています。
この文書は、もっと詳しい説明が欲しくなるかもしれない さまざまな題目について触れています。参考図書には、このハンドブックで 参照している、多くの素晴らしい本が挙げられています。
FreeBSD ユーザが FreeBSD について質問したり、技術的な 議論に参加できる、多くの公開された場について説明しています。
多くの FreeBSD 開発者の PGP fingerprint を載せています。
一貫して読みやすい文章を提供するために、この文書全体では以下の 表記法が用いられています。
イタリック体 のフォントは、ファイル名、URL, 強調表現、技術用語の最初の使用を表すのに使われています。
等幅等幅フォントは、エラーメッセージ、
コマンド、環境変数、ports の名称、ホスト名、ユーザ名、 グループ名、デバイスの名称、変数、
コードの断片を表すのに使われています。
太字のフォントは、 アプリケーション、コマンド、キーを表すのに使われています。
文章の他の部分と区別するため、キーは太字で 示されています。同時に押すことを意図したキーの組み合わせは、キーの間に `+' を入れて表されます。たとえば
Ctrl+Alt+Del
は、ユーザーが Ctrl, Alt それから Del キーを同時に 押すことを意図しています。
順に押すことを意図したキーは、カンマで区切って表されます。 たとえば
Ctrl+X, Ctrl+S
は、ユーザーが Ctrl キーと X キーを同時に押してから、 Ctrl キーと S キーを同時に押すことを 意図しています。
E:\> で始まる例は、MS-DOS® コマンドを表しています。特に注釈がなければ、それらのコマンドは最近の Microsoft® Windows® の “コマンドプロンプト” 環境でも 実行できます。
E:\> tools\fdimage floppies\kern.flp A:
# で始まる例は、FreeBSD 上でスーパーユーザ権限で 実行しなければならないコマンドを示しています。そのコマンドを入力するには、 root としてログインするか、 通常のアカウントでログインして、スーパーユーザ権限を取得するために su(1) を使います。
# dd if=kern.flp of=/dev/fd0
% で始まる例は、通常のユーザアカウントで実行するべき コマンドを示しています。特に断りのない限り、環境変数の設定やその 他のシェルコマンドには C シェルの文法が使われています。
% top
あなたが手にしている文書は、 世界中の何百人もの人々の努力の賜物です。 誤字脱字の修正を送ったのか、文章を丸々投稿したのかによらず、 すべての貢献が役に立ちました。
多くの会社が、 著者らを雇用してフルタイムでこの文書に取り掛かれるようにしたり、 出版費用を出したりして、この文書を作り上げるのを援助してくれました。 特に、BSDi (その後 Wind River Systems に買収されました) は、フルタイムでこの文書の改善作業をするように FreeBSD ドキュメンテーションプロジェクトのメンバーを雇用し、それが 2000 年 3 月の最初の出版 (ISBN 1-57176-241-8) につながりました。 その後、Wind River Systems は、印刷出力の仕組みを整備し、 章を追加するために著者を何名か追加で雇用してくれました。この作業は、 2001 年 11 月の第 2 版の 出版 (ISBN 1-57176-303-1) に結実しました。
FreeBSD ハンドブックの第 1 部はユーザと FreeBSD が初めての管理者向けです。各章の内容は以下のとおりです。
FreeBSD の紹介
インストールの手順の解説
UNIX の基礎
FreeBSD で利用できる豊富なサードパーティ製のアプリケーションの インストール方法
UNIX におけるウィンドウシステム X、 およびクリエイティブなデスクトップ環境の設定の詳細の紹介
このハンドブックでは頻繁にページを飛すことなく前から後へと スムーズに読み進めるように、 後方への参照を極力抑えるようにしています。
FreeBSD に興味を持っていただきありがとうございます! この章では FreeBSD の歴史、目標、開発モデルなど、 FreeBSD プロジェクトに関するさまざまな事柄を扱います。
この章に書かれている話題は、次のようなものです。
FreeBSD とその他のオペレーティングシステムとの違い
FreeBSD プロジェクトの歴史
FreeBSD プロジェクトの目標
FreeBSD オープンソース開発モデルの基本的な考え方
そして、“FreeBSD” という名前の由来について
FreeBSD は、4.4BSD-Lite から派生したオペレーティングシステムで、 Intel (x86 および Itanium®), AMD64, Alpha™, Sun UltraSPARC® コンピュータに対応しています。 他のアーキテクチャに対する移植も進行中です。 FreeBSD の歴史や、 現在のリリースについても読むことができます。 プロジェクトへの何らかの貢献 (ソースコード、ハードウェア、 資金の提供など) について興味があれば、 FreeBSD への貢献をご覧ください。
FreeBSD には多くの注目すべき機能があります。 例を挙げれば以下のようになります:
優先度を動的に調節する機能を備えることで アプリケーションとユーザとの間で円滑かつ公平な コンピュータ資源共有を実現し、 特に高い負荷にも耐えることができる堅牢さを備えた プリエンプティブマルチタスキング。
多くの人々が 1 つの FreeBSD システムをさまざまな目的で同時に使うことを可能にする マルチユーザ機能。 これは例えば、プリンタやテープデバイスといったシステムの周辺機器が、 そのシステムを利用する全てのユーザだけでなく ネットワーク経由においても自然な形で共有され、 さらに重要なシステム資源の使い過ぎを防ぐために 個々の資源に対する制限がユーザ単位、 グループ単位で設定できる、というようなことを意味しています。
SCTP や DHCP, NFS, NIS, PPP, SLIP, IPsec, IPv6 といった業界標準規格のサポートを含んだ堅固な TCP/IP ネットワーキング。 これによって、FreeBSD マシンが商用サーバと同じように相互に運用でき、 NFS (リモートファイルアクセス) や、 電子メールサービスのような極めて重要な機能を提供します。 また、WWW や FTP, ルーティング、ファイアウォール (セキュリティ) サービスを用いてインターネットと接続できます。
アプリケーション (あるいはユーザ) がお互いに干渉できない ようにするメモリ保護機能。 アプリケーションがクラッシュしても、 どのような場合でも他のアプリケーションには影響を与えません。
FreeBSD は 32ビット のオペレーティングシステム (Alpha 版、Itanium 版、AMD64 版および UltraSPARC 版は 64 ビット) であり、 最初からそのようにこつこつと設計されました。
業界標準である X Window システム (X11R7) は、普通の VGA カードやモニタでグラフィカルユーザインタフェース (GUI) を提供し、すべてのソースコードも一緒に提供されます。
Linux や SCO, SVR4, BSDI, NetBSD 用に作られた多くのプログラムとの バイナリ互換性。
何千ものすぐに実行可能な アプリケーションが FreeBSD の ports や packages コレクションで利用可能です。 ここに用意されているものはネットを探し回る必要がありません
インターネット上で入手可能な、 移植が容易な 何千ものアプリケーションを追加できます。FreeBSD は最も評判のよい商用の UNIX システムとソースコードレベルで互換性があります。 このため、ほとんどのアプリケーションは、 もしあったとしてもほんの少しの変更でコンパイルすることができます。
デマンドページング仮想メモリ とそれに “付随の VM/buffer キャッシュ” の設計は、 多くのメモリを要求するアプリケーションに対して 効率よくメモリを与えるようにする一方で、 他のユーザに対しても対話的な応答を維持します。
複数の CPU を搭載したマシンにおける SMP 機能のサポート。
完全な C や C++, Fortran の開発ツール。進んだ研究や開発のための多くの他の言語も ports や packages コレクションで提供されています。
システム全体のソースコード が提供されているので、 要求に合わせて環境を最大限に適合させることができます。 真のオープンシステムが利用できるのですから、 所有権のある解決方法に締めつけられ、 ベンダのなすがままになる必要はありません。
膨大な量の オンラインドキュメント。
もう書ききれません!
FreeBSD はカリフォルニア大学バークレイ校の Computer Systems Research Group (CSRG) による 4.4BSD-Lite リリースを基にしており、 BSD システムの開発の優れた伝統を守り続けています。 CSRG による素晴らしい活動に加えて、 FreeBSD プロジェクトは何千時間もの時間を注ぎ込んで、 実際の使用の場において最大の性能と信頼性を 発揮するためにシステムのチューニングをおこなっています。 多くの大企業が PC オペレーティングシステムの分野で 実現しようと奮闘しているそのような機能や性能、信頼性を FreeBSD は今すぐ提供できます!
あなたの思いつく限りのアプリケーションは、何でも FreeBSD で実行できます。ソフトウェア開発からファクトリオートメーション、 在庫制御から遠く離れた人工衛星のアンテナの方向調整まで; 商用 UNIX 製品でできることは、FreeBSD でも十分にできるのです! また、FreeBSD は世界中の研究センターや大学によって開発される 文字通り何千もの高品質で、たいていはほとんど無料で利用できる アプリケーションによる恩恵を得ることができます。 商用のアプリケーションも提供されており、 日々増え続けています。
FreeBSD のソースコードは広く提供されているので、 システムも特別なアプリケーションやプロジェクトに合わせて、 いくらでもカスタマイズすることができます。 これは有名な商業ベンダから出ているほとんどのオペレーティング システムでは不可能なことです。以下に現在 FreeBSD を 使っている人々のアプリケーションの例をいくつか上げます:
インターネットサービス: FreeBSD に組み込まれている 頑強な TCP/IP ネットワーキング機能は次のようなさまざまな インターネットサービスの理想的なプラットフォームになります:
FTP サーバ
World Wide Web サーバ (標準、もしくは安全な [SSL])
IPv4 および IPv6 ルーティング
ファイアウォールと NAT (“IP マスカレード”) ゲートウェイ
電子メールサーバ
USENET ニュースおよび電子掲示板システム
さらにいろいろ…
FreeBSD を利用すれば、小規模で安価な 386 クラスの PC でも気軽に導入することができますし、 事業の成長に合わせてアップグレードした 4 つの Xeon プロセッサと RAID ストレージデバイスを備えたシステムでも、 全くそのまま使うことができるのです。
教育: あなたは、計算機科学または関連分野の工学を専攻する学生さんですか? オペレーティングシステムやコンピュータアーキテクチャ、 ネットワークについて学習するなら、 実際に FreeBSD のソースコードを読んで、 それがどのように動作するのかを学ぶのが一番よい方法です。 また、無料で利用できる CAD や数学、 グラフィックデザインのパッケージがいくつもあるので、 コンピュータに関わる主要な目的が、 他のことをすることにある方にも、 大いに役立ちます。
研究: システム全体のソースコードが利用できるため、 FreeBSD はオペレーティングシステムの研究だけでなく、 計算機科学の他の部門においても優れたプラットフォームです。 自由に利用できる FreeBSD の特長は、オープンフォーラムで 議論される特別なライセンスの同意や制限について心配することなく、 離れたグループでもアイディアや開発の共有による共同研究を可能にします。
ネットワーキング: 新しいルータが必要? ネームサーバ (DNS) は? 内部のネットワークを人々から守るファイアウォールは? FreeBSD はすみに眠っている使われていない 386 や 486 の PC を簡単に 洗練されたパケットフィルタリング機能を持つ高級なルータに 変えることができます。
X Window ワークステーション: 自由に利用できる X11 サーバを使うことによって、 安価な X 端末として FreeBSD を使うこともできます。 X 端末とは違って FreeBSD は多くのアプリケーションをローカルに走らせることもでき、 中心のサーバの負荷を軽減することも可能です。 FreeBSD は“ディスクレス”でもブート可能であり、 個々のワークステーションを安価で、 容易に管理することさえ可能にします。
ソフトウェア開発: 基本的な FreeBSD システムには、有名な GNU の C/C++ コンパイラやデバッガを含んだ完全な開発ツールがついてきます。
FreeBSD は、ソースとバイナリの両方とも、CD-ROM または anonymous FTP で入手可能です。 詳しくは Appendix A をご覧ください。
FreeBSD は、以下に代表されるような世界最大クラスの IT 会社のデバイスおよび製品のプラットフォームとして利用されています。
FreeBSD は、以下のサイトに代表されるような、 インターネット上で最大クラスのサイトでも利用されています。
また、この他にもあります。
以下の節では簡単な歴史やプロジェクトの目標、 開発モデルなど、普段は表にでない話題を提供しています。
FreeBSD プロジェクトは 1993 年の始めに “Unofficial 386BSD Patchkit” の最後の 3 人のまとめ役によって、部分的に patchkit から派生する形で開始されました。ここでの 3 人のまとめ役というのは、Nate Williams と、Rod Grimes と、私 (Jordan K. Hubbard) です。
私たちのもともとの目標は、patchkit という仕組みではもう十分に解決できなくなってしまった 386BSD の数多くの問題を修正するための、386BSD の暫定的なスナップショットを作成することでした。 こういった経緯を経ているので、 このプロジェクトの初期の頃の名前が “ 386BSD 0.5 ” や “386BSD 暫定版 (Interim)” であったということを覚えている人もいるでしょう。
386BSD は、Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成したオペレーティングシステムです。当時の 386BSD は、ほぼ一年にわたって放っておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) というひどい状況に苦しんでいました。 作者の代わりに問題を修正し続けていた patchkit は日を追うごとに不快なまでに膨張してしまっていました。 このような状況に対して、このままではいけない、 何か行動を起こさなければ、 ということで異議を唱えるものは私たちのなかにはいませんでした。 そして私たちは挑戦することを決断し、 暫定的な “クリーンアップ” スナップショットを作成することで Bill を手助けしようと決めたのです。しかし、 この計画は唐突に終了してしまいました。Bill Jolitz が、 このプロジェクトに対する受け入れ支持を取り下げることを突然決意し、 なおかつこのプロジェクトの代わりに何をするのかを一切言明しなかったのです。
たとえ Bill が支持してくれないとしても、 われわれの目標には依然として やる価値があると決心するのにさしたる時間はかかりませんでした。 そこで David Greenman が考案した名称 “FreeBSD” を私たちのプロジェクトの名前に採用し、 新たなスタートを切りました。 この時点でのプロジェクトの初期目標は、すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者たちと相談して決められました。 プロジェクトが実現に向けて軌道に乗ってきたことが明確になった時点で、 私は Walnut Creek CDROM 社に連絡してみました。CD-ROM を使って FreeBSD を配布することによって、 インターネットに容易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考えたからです。Walnut Creek CDROM 社は FreeBSD を CD で配布するというアイデアを採用してくれたばかりか、 作業するためのマシンと高速なインターネット回線を私たちのプロジェクトに提供してくれました。 当時は海のものとも山のものともわからなかった私たちのプロジェクトに対して、Walnut Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで、 FreeBSD は短期間のうちにここまで大きく成長したのです。
CD-ROM による最初の配布 (そしてネットでの、 ベータ版ではない最初の一般向け配布) は FreeBSD 1.0 で、1993 年 12 月に公開されました。これはカリフォルニア大学バークレイ校の 4.3BSD-Lite (“Net/2”) を基とし、386BSD や Free Software Foundation からも多くの部分を取り入れたものです。 これは初めて公開したものとしては十分に成功しました。続けて 1994 年 5 月に FreeBSD 1.1 を公開し、 非常に大きな成功を収めました。
この時期、 あまり予想していなかった嵐が遠くから接近してきていました。 バークレイ Net/2 テープの法的な位置づけについて、Novell 社とカリフォルニア大学バークレイ校との間の長期にわたる 法廷論争において和解が成立したのです。和解の内容は、Net/2 のかなりの部分が “権利つき (encumbered)” コードであり、それは Novell 社の所有物である、 というバークレイ校側が譲歩したものでした。なお、Novell 社はこれらの権利を裁判が始まる少し前に AT&T 社から買収していました。 和解における譲歩の見返りにバークレイ校が得たのは、 4.4BSD-Lite が最終的に発表された時点で、 4.4BSD-Lite は権利つきではないと公式に宣言されること、 そしてすべての既存の Net/2 の利用者が 4.4BSD-Lite の利用へと移行することが強く奨励されること、という Novell 社からの “ありがたき天からの恵み” でした (訳注: 4.4BSD-Lite はその後 Novell 社のチェックを受けてから公開された)。FreeBSD も Net/2 を利用していましたから、1994 年の 7 月の終わりまでに Net/2 ベースの FreeBSD の出荷を停止するように言われました。ただし、 このときの合意によって、 私たちは締め切りまでに一回だけ最後の公開をすることを許されました。 そしてそれは FreeBSD 1.1.5.1 となりました。
それから FreeBSD プロジェクトは、まっさらでかなり不完全な 4.4BSD-Lite を基に、文字どおり一から再度作り直すという、 難しくて大変な作業の準備を始めました。“Lite” バージョンは、部分的には本当に軽くて、中身がなかったのです。 起動し、 動作できるシステムを実際に作り上げるために必要となるプログラムコードのかなりの部分がバークレイ校の CSRG (訳注: BSDを作っているグループ) によって (いろいろな法的要求のせいで) 削除されてしまっていたということと、4.4BSD の Intel アーキテクチャ対応が元々かなり不完全であったということがその理由です。 この移行作業は結局 1994 年の 11 月までかかりました。 そしてその時点で FreeBSD 2.0 をネットと CD-ROM (12 月末ごろ) を通じて公開しました。これは、 かなり粗削りなところが残っていたにもかかわらず、 かなりの成功を収めました。そしてその後に、より信頼性が高く、 そしてインストールが簡単になった FreeBSD 2.0.5 が 1995 年の 6 月に公開されました。
私たちは 1996 年の 8 月に FreeBSD 2.1.5 を公開しました。 この出来が非常に良く、特に業務で運用しているサイトや ISP での人気が高かったので、私たちは 2.1-STABLE 開発分流から更に公開をおこなうことにメリットがあると考えました。 それが FreeBSD 2.1.7.1 で、2.1-STABLE 開発分流の最後を締めくくるものとして、 1997 年の 2月に公開されました。2.1-STABLE 開発分流 (RELENG_2_1_0) は現在、 保守のみをおこなう状態になっており、今後は、 セキュリティの改善や他の何か重要なバグフィックスのみがおこなわれるでしょう。
FreeBSD 2.2 の開発は、RELENG_2_2 開発ブランチとして、 開発の本流 (“-CURRENT”) から 1996 年 11 月に分岐し、そして 1997 年 4 月に最初のリリース (2.2.1) が行なわれました。2.2 開発ブランチからは、さらに 97 年の夏と秋にリリースが行なわれ、 98 年 11 月に 2.2 開発ブランチの最終リリース (2.2.8) が行なわれています。1998 年 10 月に FreeBSD 3.0 最初の公式リリースが行なわれ、 2.2 開発ブランチは開発の終了を迎えることになりました。
1999 年 1 月 20 日には、FreeBSD の開発ツリーが 4.0-CURRENT と 3.X-STABLE の各ブランチに再び分岐しました。 3.X-STABLE からは 3.1 が 1999 年 2 月 15 日に、 3.2 が 1999 年 5 月 15 日に、 3.3 が 1999 年 9 月 16 日に、 3.4 が 1999 年 12 月 20 日に、 そして 3.5 が 2000 年 6 月 24 日にリリースされました。 3.5 はリリースの数日後、Kerberos に対するセキュリティ上の修正を組み込むために小規模な更新がなされ、 3.5.1 になりました。3.5.1 は、この 3.X ブランチにおける最終リリースになる予定です。
2000 年 3 月 13 日に 4.X-STABLE ブランチが作成されました。 このブランチからはこれまでいくつものリリースが公開されています。 2000 年 3 月に初めて 4.0-RELEASE が公開され、 最終版の 4.11-RELEASE は 2005 年 1 月 に公開されました。
長い間延期されていた 5.0-RELEASE は、2003 年 1 月 19 日にアナウンスされました。これは 3 年近くにわたる作業の集大成であり、 このリリースより、FreeBSD は先進的なマルチプロセッサとアプリケーションスレッドに対応し、 また、UltraSPARC と ia64 プラットフォームへの対応も始まりました。 これに続いて 5.1 が 2003 年 6 月に公開されています。 -CURRENT ブランチからの最後の 5.X リリースは 5.2.1-RELEASE で、 2004 年 2 月に公開されました。
2004 年 8 月に RELENG_5 ブランチが作成され、続いて 5.3-RELEASE が 5-STABLE ブランチからのリリースの始まりを飾りました。 最新の 5.5-RELEASE は 2006 年 5 月に公開されました。 今後 RELENG_5 ブランチからのリリースは行われません。
2005 年 7 月に RELENG_6 ブランチが作成され、 6.X ブランチの最初のリリースである 6.0-RELEASE は 2005 年 11 月に公開されました。最新の 6.4-RELEASE は Nov 2008 に公開されました。 今後 RELENG_6 ブランチからのリリースは行われません。
2007 年 10 月に RELENG_7 ブランチが作成され、 このブランチの最初のリリースである 7.0-RELEASE は 2008 年 2 月に公開されました。 このブランチからの最新の 7.2-RELEASE は May 2009 に公開されました。 RELENG_7 ブランチからのリリースは、引き続き行われる予定です。
長期的な開発プロジェクトは 8.X-CURRENT 開発ブランチ (トランク) で続けられ、 8.X のスナップショットリリースが収録された CD-ROM (もちろん、ネットワーク上でも) は、開発の進行状況に応じて スナップショットサーバ より継続して入手できます。
FreeBSD プロジェクトの目的は、いかなる用途にも使用でき、 何ら制限のないソフトウェアを供給することです。 私たちの多くは、 コード (そしてプロジェクト) に対してかなりの投資をしてきており、 これからも多少の無駄はあっても投資を続けて行くつもりです。ただ、 他の人達にも同じような負担をするように主張しているわけではありません。 FreeBSD に興味を持っている一人の残らず全ての人々に、 目的を限定しないでコードを提供すること。これが、 私たちの最初のそして最大の “任務” であると信じています。そうすれば、コードは可能な限り広く使われ、 最大の恩恵をもたらすことができるでしょう。これが、 私たちが熱烈に支持しているフリーソフトウェアの最も基本的な目的であると、 私は信じています。
私たちのソースツリーに含まれるソースのうち、 GNU 一般公有使用許諾 (GPL) または GNU ライブラリ一般公有使用許諾 (LGPL) に従っているものについては、多少制限が課せられています。ただし、 ソースコードへのアクセスの保証という、 一般の制限とはいわば逆の制限 (訳注1) です。 GPL ソフトウェアの商利用には、そのライセンスにある 複雑な側面が影響してくることがあります。 ですから私たちは、そうすることが合理的であると判断されたときには、 より制限の少ない、BSD 著作権表示を採用しているソフトウェアを選択するようにしています。
(訳注1) GPL では、「ソースコードを実際に受け取るか、 あるいは、希望しさえすればそれを入手することが可能であること」 を求めています。
FreeBSD の開発は非常に開かれた、柔軟性のあるプロセスです。 貢献者リスト を見ていただければわかるとおり、 FreeBSD は文字通り世界中の何百という人々の努力によって開発されています。 FreeBSD の開発環境は、 この何百という開発者がインターネット経由で共同作業できるようになっているのです。 新しい開発者はいつでも大歓迎ですので、FreeBSD technical discussions メーリングリスト にメールを送ってください。 FreeBSD announcements メーリングリスト もありますので、他の FreeBSD ユーザに自分のやっていることを宣伝したい時にはどうぞ使ってください。
あと、FreeBSD プロジェクトとその開発プロセスについて、 どなたにも知っていていただきたいのは以下のようなことです。
長年にわたり FreeBSD のソースツリーは CVS (Concurrent Versions System) によってメンテナンスされてきました。 CVS はソースコード管理用のフリーソフトウェアで、 FreeBSD のリリースにも含まれています。 2008 年 6 月、プロジェクトはソースコード管理のシステムを SVN (Subversion) に移行しました。 ソースツリーの急速な増加や、 これまでに蓄積された膨大な量の履歴によって、 CVS の持つ技術的な限界が明かになってきたためです。 メインリポジトリは SVN によって管理されますが、 SVN リポジトリにおける変更点は CVS に反映されるので、 CVSup や csup といった CVS のクライアントツールはこれまで通り正常に動きます。 現在はベースシステムのみが SVN を採用し、 ドキュメント、World Wide Web および Ports レポジトリは、 これまでと同じく CVS によって管理されています。 FreeBSD の メインリポジトリは米国カリフォルニア州のサンタクララ市に存在し、 そこから世界中のたくさんのミラーサイトにコピーされています。 -CURRENT と -STABLE が含まれている SVN ツリーそのものは、 あなたのマシンにも簡単に取ってくることができます。 これについては ソースツリーの同期の章をご覧ください。
コミッター (committers) は CVS ツリーへの書き込み権限を持っている人、 FreeBSD のソースに変更を加えることができる人です (CVS でリポジトリに変更を加えるには cvs(1) commit というコマンドを使うので、 これらの人々は英語では “committers” と呼ばれます)。 開発者にコードを送って見てもらうのに一番いい方法は send-pr(1) コマンドを使うことです。 もし、何か問題があって send-pr が使えないなら FreeBSD committer's メーリングリスト にメールを送っていただいても構いません。
FreeBSD コアチーム は FreeBSD プロジェクトが会社だとすると取締役会にあたるものです。 コアチームとして一番重要な役割は FreeBSD プロジェクトが全体としてよい方向に向かっていることを確認することです。 責任感あふれる開発者を上記のソースツリー管理者として招くこと、 また仕事上の都合などでコアチームをやめた人たちの後任を見つけることもコアチームの役割です。 現在のコアチームは FreeBSD 開発者 (committer) の中から 2008 年 7 月に選挙によって選出されました。 コアチームを選出するための選挙は、2 年ごとに行なわれています。
コアチームのうち何人かは特定の担当分野を持っており、 システムのうち一部に特に重点をおいて面倒を見ています。 FreeBSD 開発者と担当分野の完全なリストは コントリビュータのリストをご覧ください。
Note: 忘れてほしくないのは、 コアチームのほとんどは FreeBSD に対してボランティアの立場であり、 FreeBSD プロジェクトからは何ら金銭的な支援を受けていない、 ということです。ですから、 ここでの“責任”は “保証されたサポート”ではありません。 そういう意味で、上記の“取締役会” という例えはあまりよくないかもしれません。むしろ、FreeBSD のために人生を棒に振ってしまった人の集まりといった方が正しいかも…。
最後になりますが、 もっとも重要で多数をしめる開発者はフィードバックやバグフィクスをどんどん送ってくれるユーザ自身です。 FreeBSD の開発に関わっていきたいという人は、 議論の場である FreeBSD technical discussions メーリングリスト に参加するとよいでしょう。 FreeBSD 関連メーリングリストに関する詳細は、 Appendix C をご覧ください。
FreeBSD への貢献者リスト は日に日に長くなっています。 あなたも今日、何か送ることからはじめてみませんか?
もちろん FreeBSD に貢献するには、 コードを書くほかにもいろいろな方法があります。 助けが求められている分野については、 FreeBSD プロジェクトのウェブサイトをご覧ください。
ひとことで言うと、FreeBSD の開発組織はゆるやかな同心円状になっています。 ともすると中央集権的に見えがちなこの組織は、 FreeBSD のユーザがきちんと管理されたコードベースを 容易に追いかけられるようにデザインされているもので、 貢献したいという人を締め出す意図は全くありません! 私たちの目標は安定したオペレーティングシステムと 簡単にインストールして使うことのできる アプリケーションを提供することです。 この方法は、それを達成するために非常にうまくはたらきます。
これから FreeBSD の開発にたずさわろうという人に、 私たちが望むことはただ一つです。 FreeBSD の成功を継続的なものにするために、 現在の開発者と同じような情熱を持って接してください!
FreeBSD は自由に利用でき、 Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (とその互換品), Xeon™, DEC Alpha Sun UltraSPARC ベースのコンピュータで動作する、 4.4BSD-Lite ベースの全ソースつきのリリースです。 これはもともとカリフォルニア大学バークレイ校 CSRG グループのソフトウェアがベースとなっており、NetBSD, OpenBSD, 386BSD, そして Free Software Foundation の ソフトウェアなどにより拡張されています。
1994 年末の FreeBSD 2.0 のリリースからみると、FreeBSD は性能、 機能、安定性の面で劇的に改善されました。 もっとも大きな変化は仮想メモリシステムに おける改良で、 統合化された VM/file バッファキャッシュを用いることで性能を向上させながらも FreeBSD のメモリの使用量を減らすことができたことです。そのおかげで、最低 5 MB メモリという制約上でも動作するようになりました。 その他の拡張としては、NIS のクライアントとサーバの完全なサポート、 トランザクション TCP のサポート、ダイヤルオンデマンド PPP, 統合された DHCP のサポート、改良された SCSI サブシステム、 ISDN, ATM, FDDI, Fast Ethernet や Gigabit Ethernet (1000 Mbit) アダプタへの対応、最新の Adaptec コントローラ対応の改良や、 数百件におよぶバグの修正などがあります。
FreeBSD では基本配布セットに加え、 移植されたソフトウェア集として数千の人気の高いプログラムを提供しています。 この文書を印刷している時点で 20,000 以上の ports (移植ソフトウェア) が存在します。 ports には http (WWW) サーバから、ゲーム、言語、 エディタまでありとあらゆるものが含まれています。 ports はオリジナルソースに対する “差分”という形で表現されており、 Ports Collection 全体でも 417 MB 程度にしかなりません。 こうすることで ports の更新を容易にし、昔の 1.0 Ports Collection が要求したディスクスペースよりも少なくて済むようになります。 ports をコンパイルするには、 インストールしたいと思っているプログラムのディレクトリに移動し、 make install とすると、 あとはすべてシステムがやってくれます。 どの ports もオリジナルの配布セットを動的に CD-ROM や近くの FTP サーバから取ってくるので、 ディスクは構築したいと思っている ports の分だけを準備しておけば十分です。 ほとんどの ports は、すでにコンパイルされた状態で “package” として提供されており、 ソースコードからコンパイルしたくない場合、これを使うと (pkg_add というコマンドで) 簡単にインストールできます。 package と ports に関する詳細は、 Chapter 4 をご覧ください。
最近の FreeBSD マシンであれば、 /usr/share/doc というディレクトリに、インストールの手順や FreeBSD を利用する上で有用なドキュメントがたくさんあります。 これらのローカルにインストールされたドキュメントは、HTML ブラウザを使って、以下の URL から 参照することができます。
また、 http://www.FreeBSD.org/ にはマスタ (かなり頻繁に更新されます) がありますので、 こちらも参照してください。
改訂: Jim Mock <jim@FreeBSD.org>, 2000 年 1
月.
この章では, あなたのシステムに FreeBSD をインストールする方法について説明しています. FreeBSD は, CD-ROM, フロッピーディスク, 磁気テープ, MS-DOS パーティション, (モデムや LAN を経由できるなら) anonymous FTP や NFS を通じてインストールすることができます.
どのインストール方法を利用する場合も, まず 次のセクションで説明する インストールディスクの作成から始める必要があります. あなたが今すぐにインストールするつもりがなくとも, このディスクでコンピュータを起動すれば, あなたのハードウェアを FreeBSD で利用する上で重要な情報を得ることができます. また, その情報はどのインストール方法が利用できるのかについての判断材料にもなりますし, さらに, 後々起こるかも知れない問題を解決する手がかりにもなるでしょう.
もし anonymous FTP を使用してインストールすることを考えているなら, 必要な作業はインストールフロッピーを用意することだけです. インストールプログラムは自動的に, 他に必要なものを用意してくれます.
FreeBSD の入手に関する詳しい情報は, 付録の FreeBSD の入手方法 をご覧ください.
さて, これまでの説明では, まだ具体的に何をすれば良いのかはっきりしないと思います. 続いて, 次のインストールガイドへ進んでください.
この節では FreeBSD のインストールの準備から, 実際にインストールするところまでをひととおり解説しています. もし, 何か足りないな, と思われる部分に気付かれましたら, FreeBSD documentation project メーリングリスト まで電子メールでお知らせください.
訳注: FreeBSD documentation project メーリングリスト へのメールは英語でお願いします. 日本語訳に関するお問い合わせや, 英語でのやりとりが不安な方は 日本語ドキュメンテーションプロジェクト
<doc-jp@jp.FreeBSD.org>まで日本語でお問い合わせください.
FreeBSD をインストールするには, その前にさまざまな準備作業が必要になります. これから, それぞれのインストール方法に対して どのような下準備が必要かを説明します.
まず最初に, あなたの使っているハードウェアが FreeBSD でサポートされているかどうか確認しなければなりません. これには, サポートされている設定一覧 の節が便利です. ;-) SCSI コントローラやイーサネットアダプタ, サウンドカード等, あなたのマシンが装備している“拡張カード”のリストを作っておくと良いでしょう. このリストには割り込み番号 (IRQ) や IO ポートのアドレスといった, 拡張カードの設定に関する内容も書いておきます.
何枚かのフロッピーディスクを用意します. これらのディスクは あなたのコンピュータを起動して, インストーラを起動するのに使用します. この手順は, あなたのシステムが CDROM からの起動をサポートしていて, CDROM からインストールを行う場合には必要ありません. もしそうでなければ, 起動用のフロッピーが必要です.
Note: あなたのシステムが CDROM からの起動をサポートしているかどうかわからない場合は, 試してみてください. 普通にドライブに CDROM を入れてシステムを再起動します. その際, システムがハードディスクよりも先に CDROM から起動を試みるように, BIOS の設定を変更する必要が あるかも知れません.
Tip: もしあなたが CDROM を持っていても, ファイルをダウンロードすることには意味があります. それは, CD がリリースされた後に FreeBSD のインストーラのバグが見つかった場合, FTP サイトのイメージは速やかに修正されるからです. 当たり前のことですが, プレスされた後の CD が修正されることはありません.
起動フロッピーイメージの入手
イメージは .flp という拡張子のファイルです. FreeBSD の CD-ROM を持っている場合は, floppies サブディレクトリの中にあります. また, FreeBSD の FTP サイトの floppies ディレクトリおよび, そのミラーサイトからイメージをダウンロードすることも可能です.
ファイルの名前は (時々) FreeBSD のリリースによって, またインストールを行うアーキテクチャによっても異なります. FTP サイトにあるインストール用起動ディスクのイメージに関する説明において, あなたが必要とするファイルに関する最新の情報が提供されています.
フロッピーディスクの準備
ダウンロードしたイメージファイル一つに対して, 欠陥の無いフロッピーディスクを一枚用意する必要があります. 欠陥が無いことを確認する簡単な方法は, ディスクをフォーマットしてみることです. フォーマット済みで販売されているフロッピーディスクを信頼してはいけません.
Important: FreeBSD をインストールしようとした時に, インストーラがクラッシュもしくはフリーズしてしまったり, 不正な振る舞いをする場合にまず疑わなければならないのは, 起動フロッピーです. 別のディスクにイメージファイルを書き込んで, もう一度試してみてください.
イメージファイルのフロッピーディスクへの書き込み
kern.flp というイメージファイルは, ディスクにコピーする通常ファイルではありません. これらはディスク全体の内容を含んだイメージファイルです.
したがって, DOS の copy のような コマンドを使用してファイルを書き込むことはできません. これには, イメージを直接ディスクに書き込む特別なツールを使用する必要があります.
もし DOS が動いているコンピュータ上でフロッピーを作成する場合は, わたしたちが提供する fdimage というツールを使用します.
E: にある CD-ROM を利用して起動フロッピーを作成するには, 次のようにします.
E:\> tools\fdimage floppies\kern.flp A:
これをそれぞれの .flp ファイルに対して 毎回新しいフロッピーディスクに入れ換えながら繰り返します. コマンドは .flp の存在する場所に応じて調整してください. もし CD-ROM を持っていない場合には, FreeBSD の FTP サイトの tools ディレクトリから fdimage をダウンロードすることができます.
(他の FreeBSD システムなどの) UNIX システム上で 起動フロッピーに書き込む場合は, dd(1) コマンドが利用できます. FreeBSD 上でなら, コマンドの実行は次のようになるでしょう.
# dd if=kern.flp of=/dev/rfd0
FreeBSD 上で /dev/rfd0 は 一台目のフロッピーディスク (A: ドライブ) を表し, /dev/rfd1 は同様に, 二台目のフロッピーディスク (B: ドライブ) を表します. 他の異なる UNIX システムでは, フロッピーディスクのデバイスに 違う名前が使われているかも知れません. 必要に応じて, それぞれのシステムに付属する文書を参照する必要があるでしょう.
あなたの CDROM ドライブが FreeBSD でサポートされない型である場合は, MS-DOS パーティションのセクションをご覧ください.
BSDi の FreeBSD CD-ROM からインストールする場合は, 準備作業のすべてを行なう必要はありません (その他の CDROM でもそうだと思いますが, わたしたちはその CDROM の構成を知りませんので, 確実にそうかどうかはわかりません). Walnut Creek の CD-ROM に収録されている install.bat で直接 FreeBSD を起動することもできますし, makeflp.bat で起動フロッピーディスクをつくることも可能です.
CD が El Torrito 規格の起動をサポートしていて, あなたのシステムが CDROM から直接起動する機能をサポートしているなら (多くの古いシステムは サポートしていません), 単に FreeBSD の CD の一枚目をドライブに CD を入れてシステムを再起動してください. すると CD から直接起動して, インストールメニューが表示されます.
MS-DOS パーティションからインストールするつもりでいて, CD ドライブにアクセス可能なドライバが組み込まれているなら, CDROM に入っている install.bat スクリプトを起動してください. これは, DOS から直接 FreeBSD のインストールへと進みます.
Note: これは本当の DOS から行なわなければいけません (たとえば DOS モードで起動するなど). Windows の DOS プロンプトからでは駄目です.
(DOS から) 最も簡単なインタフェースを使うには, view と入力してください. すると DOS メニューユーティリティが起動し, 可能なすべてのインストール方法の選択ができるようになります.
UNIX システム上で起動フロッピーを作成する場合は, このガイドのインストールフロッピーの作成のセクションを参照してください.
DOS から, もしくはフロッピーディスクからの起動が完了したら, インストールプログラムでインストールメディアとして CDROM を選択することができるようになっているはずです. すべての配布ファイルは, CDROM から読み込まれますので, 他の種類のインストールメディアは不要です.
システムのインストールがすべて終わって (ハードディスクから) 再起動したら, 次のように入力することで, いつでも CDROM をマウントすることができます:
# mount /cdrom
CD をドライブから取り出す前にはまず, 必ずアンマウントする必要があります. アンマウントは次のコマンドで行なうことができます.
# umount /cdrom
単純にドライブから取り出さないように!
Note: インストールに入る前に CD-ROM をドライブに入れておいて, インストールフロッピーディスクが立ち上がるときに CD-ROM を見つけられるようにしておくようにしましょう. CD-ROM をデフォルトでシステムにつけ加えたい場合も CD-ROM を入れておきます (インストールメディアとして実際に CDROM を選択しない場合も同様).
おわりに, あなたのマシンの CD-ROM を直接使って, FTP 経由で別のマシンに FreeBSD をインストールさせたいとします. やり方は簡単です. あなたのマシンのインストールが終了した後に, vipw コマンドを使って, passwd ファイルに以下の行を追加します.
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
こうするとあなたのマシンにネットワーク接続できる人 (そして, login 許可を持っている人) は, メディアタイプとして FTP を選択できるように なります. 具体的には, FTP サイトの選択メニューから ``Other'' を選択して, ftp://あなたのマシンのアドレス を入力します.
Note: もしインストールの途中であなたのシステムの anonymous FTP を有効にしたなら, 上の設定はインストーラが自動的に 行います.
あなたがフロッピーディスクからのインストールをしなくては ならない場合 (私たちはこの方法を とらない ことを強く提案します), その理由はハードウェアがサポートされてなかったためか, 単にいばらの道を通ることを楽しんでいるからでしょうが, インストール用の フロッピーディスクを用意する必要があります.
最低でも bin (基本配布ファイル) ディレクトリ内のすべてのファイル を入れられるだけの 1.44 メガバイトか 1.2 メガバイトのフロッピーディスク が必要です. これらのフロッピーディスクを DOS で作成している場合は, フロッピーディスクは「MS-DOS の FORMAT コマンドでフォーマット」 されなくてはなりません. Windows をお使いの場合は, Windowsのエクスプローラを使用してディスクを 初期化してください. (A: ドライブを 右クリックして, "フォーマット"を選択します).
工場での初期化済みディスクを「信用しないでください」. 念のためにあなた 自身でフォーマットし直してください. ユーザからのトラブル報告の多くは ちゃんと初期化されていないディスクを 使用していたことが原因となっています. 私が特にフォーマットし直してくださいと述べているのも, この理由からです.
他の FreeBSD マシンでフロッピーディスクを作成している場合, フォーマットすることは悪いことではありません. いちいち DOS ファイルシステムのフロッピーディスクを作成する必要は ありませんので, disklabel コマンドと newfs コマンドを使って, 次のような手順で (3.5 インチ 1.44 メガバイトディスク用の) UFS ファイルシステムを 作成することもできます.
# fdformat -f 1440 fd0.1440 # disklabel -w -r fd0.1440 floppy3 # newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0
Note: 5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" と "floppy5" にしてください
これで他のファイルシステムと同様に mount して書き込むことができます.
フォーマットされたフロッピーディスクを用意したら, それらにファイル をコピーしなくてはなりません. 配布ファイルはいくつかのかたまり にわかれていて, これらのかたまり五つで一般的な 1.44 メガバイトの フロッピーディスクに収まるようになっています. フロッピーディスクに 入るだけファイルを入れていって, 配布ファイルをすべてコピーしてください. それぞれの配布ファイルはサブディレクトリに コピーする必要があります. たとえば, a:\bin\bin.aaや, a:\bin\bin.abのようになります.
インストールメディアの選択場面になったら, “Floppy” を選択して, 残りの指定をやってください.
ハードディスクの MS-DOS パーティションからインストールするときは, まずファイルを c:\freebsd にコピーします. CD-ROM にあるディレクトリ構造を反映してコピーしなくてはなりません. そこで, DOS の xcopy コマンドの使用をおすすめします. たとえば, FreeBSD の最低限のインストールをするには, このような手順で コピーします.
C:\> md c:\FreeBSD C:\> xcopy e:\bin c:\FreeBSD\bin\ /s C:\> xcopy e:\manpages c:\FreeBSD\manpages\ /s
ここで, C: ドライブには十分なディスクスペースが残っており, CD-ROM は E: ドライブに接続されているものとします.
CDROM ドライブを持っていない場合, ftp.FreeBSD.org から配布ファイル (DISTS) をダウンロードすることができます. それぞれの配布ファイル (DISTS) は, それぞれ独自の ディレクトリに入っています; たとえば, bin 配布ファイルは 7.2/bin ディレクトリにあります.
MS-DOS からたくさんの配布ファイル (DISTS) をインストールしたい (そしてディスクの余裕がある) 場合は, それぞれ c:\freebsd ディレクトリにコピーします -- BIN 配布ファイルは, 最低限必要なものです.
テープからのインストールは, おそらく FTP を利用したオンライン インストールか, CD-ROM を利用したインストールができない場合の, もっとも簡単な方法でしょう. インストールプログラムは, 以下のような コマンドを使用して, 単純に配布ファイルがテープ上に tar されていることを 期待しています.
# cd /freebsd/distdir # tar cvf /dev/rwt0 dist1 ... dist2
インストールに入る前に, テンポラリ (一時使用) ディレクトリに 十分なディスクスペースを確保して, 作成したテープのすべての ファイルを格納できることを確認してください (テンポラリディレクトリは 自分で選ぶことができます). テープの特性上, ランダムにアクセスするこ とができませんので, 一時的に極めて大量の容量を必要とします. テープに準備しただけの量のディスクスペースを 一時的に使用することに 留意してください.
Note: インストールに入るときは, 起動フロッピーディスク から立ち上げる 前 にテープをドライブに入れておかなくてはなりません. さもないとインストール時のデバイス検出のときにテープを 見つけられません.
三つの物理的な接続形態で, ネットワーク経由のインストールを おこなうことができます. シリアルポート (SLIP もしくは PPP), パラレルポート (PLIP (laplink ケーブル使用)), またはイーサネット (標準的なイーサネットコントローラ (いくつかの PCMCIA カードにも対応)) を使用することができます.
SLIP のサポートはまだまだ原始的とも呼べる方法なので, ラップトップと 他のコンピュータをシリアルケーブルで接続するといった具合いに, 直接接続してなくてはいけません. SLIP インストールは, ダイヤル機能を 持っていませんので, インストールするためには直接接続しなくてはなりません. PPP インストールではダイヤルアップ接続が可能ですので, できれば PPP 接続の 方を選択しましょう.
もしもあなたがモデムを使用しているなら, あなたに残された選択肢は ほぼ間違いなく PPP インストールでしょう. インストール時に必要になりますので, サービスプロバイダ (ISP) に関する情報を用意しておきましょう.
PPP ダイヤルの際は, とてもシンプルな端末エミュレーターで 作業することになります. もし ISP に接続するのに PAP や CHAP を用いるなら (言い換えると, もしあなたが Windows で ISP に接続する時に スクリプトを使用していないのであれば), dial と ppp のプロンプトに対して入力 するだけでいいです. しかしそれ以外の場合は, お手持ちのモデムで ISP にダイヤルするための``ATコマンド''の使い方を 知っておく必要があります. これ以上の情報については, handbook や FAQ のユーザー PPP エントリーを参照してください. 問題が起きた場合には, set log local ... コマンドを用いてログを画面に吐くこともできます.
FreeBSD (2.0R 以降) の動いている別のマシンと直接接続が可能でしたら, “laplink” パラレルポートケーブルで接続することを考えてみましょう. パラレルポート経由のデータ転送スピードは, シリアルラインでの 一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので, 高速にインストールすることができます.
最後になりますが, ネットワークインストールのうちでもっとも高速なものとしては イーサネットアダプタを使用するのがあげられます. FreeBSD ではきわめて多くの PC イーサネットカードをサポートしています. サポートされている カードの表 (と, 必要な設定) は, サポートされているハードウェア に書いてあります. サポートされている PCMCIA カードを使っている場合には, ラップトップの電源を 入れる「前」に差し込んでおくことにも注意してください. 残念ながら今の FreeBSD は, インストール時の活線挿抜には対応していません.
ネットワークでの IP アドレス, あなたのアドレスクラスに対応した ネットマスク, マシン名を知っておくことも必要です. PPP 接続を利用したインストールを行いたいけれども固定 IP アドレスを持っていないという場合は, ISP が自動的に IP アドレスを割り当てます. ネットワーク管理者の方に たずねればどんな値を使ったらよいかを教えてくれるでしょう. もしも他のホストを IP アドレスではなくて名前で引きたい場合, ネームサーバとゲートウェイ のアドレスも知らなくてはなりません (PPP をご使用の場合は, プロバイダの IP アドレスになります). HTTP proxy (下記参照) 経由で FTP インストールを行いたい場合は, proxy サーバのアドレスも必要になります. これらのうちのすべて, またはいくつかを 知らない場合は, イーサネット経由でのインストールを始める前に「まず」 ネットワーク管理者に相談してください.
NFS インストールはまったく単純明解です. FreeBSD の配布ファイルを サーバの好きな場所にコピーしておいて, メディア選択で NFS を選択します.
もしサーバが “privileged (特権) ポート” へのアクセスのみをサポート している場合, (Sun ワークステーションの標準ではこうなっています) インストールを進める前に Options メニューを選択して, ``privileged port'' オプションを選択してください.
イーサネットカードの性能が悪くて, 転送速度が遅くて困っている場合も, 適当な Options を選択するとよいでしょう.
NFS 経由でインストールするためには, サブディレクトリも 含めたマウントにサーバが対応している必要があります. たとえば, FreeBSD 7.2 の配布ファイルが ziggy:/usr/archive/stuff/FreeBSD にあるとすると, マシン ziggy では /usr や /usr/archive/stuff だけではなく, /usr/archive/stuff/FreeBSD の直接マウントが可能に なっていなければなりません.
FreeBSD の /etc/exports ファイルでは, このことは -alldirs オプションによって制御されています. 他の NFS
サーバの場合だとまた話が違ってくるかもしれません. もしもサーバから “permission
denied” というメッセージが 返ってくるようでしたら,
サブディレクトリマウントをちゃんと 有効にできていないことが考えられます.
FTP 経由のインストールは, FreeBSD 7.2 の最新バージョンを ミラーしているどのサイトからでも可能です. 世界中の妥当な FTP サイトの 選択肢をメニューに並べておきました.
このメニューに出ていない他の FTP サイトからインストール する場合や, ネームサーバの設定に問題が生じた場合は, メニューでサイト ``Other'' を選ぶところで, お好みの URL でサイトを指定することができます. URL として直接 IP アドレスで指定してもよく, 直接指定した場合はネームサーバ がなくても FTP インストールが可能になります. たとえば, 以下のようにします.
ftp://209.55.82.20/pub/FreeBSD/7.2-RELEASE
FTP 経由のインストールを行う場合, active, passive, HTTP proxy 経由の三種類のモードが利用できます.
すべての FTP 転送の際に “Active” モードを使用します. ファイアウォール内部のマシンではうまく動きませんが, passive モードをサポートしていない古い FTP サーバでも 動作します. passive モードでの FTP 転送 (こちらが デフォルトです) が失敗した場合は, active を使ってください.
すべての FTP 転送の際に “Passive” モードを使用します. このモードを使用することで, ランダムポートアクセスインを 許さないファイアウォールを 越えることができるようになります.
この方法では, (ウェブブラウザと同様に) HTTP プロトコルを使って proxy サーバに接続し, FTP の操作を実現します. proxy サーバは FTP 要求を (訳注: HTTP から FTP に) 変換して FTP サーバに送るため, ファイアウォールが FTP 接続を禁止していても, HTTP proxy サーバが提供されていれば ファイアウォールを超えた FTP 接続を行なうことが可能です. この方法を用いる場合は, FTP サーバの他に proxy サーバを指定する必要があります.
Note: FTP proxy には HTTP proxy タイプでないものもありますが, そういったタイプは非常にまれです. どちらであるかわからないような場合は大抵, 上で述べている HTTP proxy タイプであると考えて良いでしょう.
通常 proxy FTP サーバに対しては, ユーザ名の一部として “@” 記号に続いて実際に接続したいサーバの名称を与える必要が あります. そうすると proxy サーバは本当のサーバの「ふり」 をするようになります. たとえば: ftp.FreeBSD.org から ポート番号 1234 で要求を待つ proxy FTP サーバ foo.bar.com を使って インストールしたいとします.
この場合では, 「オプション」メニューで FTP username を ftp@ftp.FreeBSD.org, パスワードとして自分の電子メールアドレス を指定します. インストールメディアとして FTP (または proxy サーバがサポートしていれば passive FTP), URL を以下のようにします: ftp://foo.bar.com:1234/pub/FreeBSD
ftp.FreeBSD.org の /pub/FreeBSD に対する FTP 要求については foo.bar.com が代理で処理をおこなうことになり, むこう のマシンからインストールすることができます (インストール時 の要求により ftp.FreeBSD.org からファイルをもってきます).
BIOS の, ケーブルのつなぎ直しを必要としない番号の 付け替え機能を利用している場合は, 混乱しないように, まずはじめに Section 15.1 を読んでください.
ここまでのインストールの準備段階を状況に応じて完全に行うと, FreeBSDをインストールする準備が整います.
何かうまくいかなかった場合は, あなたが使おうとしている インストールメディアのことが書いてある箇所まで戻って もう一度読むとよいでしょう. おそらく最初読んだときに 見落していた, 有効なヒントがあるものと思います. ハードウェアの問題が出てきたとか, FreeBSD がまったく 立ち上がらない場合は, boot フロッピーディスクに提供されている Hardware Guide を読んで, 何か解決方法はないか探してください.
FreeBSD の起動フロッピーディスクには, インストールをおこなうために 必要と思われるすべてのオンラインドキュメントを用意してあります. もしもそのドキュメントがお望みのものでないようでしたら, 私たちはあなたが何にもっとも困っているのかを知りたいと思います. コメントを FreeBSD documentation project メーリングリスト にお送りください. FreeBSD のインストールプログラム (sysinstall) を, うっとうしい “step-by-step” ガイドなしに, プログラム自身で使用方法がわかるようにするのが最終目標です. 目標達成までには時間がかかりそうですが, ともかくそれが 目標なのであります :-)
閑話休題. ここに, “典型的なインストールの手順” を まとめてみましたので, お役にたてるものと思います.
kern.flp を書き込んだフロッピーで 起動します. その後, 指示に従ってこれを取り出し, mfsroot.flp を書き込んだフロッピーを ドライブに入れ return キーを叩きます. ハードウェアの性能に よりますが, 起動には 30秒から 3分かかります. 起動したら 初期選択画面が出てくるでしょう. もしも kern.flp からまったく起動 しなかったり, どこかの段階で起動が止まってしまった 場合は, ハードウェアガイド の Q&A を読んで, 理由を探ってみます.
F1 キーを叩きます. メニューシステムとインストールプログラム 全般に対しての使い方が表示されます. このメニューシステムを 使ったことがない場合は, 徹底的に読んでください.
Options を選択し, 他に必要な特別な選択を おこないます.
典型的なインストールでおまかせしたいか, それぞれの段階をいちいちコントロールしたいか (可能であれば適切なデフォルトを使用して) 簡単にさっさと 済ませたいかによってそれぞれ, Standard, Custom, または Express を選択してください. FreeBSD を初めて使う方には, Standard を一番におすすめします.
final configuration メニューからは, メニュー形式のさらに 進んだ設定をおこなうことができます. ネットワーク周りの 設定は, 特に CD-ROM / テープ / フロッピーディスクから インストールして, まだネットワーク設定をおこなっていない 人にとっては特に重要でしょう. インストールの時点できちんと 設定しておけば, ハードディスクからシステムを立ち上げ直した 時点でネットワーク接続ができるようになっていることでしょう.
現在 FreeBSD は, ISA, VLB, EISA, PCI バスを搭載した, 386SX から Pentium クラス までのさまざまな種類の PC で動作します (386SX はおすすめではありません). IDE, ESDIドライブや, さまざまな SCSI コントローラ, ネットワークカードや シリアルカードにも対応しています. FreeBSD は IBM のマイクロチャネル (MCA) バスもまたサポートしています.
FreeBSD を走らせるには, 最低 8メガバイトの RAM が推奨されます. あなたのハードウェアによっては, それより少ないメモリでは 問題が発生する可能性があるため, 16メガバイトの RAM を推奨します.
以下のリストは, 現在 FreeBSD で動作が確認されているハードウェアの リストです. 他のハードウェアでも問題なく動いていると思いますが, 私たちのところには情報は入ってきていません.
WD1003 (あらゆる MFM/RLL)
WD1007 (あらゆる IDE/ESDI)
IDE
ATA
Adaptec 社製 1535 ISA SCSI コントローラ
Adaptec 社製 154X シリーズ ISA SCSI コントローラ
Adaptec 社製 174X シリーズ EISA SCSI コントローラ (スタンダード, エンハンスドモード)
Adaptec 社製 274X/284X/2920C/294X/2950/3940/3950 (Narrow/Wide/Twin) シリーズ EISA/VLB/PCI SCSI コントローラ
Adaptec 社製 AIC-7850, AIC-7860, AIC-7880, AIC-789X オンボード SCSI コントローラ
Adaptec 社製 1510 シリーズ ISA SCSI コントローラ (起動デバイスとしては使用できません)
Adaptec 社製 152X シリーズ ISA SCSI コントローラ
AHA-152X および SoundBlaster SCSI カードなどの Adaptec 社製 AIC-6260 および AIC-6360 を使用したボード.
AdvanSys 社製 SCSI コントローラ (全てのモデル).
BT-948, BT-958, BT-9580 などの BusLogic 社製 MultiMaster “W” シリーズホストアダプタ.
BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C, BT-540CF などの BusLogic 社製 MultiMaster “C” シリーズホストアダプタ.
BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A, BT-542B などの BusLogic 社製 MultiMaster “S” シリーズホストアダプタ.
BT-742A, BT-542B などの BusLogic 社製 MultiMaster “A” シリーズホストアダプタ.
BusLogic 社製 MultiMaster の完全なクローンである AMI 社製 FastDisk コントローラもサポートされます.
Note: BusLogic/Mylex 社製 “Flashpoint” アダプタはまだサポートされていません.
DPT 社製 SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV, および SmartRAID IV SCSI/RAID コントローラ. DPT 社製 SmartRAID/CACHE V はまだサポートされていません. DPT 社製 PM3754U2-16M SCSI RAID コントローラは サポートされています.
Compaq 社製 Intelligent Disk Array コントローラ: IDA, IDA-2, IAES, SMART, SMART-2/E, Smart-2/P, SMART-2SL, Integrated Array, および Smart Arrays 3200, 3100ES, 221, 4200, 4200, 4250ES.
ASUS 社製 SC-200, Data Technology 社製 DTC3130 (およびその変種すべて), Diamond 社製 FirePort (すべて), NCR 社製のカード (すべて), SymBios 社製のカード (すべて), Tekram 社製 DC390W, 390U, および 390F, それに Tyan 社製 S1365 などの SymBios 社(旧 NCR 社)製 53C810, 53C810a, 53C815, 53C820, 53C825a, 53C860, 53C875, 53C875j, 53C885, および 53C896 PCI SCSI コントローラ
QLogic 社製 1020, 1040, 1040B, および 2100 など SCSI および Fibre Channel アダプタ
DTC 社製 3290 EISA SCSI コントローラの 1542 エミュレーションモード
サポートされている SCSI コントローラのすべてで, ハードディスク, 光ディスク, テープドライブ (DAT および 8mm Exabyte を含む), メディアチェンジャ, プロセッサターゲットデバイスおよび CD-ROM といった SCSI-I, SCSI-II 周辺機器が利用可能です. CDROM コマンドをサポートする WORM デバイスは, CDROM ドライバを使用することで読み込みアクセスのみサポートされます. WORM/CD-R/CD-RW への書き込みは Ports ツリーにある cdrecord によってサポートされます.
現在, 次にあげるタイプの CD-ROM ドライブがサポートされてます.
cd - SCSI インタフェース (ProAudio Spectrum および SoundBlaster SCSI を含む)
matcd - 松下 / Panasonic (Creative SoundBlaster) 独自のインタフェース (562/563 モデル)
scd - ソニー 独自のインタフェース (全モデル)
acd - ATAPI IDE インタフェース
以下のドライバは従来の SCSI サブシステムでサポートされていたものですが, 新しい CAM SCSI サブシステムではまだサポートされていません:
NCR5380/NCR53400 (“ProAudio Spectrum”) SCSI コントローラ
UltraStor 社製 14F, 24F, および 34F SCSI コントローラ
Seagate 社製 ST01/02 SCSI コントローラ
Future Domain 社製 8XX/950 シリーズ SCSI コントローラ
WD7000 SCSI コントローラ
Note: UltraStor 社製ドライバについては, 現在新しい CAM フレームワークへ移植作業中のものがあります. しかし, いつ完成するか, そもそも完成するのかどうか, わかりません.
次のドライバは保守されていないので動作しないかもしれません:
フロッピーテープ インタフェース (Colorado/Mountain/Insight)
mcd - Mitsumi 独自の CD-ROM インタフェース (全モデル)
Adaptec 社製 AIC-6195 Fast Ethernet コントローラチップを使用した Fast Ethernet アダプタ:
Adaptec 社製 Duralink PCI Fast Ethernet アダプタ
ANA-62011 64-bit シングルポート 10/100baseTX アダプタ
ANA-62022 64-bit デュアルポート 10/100baseTX アダプタ
ANA-62044 64-bit 4 ポート 10/100baseTX アダプタ
ANA-69011 32-bit シングルポート 10/100baseTX アダプタ
ANA-62020 64-bit シングルポート 100baseFX アダプタ
Allied-Telesys 社製 AT1700 および RE2000 カード
Alteon Networks 社製 PCI ギガビット Ethernet NIC など Tigon 1 および Tigon 2 チップセットを使用した ギガビットイーサネットカード. 他に Alteon 社製 AceNIC (Tigon 1 および 2), 3Com 社製 3c985-SX (Tigon 1 および 2), Netgear 社製 GA620 (Tigon 2), Silicon Graphics 社製 ギガビット Ethernet, DEC/Compaq 社製 EtherWORKS 1000, NEC 社製 ギガビット Ethernet
AMD 社製 PCnet/PCI (79c970 および 53c974 または 79c974)
RealTek 社製 8129/8139 を使用した Fast Ethernet NIC
Allied-Telesys 社製 AT2550
Allied-Telesys 社製 AT2500TX
Genius 社製 GF100TXR (RTL8139)
NDC Communications 社製 NE100TX-E
OvisLink 社製 LEF-8129TX
OvisLink 社製 LEF-8139TX
Netronix Inc. 社製 EA-1210 NetEther 10/100
KTX-9130TX 10/100 Fast Ethernet
Accton 社製 “Cheetah” EN1207D (MPX 5030/5038; RealTek 8139 クローン?)
SMC 社製 EZ Card 10/100 PCI 1211-TX
LinkSys 社製 EtherFast LNE100TX, NetGear 社製 FA310-TX Rev. D1, Matrox 社製 FastNIC 10/100, Kingston 社製 KNE110TX など Lite-On 社製 98713, 98713A, 98715 および 98725 を使用した Fast Ethernet NIC.
NDC Communications 社製 SFA100A (98713A), CNet 社製 Pro120A (98713 または 98713A), CNet 社製 Pro120B (98715), SVEC 社製 PN102TX (98713) など Macronix 社製 98713, 98713A, 98715, 98715A および 98725 を使用した Fast Ethernet NIC.
LinkSys 社製 EtherFast LNE100TX version 2 など Macronix/Lite-On 社製 PNIC II LC82C115 を使用した Fast Ethernet NIC
Trendware 社製 TE100-PCIE など Winbond 社製 W89C840F を使用した Fast Ethernet NIC
Hawking Technologies 社製 PN102TX および D-Link 社製 DFE-530TX など, VIA Technologies 社製 VT3043 “Rhine I” および VT86C100A “Rhine II” を使用した Fast Ethernet NIC
Silicon Integrated Systems 社製 SiS 900 および SiS 7016 を使用した PCI fast Ethernet NIC
D-Link 社製 DFE-550TX など Sundance Technologies 社製 ST201 を使用した PCI fast ethernet NIC
SysKonnect 社製 SK-984x を使用した PCI ギガビット Ethernet カード. SK-9841 1000baseLX (シングルモード Fiber, シングルポート), SK-9842 1000baseSX (マルチモード Fiber, シングルポート), SK-9843 1000baseLX (シングルモード Fiber, デュアルポート) および SK-9844 1000baseSX (マルチモード Fiber, デュアルポート) など.
Compaq 社製 Netelligent 10, 10/100, 10/100 Proliant, 10/100 デュアルポート, 10/100 TX Embedded UTP, 10 T PCI UTP/Coax および 10/100 TX UTP, Compaq 社製 NetFlex 3P, 3P Integrated および 3P w/BNC, Olicom 社製 OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP および Racore 社製 8165 10/100baseTX and 8148 10baseT/100baseTX/100baseFX multi-personality カード など Texas Instruments 社製 ThunderLAN を使用した PCI NIC
ADMtek 社製 AL981 および AN985 ベースの PCI Fast Ethernet NIC
Alfa Inc. 社製 GFC2204 および CNet 社製 Pro110B など ASIX Electronics 社製 AX88140A を使用した PCI NIC
DEC 社製 EtherWORKS III NIC (DE203, DE204 および DE205)
DEC 社製 EtherWORKS II NICs (DE200, DE201, DE202 および DE422)
DEC 社製 DC21040, DC21041 または DC21140 ベースの NIC (SMC 社製 Etherpower 8432T, DE245 およびその他のもの)
DEC 社製 FDDI (DEFPA/DEFEA) NIC
Efficient 社製 ENI-155p ATM PCI
FORE 社製 PCA-200E ATM PCI
富士通 社製 MB86960A/MB86965A
HP 社製 PC Lan+ カード (モデルナンバー: 27247B および 27252A)
Intel 社製 EtherExpress ISA (ドライバが不安定なため推奨しません)
Intel 社製 EtherExpress Pro/10
Intel 社製 EtherExpress Pro/100B PCI Fast Ethernet
Isolan 社製 AT 4141-0 (16 ビット)
Isolink 社製 4110 (8 ビット)
Novell 社製 NE1000, NE2000 および NE2100 Ethernet インタフェース
RealTek 社製 8029, NetVin 社製 5000, Winbond 社製 W89C940, Surecom 社製 NE-34, VIA 社製 VT86C926 など NE2000 をエミュレートする PCI ネットワークカード.
3Com 社製 3C501, 3C503 Etherlink II, 3C505 Etherlink/+, 3C507 Etherlink 16/TP, 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B/905C PCI および EISA (Fast) Etherlink III / (Fast) Etherlink XL, 3C980/3C980B Fast Etherlink XL サーバ アダプタ, 3CSOHO100-TX OfficeConnect アダプタ
東芝 Ethernet カード
IBM 社および National Semiconductor 社製 PCMCIA Ethernet カードもサポートされています.
様々な USB 接続の周辺機器がサポートされています. このリストに機種名は書かれていません. しかしいくつかの例外はありますが, ここに書かれている種類のほとんどすべてのデバイスが サポートされます.
USB キーボード
USB マウス
USB プリンタ および USB - パラレル プリンタ変換ケーブル
USB ハブ
マザーボードのチップセット:
ALi 社製 Aladdin-V
Intel 社製 82371SB (PIIX3) および 82371AB および EB (PIIX4) チップセット
NEC 社製 uPD 9210 ホストコントローラ
VIA 社製 83C572 USB ホストコントローラ
およびその他の UHCI または OHCI に準拠した マザーボードのチップセット (現在使用できないものは知られていません).
PCI プラグイン USB ホストコントローラ
ADS Electronics 社製 PCI プラグインカード (2 ポート)
Entrega PCI プラグインカード (4 ポート)
動作が報告されている個々の USB デバイス:
Agiler マウス 29UO
Andromeda ハブ
Apple iMac マウスおよびキーボード
ATen パラレルプリンタアダプタ
Belkin F4U002 パラレルプリンタアダプタ および Belkin 社製 マウス
マウスポートが付属した BTC 社製 BTC7935 キーボード
Cherry G81-3504
Chic マウス
Cypress マウス
Entrega USB - パラレル プリンタアダプタ
Genius 社製 Niche マウス
Iomega 社製 USB Zip 100 MB
Kensington 社製 Mouse-in-a-Box
Logitech 社製 M2452 キーボード
Logitech 社製 ホイールマウス (3 ボタン)
Logitech 社製 PS/2 / USB マウス (3 ボタン)
MacAlly 社製マウス (3 ボタン)
MacAlly 社製 self-powered ハブ (4 ポート)
Microsoft 社製 Intellimouse (3 ボタン)
Microsoft 社製キーボード
NEC 社製ハブ
Trust Ami マウス (3 ボタン)
Asuscom 社製 I-IN100-ST-DV (実験的なドライバ, おそらく動作します)
Asuscom 社製 ISDNlink 128K
AVM A1
AVM Fritz!Card classic
AVM Fritz!Card PCI
AVM Fritz!Card PCMCIA (現在は FreeBSD 3.x のみ)
AVM Fritz!Card PnP (現在は FreeBSD 3.x のみ)
Creatix ISDN-S0/8
Creatix ISDN-S0/16
Creatix ISDN-S0 PnP
Dr.Neuhaus Niccy 1008
Dr.Neuhaus Niccy 1016
Dr.Neuhaus Niccy GO@ (ISA PnP)
Dynalink 社製 IS64PH (保守されていません)
ELSA 社製 1000pro ISA
ELSA 社製 1000pro PCI
ELSA 社製 PCC-16
ITK ix1 micro (現在は FreeBSD 3.x のみ)
ITK ix1 micro V.3 (現在は FreeBSD 3.x のみ)
Sagem Cybermod (ISA PnP, おそらく動作します)
Sedlbauer Win Speed
Siemens I-Surf 2.0
Stollman Tina-pp (開発途中)
Teles 社製 S0/8
Teles 社製 S0/16
Teles 社製 S0/16.3 (16.3c などの “c” バージョンはサポートされません!)
Teles 社製 S0 PnP (実験的なドライバ, おそらく動作します)
3Com/USRobotics 社製 Sportster ISDN TA 内蔵 (non-PnP バージョン)
次のサウンドカードおよびコーデックがサポートされます ('実験的なドライバ' と書かれているものをサポートしているのは, FreeBSD-CURRENT のみであり, 不安定かもしれません):
16550 UART (Midi) (実験的なドライバ, ヒントファイル中にトリックが必要です)
Advance 社製 Asound 100, 110 および Logic ALS120
Aureal 社製 Vortex1/Vortex2 および Vortex Advantage ベースのサウンドコーデックは サードパーティのドライバ でサポートされます
Creative Labs 社製 SB16, SB32, SB AWE64 (Gold を含む), Vibra16, SB PCI (実験的なドライバ), SB Live! (実験的なドライバ) およびほとんどの SoundBlaster 互換のカード
Creative Labs 社製 SB MIDI ポート (実験的なドライバ), SB OPL3 シンセサイザ (実験的なドライバ)
Crystal Semiconductor 社製 CS461x/462x オーディオアクセラレータ, CS461x MIDI ポートのサポートは実験的なものです
Crystal Semiconductor 社製 CS428x オーディオコントローラ
CS4237, CS4236, CS4232, CS4231 (ISA)
ENSONIQ AudioPCI ES1370/1371
ESS 社製 ES1868, ES1869, ES1879, ES1888
Gravis 社製 UltraSound PnP, MAX
NeoMagic 社製 256AV/ZX (PCI)
OPTi931 (ISA)
OSS-互換シーケンサ (Midi) (実験的なドライバ)
Trident 社製 4DWave DX/NX (PCI)
ヤマハ OPL-SAx (ISA)
AST 4 ポート シリアルカード (シェアード IRQ 使用)
ARNET 8 ポート シリアルカード (シェアード IRQ 使用)
ARNET (現在は Digiboard) 570/i high-speed 同期シリアルカード
Boca BB1004 4 ポート シリアルカード (モデムはサポートしません)
BOCA IOAT66 6 ポート シリアルカード (モデムをサポート)
Boca BB1008 8 ポート シリアルカード (モデムはサポートしません)
Boca BB2016 16 ポート シリアルカード (モデムをサポート)
Cyclades Cyclom-y シリアルボード
Moxa SmartIO CI-104J 4 ポート シリアルカード
STB 4 ポート カード (シェアード IRQ 使用)
SDL Communications RISCom/8 シリアルボード
SDL Communications RISCom/N2 and N2pci high-speed 同期シリアルボード
Specialix SI/XIO/SX マルチポート シリアルカード, SIHOST2.x より古いものおよび “拡張” (transputer ベース, aka JET) ホストカード どちらもサポートされます: ISA, EISA および PCI
Stallion マルチポート シリアルボード: EasyIO, EasyConnection 8/32 & 8/64, オンボード 4/16 および Brumby
Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound および Roland MPU-401 サウンドカード
Connectix QuickCam
Matrox Meteor Video フレームグラバー
Creative Labs Video Spigot フレームグラバー
Cortex1 フレームグラバー
Brooktree BT848 チップ および BT878 チップベースのフレームグラバー
HP4020, HP6020, Philips CDD2000/CDD2660 および Plasmon CD-R ドライブ
バスマウス
PS/2 マウス
標準的な PC ジョイスティック
X-10 power コントローラ
GPIB および Transputer ドライブ
Genius および Mustek ハンドスキャナ
Floppy テープドライブ (いくつかのより古いモデルのみ, ドライバは不完全です)
Lucent Technologies 社製 WaveLAN/IEEE 802.11 PCMCIA および ISA standard speed (2Mbps) および turbo speed (6Mbps) ワイヤレス ネットワークアダプタ および同様に動作するもの (NCR WaveLAN/IEEE 802.11, Cabletron RoamAbout 802.11 DS)
Note: これらのアダプタの ISA バージョンは, 実際には PCMCIA カードと ISA - PCMCIA ブリッジカードを組み合わせたものなので, どちらのデバイスも同じドライバで動作します.
この節では基本的なインストールの際の, 報告された標準的な問題に対するトラブルシューティングのための情報が 書いてあります. また, FreeBSD と MS-DOS のデュアルブートを行う際の いくつかの質問と回答も書いてあります.
PC アーキテクチャの様々な制限により, 100% 確実に原因を突き止めることは不可能ですが, いくつか失敗した時に できることがあります.
サポートされているハードウェア を調べて, あなたのハードウェアがサポートされているかどうか 確認してください.
もしあなたのハードウェアがサポートされているにもかかわらず, 動作しなかったり他の問題点がある時は, コンピュータをリセットして, ビジュアルカーネルコンフィギュレーション オプションを与えているときにはそれを選択してください. ここで設定することで, あなたのハードウェアを通過するようにしたり, システムに対して情報を与えたりすることができます. 起動ディスクのカーネルは, ほとんどのハードウェアデバイスの IRQ, IO アドレス, DMA チャンネルは出荷されたままの状態であるとして 設定されています. もしハードウェアの設定が変更されていると, コンフィギュレーションエディタを使用してこれらの値を設定しなければ なりません.
存在しないデバイスを認識してしまうことにより, その後実際に存在するデバイスの認識を失敗してしまうことがあります. このような場合は, 衝突しているドライバを無効にします.
Warningスクリーン (sc0) などのインストールに必要なドライバを無効にしないでください. もし, コンフィギュレーションエディタを終了したあと, インストーラが動かなくなったり, 不思議な失敗をする場合は, 削除したり変更したりしてはいけないものを, 削除あるいは変更してしまった可能性があります. 再起動してやり直してください.
コンフィギュレーションモードでは, 次のことができます:
カーネルにインストールされているドライバの一覧表示.
システムに存在しないドライバの変更.
デバイスドライバが使用する IRQ, DRQ および IO ポートアドレスの変更.
カーネルをハードウェアの設定にあわせた後, Q と叩くことで, 新しい設定で起動します. インストールが終了すると, コンフィギュレーションモードで変更した 設定は保存されますので, 毎回起動するたびに設定する必要はありません. また, カスタムカーネル を作りたくなるかもしれません.
多くのユーザは, FreeBSD を MS-DOS が入っている PC にインストールしようとするでしょう. このようなシステムへの FreeBSD のインストールに関して, よく聞かれる質問が以下にあります.
あなたのマシンではすでに MS-DOS が動いていて, FreeBSD をインストールする容量がないとしても, すべての望みがなくなったわけではありません. FreeBSD CDROM や 様々な FreeBSD の FTP サイトの tools ディレクトリにある FIPS ユーティリティを使うことができます.
FIPS を使用することで, すでにある MS-DOS パーティションを, もともとの内容を保存したままのパーティションと, 何も入っていない FreeBSD をインストールすることのできる パーティションの二つに分割することができます. まず, Windows のデフラグ (DEFRAG) ユーティリティ (エクスプローラ上で ハードドライブを右クリックして, デフラグ (DEFRAG) を選択) か, ノートンディスクツールを使用して, 指示に従ってデフラグメントを行ってください. その後, 再起動して, 新しい空いているスライスに, FreeBSD をインストールすることができます. あなたが行うインストール方法では, どの程度の空き容量が必要なのかということについては, Distributions メニューを見てください.
また, PowerQuest 社の Partition Magic という, とても便利な製品があります. このアプリケーションは, FIPS よりも優れた機能をもっており, あなたが (わたしのように) 良くオペレーティングシステムを追加したり, 削除したりしようとしているのであれば, 強く推奨します. しかし, このアプリケーションは, お金がかかりますし, あなたが FreeBSD を一度インストールして, そのまま使用しようと考えているのであれば, FIPS が最も良いでしょう.
できません. Stacker(tm) や DoubleSpace(tm) などのユーティリティを使用している場合は, FreeBSD からは圧縮していない部分しか扱うことができません. 残りのファイルシステムは, 一つの巨大なファイル (Stack された, または Double Space されたファイル) として見えるでしょう. このファイルを削除しないでください. さもないと強く後悔するでしょう!
別の圧縮されていない標準 MS-DOS パーティションを作成して, MS-DOS と FreeBSD との間のやりとりに使うのがよいでしょう.
できます. DOS 拡張パーティションは FreeBSD では, D: ドライブは /dev/da0s5, E: ドライブは /dev/da0s6 などといったように, その他のスライスの終わりに配置されます. これはもちろん, 拡張パーティションが SCSI のドライブ 0 にある場合の例です. IDE ドライブでは, da の代わりに, 4.0-RELEASE およびそれ以降の場合は ad を, それ以前のバージョンでは wd を使用してください. それ以外の点では, 拡張パーティションをマウントする際も, 他の DOS ドライブをマウントするときと同様に, 以下のようにします:
# mount -t msdos /dev/ad0s5 /dos_d
訳: 中井 幸博 <nakai@mlab.t.u-tokyo.ac.jp>, 1996
年 10 月 12 日.
改訂: Chris Shumway <cshumway@osd.bsdi.com>, 2000 年 3 月
10 日.
この章では FreeBSD オペレーティングシステムの基本的なコマンドと機能について記述しています。 ここに書かれてあることのほとんどは、 どんな Unix オペレーティングシステムにもあてはまります。 この章に書いてあることに馴染みがあるなら、 この章は気軽に流し読みしてください。 あなたが FreeBSD の初心者なら、 何か質問する前にこの章を読んでおいた方がきっといいはずです。
この章を読んで分かることは、次のようなことです。
Unix のファイルの許可属性の仕組み
プロセス、デーモンとシグナルとはなにか
シェルとはなにか。 また、デフォルトのログイン環境を変える方法
テキストエディタの基本的な使い方
さらに詳しい情報を得るためのマニュアルページの読み方
FreeBSD の “仮想コンソール” の使い方
FreeBSD は BSD Unix の直系の子孫であり、 いくつかの鍵となる Unix 思想にもとづいています。 まず最も際だった特徴として最初に言えるのは、FreeBSD がマルチユーザのオペレーティングシステムだということです。 FreeBSD は同時に働いている複数のユーザすべてを、 完全に分離したタスク上で処理する能力を持っています。 また FreeBSD は、ハードウェアデバイス、周辺装置、メモリ、 CPU 時間等への要求を、各ユーザが平等に利用できるように適切に共有し、 管理する役割を担っています。
システムがマルチユーザをサポートしているため、 システムが管理する資源はすべて、 誰がその資源を読み・書き・実行できるかを支配する、 一組の許可属性を持っています。 これらの許可属性は 3 つの部分からなる 2 桁の 8 進数の形で格納されています。 それはそのファイルの所有者(owner)に対するもの、 そのファイルが所属するグループ(group)に対するもの、 その他(others)に対するものの 3 つです。 これを数字を使って表現すると、次のようになります。
| 値 | 許可属性 | ディレクトリの表示 |
|---|---|---|
| 0 | 読み込み不可、書き込み不可、実行不可 | --- |
| 1 | 読み込み不可、書き込み不可、実行可能 | --x |
| 2 | 読み込み不可、書き込み可能、実行不可 | -w- |
| 3 | 読み込み不可、書き込み可能、実行可能 | -wx |
| 4 | 読み込み可能、書き込み不可、実行不可 | r-- |
| 5 | 読み込み可能、書き込み不可、実行可能 | r-x |
| 6 | 読み込み可能、書き込み可能、実行不可 | rw- |
| 7 | 読み込み可能、書き込み可能、実行可能 | rwx |
ls(1)
に対してコマンドライン引数 -l を使うと、
詳細なディレクトリリストを見ることができ、
ファイルの所有者、グループ、その他への許可属性を示す欄があるのがわかります。
次に示すのは、ls -l の最初の部分だけ抜き出したものです。
-rw-r--r--
最初の(一番左の)文字は、それが 普通のファイルなのか、ディレクトリなのか、 キャラクタ型のデバイス特殊ファイルなのか、 ソケットなのか、 その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です。 この場合、- という文字は、 普通のファイルであることを示します。 この例でその次に来る rw- と書かれた 3 文字は、 そのファイルの所有者に許可を与えるものです。 その次の r-- の 3 文字は、 そのファイルが所属しているグループに許可を与えます。 最後の r-- の 3 文字は、 システムに存在するその他のユーザに許可を与えます。 “-” は許可が与えられていないことを示します。 このファイルの例では、ファイルの所有者はこのファイルを読み書きでき、 ファイルの所属しているグループに属するユーザはファイルを読むことだけでき、 そのどちらでもないユーザは、 このファイルを読むだけできるように許可属性が与えられています。 上の表によれば、このファイルに与えられた許可属性は 644 となります。 ここで各数字は、このファイルの許可属性の 3 つの部分を表しています。
ファイルについてはここまでの説明で十分です。 しかし、 デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は、大部分のハードウェアをファイルとして取り扱います。 そのため、プログラムからは普通のファイルとまったく同じようにオープンし、 データの読み書きができるようになっています。 これらのデバイス特殊ファイルは /dev ディレクトリに収められています。
ディレクトリもまた、ファイルと同様に扱われます。 それは読み込み/書き込み/実行の許可属性を持ちます。 ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます。 ディレクトリが実行可能になっているとき、 そのディレクトリに移動することができます。 つまり、そのディレクトリに “cd” することが可能です。 また、実行可能属性がついているディレクトリでは、 名前が分かっているファイルにアクセスすることもできます (もちろんそのファイル自体の許可属性によります)。
特に、ディレクトリの中の一覧を表示するには、 そのディレクトリに読み込み属性が設定されていなければなりません。 一方、名前が分かっているファイルを削除するには、 そのファイルが含まれているディレクトリに 書き込み属性と実行属性 の両方が必要です。
この他にも許可属性ビットはありますが、いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます。 ファイルの許可属性そのものについて、 また、それらの設定のしかたに関する詳しい情報は、 chmod(1) マニュアルページを参照してください。
FreeBSD のディレクトリ構造は、 システム全体を理解するに当たって重要です。 把握しておくべき最も重要なものは、“/” ディレクトリです。 このディレクトリは起動時に一番最初にマウントされ、 オペレーティングシステムをマルチユーザで動作させるために 必要な基本システムが含まれています。 また、ルートディレクトリには、 他のファイルシステムをマウントするためのマウントポイントも含まれます。
マウントポイントとはルートファイルシステムに存在する、
追加のファイルシステムと接続するためのディレクトリのことです。
標準的なマウントポイントには /usr, /var, /mnt, /cdrom があります。 通常これらのディレクトリについては、 /etc/fstab というファイル中のエントリが参照されます。 /etc/fstab
はさまざまなファイルシステムとマウントポイントの表であり、 システムが参照します。 /etc/fstab に書かれたファイルシステムは noauto オプションが指定されていなければ、 起動時に rc(8)
スクリプトによって自動的にマウントされます。 /etc/fstab
ファイルの書式やオプションに関しての詳細は fstab(5) をご覧ください。
ファイルシステム構造を網羅した説明は hier(7) に書かれています。 ここでは、もっともよく使われるディレクトリについて簡単に 見るだけで十分でしょう。
| ディレクトリ | 説明 |
|---|---|
| / | ファイルシステムのルートディレクトリ |
| /bin/ | シングルユーザ環境とマルチユーザ環境の両方で重要な ユーザユーティリティ |
| /boot/ | オペレーティングシステムの起動時に使われるプログラムと設定ファイル |
| /boot/defaults/ | デフォルトの起動設定ファイル; loader.conf(5) 参照 |
| /dev/ | デバイスノード; intro(4) 参照 |
| /etc/ | システム設定ファイルとスクリプト |
| /etc/defaults/ | デフォルトのシステム設定ファイル; rc(8) 参照 |
| /etc/mail/ | sendmail(8) のようなメール転送エージェントの設定ファイル |
| /etc/namedb/ | named 設定ファイル; named(8) 参照 |
| /etc/periodic/ | cron(8) 経由で毎日・毎週・毎月実行されるスクリプト; periodic(8) 参照 |
| /etc/ppp/ | ppp 設定ファイル; ppp(8) 参照 |
| /mnt/ | システム管理者が一時的なマウントポイントとしてよく使う 空のディレクトリ |
| /proc/ | プロセスファイルシステム; procfs(5) と mount_procfs(8) 参照 |
| /root/ | root アカウントのホームディレクトリ |
| /sbin/ | シングルユーザ環境とマルチユーザ環境の両方で重要な システムプログラムと管理ユーティリティ |
| /stand/ | スタンドアロン環境で使われるプログラム |
| /tmp/ | 一時的なファイル、mfs(8) メモリファイルシステムであることが多い (普通 /tmp の内容はシステムの再起動で失われる) |
| /usr/ | 大部分のユーザユーティリティとアプリケーション |
| /usr/bin/ | よく使うユーティリティとプログラミングツールとアプリケーション |
| /usr/include/ | C の標準ヘッダファイル |
| /usr/lib/ | ライブラリ |
| /usr/libdata/ | いろいろなユーティリティのデータファイル |
| /usr/libexec/ | システムデーモンとシステムユーティリティ (他のプログラムから実行される) |
| /usr/local/ | ローカルのプログラムやライブラリなど。 FreeBSD ports 構成のデフォルトインストール先としても使われます。 /usr/local 内では、 hier(7) に書かれている /usr のための一般構造が使われます。 例外は man ディレクトリで、 /usr/local/share の下ではなく /usr/local の下に直接置かれ、 ports 関係文書は share/doc/port にあります。 |
| /usr/obj/ | /usr/src ツリーのビルドで作られる アーキテクチャ依存のターゲットツリー |
| /usr/ports | FreeBSD ports 集 (インストールしなくてもよい)。 |
| /usr/sbin/ | (ユーザが実行する)システムデーモンとシステムユーティリティ |
| /usr/share/ | アーキテクチャに依存しないファイル |
| /usr/src/ | BSD のソースファイルまたはローカルのソースファイル、 あるいは両方 |
| /usr/X11R6/ | X11R6 のプログラム、ライブラリなど(インストールしなくてもよい) |
| /var/ | ログ・一時的なファイル・スプールファイルなどいろいろな用途 |
| /var/log/ | いろいろなシステムログファイル |
| /var/mail/ | ユーザのメールボックスファイル |
| /var/spool/ | プリンタとメールシステムのスプールディレクトリなどなど |
| /var/tmp/ | システムが再起動しても消えない一時的なファイル |
| /var/yp | NIS のマップ |
ファイルシステムは / をルート (根) とする木構造として考えると視覚的に理解しやすいでしょう。 ルートディレクトリにある /dev や /usr、 その他のディレクトリは枝に相当し、 それらには、/usr/local などのように、さらに枝分かれすることができます。
さまざまな理由がありますが、 ディレクトリをいくつかの異なるファイルシステム上に構築するのが良いでしょう。 たとえば /var には、 log/ や spool/ など、さまざまな種類の一時ファイルを置くディレクトリがあるため、 あふれてしまう可能性があります。 ルートファイルシステムをあふれさせるのは得策ではありませんので、 普通は /var を / から分離します。
また、次のような場合も、ディレクトリツリーを 別のファイルシステムに置く理由として良くあげられます。 それは、たとえば物理的に別のディスクにディレクトリツリーを置く場合、 ネットワークファイルシステム (Network File System) や CDROM ドライブのような別の仮想ディスクに置くという場合です。
/etc/fstab に書かれているファイルシステムは (noauto オプションがなければ) 起動プロセスの途中で 自動的にマウントされます。
/etc/fstab ファイルは、 次のような書式で書かれた行のリストになっています。
device /mount-point fstype options dumpfreq passno
デバイスの名前 (存在していなければなりません)。 Section 15.2 に説明があります。
ファイルシステムがマウントするディレクトリの名前 (存在していなければなりません)。
mount(8) に渡されるファイルシステムタイプ。 FreeBSD ファイルシステムのデフォルトは ufs です。
読み書きするファイルシステムには rw、読み込み専用のファイルシステムには ro を、必要な他のオプションの前に指定します。
よく使われるオプションは noauto で、
起動時にはマウントされないファイルシステムに使います。 その他のオプションは mount(8)
マニュアルページに載っています。
これは dump(8) が使うもので、 どのファイルシステムにダンプが必要なのかを決めます。 この項目がなければ、0 であるものとみなされます。
これはファイルシステムをチェックする順番を決めます。 ファイルシステムチェックを飛ばしたいファイルシステムには、 passno を 0 に設定してください。 ルートファイルシステム (どれよりも先にチェックしなければなりません) は passno を 1 に設定してください。 他のファイルシステムの passno は 1 以上に設定してください。 同じ passno のファイルシステムがあった場合、 fsck(8) は可能であれば並行してファイルシステムのチェック を行なおうとします。
mount(8) コマンドは、 ファイルシステムをマウントするために使われるものです。
基本的には、次のように使います。
mount(8) マニュアルページにはたくさんのオプションが書かれていますが、 いちばんよく使われるのは次のものです。
マウントオプション
-a/etc/fstab にある全てのファイルシステムをマウントします。
例外は “noauto” の印がついているものと、 -t
フラグで除外されたものと、 すでにマウントされているファイルシステムです。
-d実際にシステムコールする以外の全てのことをします。 このオプションは -v フラグと組み合わせて使い、 mount(8)
が実際なにをしようとしているのか調べるのに便利です。
-fクリーンでないファイルシステムを強制的にマウントします (危険です)。もしくは、ファイルシステムのマウント状態を 読み書き可能から読み込みのみに変更するとき、 書き込みアクセスを強制的に取り消します。
-rファイルシステムを読み込み専用でマウントします。 これは rdonly 引数を -o
オプションに使うのと同じです。
-t fstypeファイルシステムを指定のファイルシステムタイプでマウントします。 または、-a を使った場合、
指定したタイプのファイルシステムのみマウントします。
デフォルトのファイルシステムタイプは “ufs” です。
-uファイルシステムのマウントオプションを更新します。
-v詳細な出力にします。
-wファイルシステムを読み書き可能にマウントします。
-o には、
次のようなオプションを複数カンマで区切って指定します。 以下に挙げるのはその一部です。
ファイルシステム上のスペシャルデバイスを解釈しません。 セキュリティのために有用なオプションです。
そのファイルシステム上のバイナリの実行を禁止します。 セキュリティのために有用なオプションです。
そのファイルシステム上の setuid や setgid フラグを解釈しません。 これもセキュリティのために有用なオプションです。
umount(8)
コマンドは、パラメータとしてマウントポイントの一つ、 デバイス名、もしくは -a や -A
といったオプションを取ります。
いずれの形式でも -f で強制的なアンマウントを行ない、 -v で詳細な出力を出します。 ただしほとんどの場合、-f は使わないほうがよいでしょう。
強制的にファイルシステムをアンマウントすると、
計算機がクラッシュしたりファイルシステム上部のデータが
破壊されたりする恐れがあるためです。
オプション -a と -A
はマウントされているファイルシステムすべてをアンマウントするのに使います。 -t にファイルシステムタイプを指定すると、
指定されたものだけがアンマウントされます。 また、-A
を使うとルートファイルシステムはアンマウントしません。
FreeBSD はマルチタスクのオペレーティングシステムです。 つまり、1つ以上のプログラムがあたかも同時に動いているかのように見える、 ということです。動作中のプログラムはそれぞれ プロセス と呼ばれます。 コマンドを実行すると、最低でも1つの新しいプロセスがスタートします。 システムを正常に機能させるために常に動作しているシステムプロセスもたくさんあります。
各プロセスはプロセス ID、もしくは PID と呼ばれる数字でただ一つに識別されます。 また、ファイルのように各プロセスには所有者とグループがあります。 所有者とグループの情報は、 これまでに見たファイル許可属性を用い、 そのプロセスが開けるファイルやデバイスを決定するために使われます。 多くのプロセスには親プロセスもあります。 親プロセスとは、そのプロセスをスタートさせたプロセスのことです。 例えば、シェルにコマンドを打ち込んでいるときはシェルがプロセスで、 動かすコマンドもまたどれもプロセスです。 このようにして起動するプロセスはそれぞれシェルが親プロセスになります。 これの例外は init という特別なプロセスです。 init は常に最初のプロセスなので、 PID は必ず 1 になります。 init は FreeBSD がスタートするときカーネルによって自動的に起動されます。
ps(1) と top(1) という2つのコマンドが システム上のプロセスを確認するために特に便利です。 ps(1) コマンドは現在動作中のプロセスのリストを見るために使い、 PID やプロセスが使っているメモリの量、 どういうコマンドラインで起動されたのか、 などを表示させることができます。 top(1) コマンドは動作中の全てのプロセスを表示し、 数秒ごとに表示を更新するので、 計算機がなにをしているのかインタラクティブに知ることができます。
デフォルトでは、ps(1) は動作中かつ所有者が自分のコマンドのみを表示します。 例えば:
% ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish
この例で分かるとおり、 ps(1) の出力はいくつかの行に整形されています。 PID は先ほど見たプロセス ID です。 PID は 1 から順に 99999 まで割り当てられ、 足りなくなると最初に戻って使い回されます。 TT はプログラムが動いている tty を示します。 差し当たって無視してもかまわないでしょう。 STAT はプログラムの状態を示しますが、 これもまた無視してよいでしょう。 TIME はプログラムがその CPU 上で動いている時間の長さです--これはプログラムをスタートさせたとき からの経過時間であるとはかぎりません。 CPU 上で時間を使う必要があるまでかなりの時間を費すようなプログラムもあるからです。 最後に、COMMAND はそのプログラムを起動するのに使われたコマンドラインとなります。
ps(1)
は表示する情報を変えるためのオプションをたくさんサポートしています。 いちばん便利なのは
auxww でしょう。 a
は自分のプロセスだけではなく、 動作中のプロセス全部についての情報を表示します。 u はプロセスの所有者の名前をメモリ使用量と同様に表示します。 x はデーモンプロセスについての情報を表示し、 ww
で、スクリーンに入りきらないほど長くなったコマンドラインでも省略せず、 ps(1)
に全コマンドラインを表示させます。
top(1) の出力も同様です。 例は以下の通りです。
% top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ...
出力は2つのセクションに分かれています。 ヘッダ(最初の5行です)は動作している最新のプロセスの PID、 システムの平均負荷(システムがどれくらい忙しいかの指標)、 システムの稼働時間(最後の再起動からの時間) と現在の時刻を示します。 ヘッダの中の他の数字は動作中のプロセスの数(この場合 47 ですね)、 使われているメモリとスワップ領域の量、 そしてシステムが異なる CPU 状態に消費した時間と関係します。
その下には ps(1) の出力と同じような情報を持った行が続きます。 前と同様 PID にユーザ名、消費 CPU 時間と実行中のコマンドを知ることができます。 top(1) を使うとデフォルトでプロセスが使っているメモリ容量も分かります。 メモリ使用量の欄は2項目に分かれており、 一方は合計使用量、 そしてもう一方は実使用量です--合計使用量はアプリケーションが必要としているメモリ量で、 実使用量はその時点で実際に使われているメモリ量です。 この例では、Netscape がだいたい 30 MB の RAM を必要としていますが、 いまのところ 9 MB しか使っていないことが分かります。
top(1)
は自動的に2秒ごとに画面を更新します。 s
オプションを使えば更新間隔を変更することができます。
エディタを使っている場合、エディタを操作するのは簡単です。 ファイルを開く、などと動かせばよいのです。 このように操作できるのは、エディタにそういった機能があり、 かつエディタが端末に関連づけられているからです。 一方、ユーザから始終入力があるように設計されていないプログラムもあり、 そういったプログラムは最初から端末と切り離されます。 例えば、ウェブサーバは一日中ウェブのリクエストばかり処理するので、 通常全く入力を必要としません。 サイトからサイトへとメールを転送するプログラムも、 こういった種類のアプリケーションの一例です。
このようなプログラムは、デーモンと呼ばれます。 デーモンはギリシャ神話の登場人物で、 善でも悪でもなく、大雑把にいうと、 人間のために役立つことをしてくれる小さな妖精さんです。 今日の便利なウェブサーバやメールサーバととてもよく似ていますね。 このため、長い間 BSD のマスコットはスニーカーをはいてフォークを携えた かわいらしい姿のデーモンなのです。
通常デーモンとして動作するプログラムには末尾に “d” を持った名前をつける慣習があります。 BIND は Berkeley Internet Name Daemon ですし (実際実行されるプログラムは named という名前です)、 Apache ウェブサーバのプログラムは httpd と呼ばれますし、 ラインプリンタスプーリングデーモンは lpd、 などなどです。 これは単なる慣習で、しっかりがっちりとしたルールではありません。 例えば、Sendmail アプリケーションの主なメールデーモンは sendmail という名前で、 連想しそうな maild ではありません。
時々、デーモンプロセスと通信したいときがあります。 この通信はシグナルと呼ばれ、 デーモンにシグナルを送ることによってデーモン (に限らずどんな動作中のプロセスでも)と通信することができます。 送信可能なシグナルはたくさんあります--特別な意味があるものもあれば、 アプリケーションによって解釈されるものもありますし、 アプリケーションがシグナルをどう解釈するかは そのアプリケーションの文章を読めば分かるでしょう。 自分が持っているプロセスにしかシグナルを送ることはできません。 他人のプロセスに kill(1) や kill(2) を使ってシグナルを送っても、許可されないでしょう。 これの例外は root ユーザで、 ルートユーザは誰のプロセスでもシグナルを送ることができます。
FreeBSD もアプリケーションにシグナルを送ることがあります。 アプリケーションを下手に書くと、 予想外のメモリにアクセスしようとするので、 FreeBSD がプロセスに セグメンテーション違反 シグナル (SIGSEGV) を送ります。 ある程度の時間が経ったら alarm(3) システムコールを使って警告してもらうようなアプリケーションには、 警告シグナル (SIGALRM) が送信される、 などです。
プロセスを止めるためには2つのシグナル、 SIGTERM か SIGKILL を使います。 SIGTERM は穏かにプロセスを終了させる方法です。 プロセスはシグナルを受け取ることができ、 終了させたいのだなということを理解し、 開いているログファイルを全部を閉じ、 一般的に終了前にしていたことを終えることができます。 中断できない処理の途中だと、SIGTERM をプロセスが無視することもあるかもしれません。
プロセスは SIGKILL を無視することができません。 これは、“なにをしていようが構わないから今すぐ止まれ” というシグナルです。 プロセスに SIGKILL を送ると、 FreeBSD はそのプロセスをそこで止めます[1]。
使う可能性のあるシグナルは、他に SIGHUP、SIGUSR1、と SIGUSR2 があります。 これらは一般的な用途のシグナルで、 このシグナルが送信されたときアプリケーションによって別のことをします。
ウェブサーバの設定ファイルを変更したとしましょう--ウェブサーバに新しい設定を再読み込みさせたいですね。 httpd を止めて再起動することもできますが、 そうするとウェブサーバは一瞬ながら停止してしまいますし、 ちょっとでも止まってほしくないこともあるでしょう。 ほとんどのデーモンは SIGHUP シグナルに対して設定ファイルを再読み込みする反応を返すよう書かれています。 従って、httpd を止めて再起動する代わりに、 SIGHUP シグナルを送りましょう。 これらのシグナルへの標準的な反応というものがないために、 デーモンごとに行動が違うので、 疑問があれば必ずそのデーモンの文書を読んでください。
kill(1) コマンドを使って送るシグナルはこの例をご覧ください。
プロセスにシグナルを送る
この例では、inetd(8) にシグナルを送る方法を示します。 inetd(8) の設定ファイルは /etc/inetd.conf で、 inetd(8) は SIGHUP が送信されるとこの設定ファイルを再読み込みします。
シグナルを送りたいプロセスのプロセス 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) が動作中のプロセスのリストを見つける方法によります。
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 ... コマンドを直接使うほうが簡単です。
他のシグナルの送り方はほとんど同じで、 コマンドラインの TERM や KILL を必要に応じて変えるだけです。
Important: システム上のランダムプロセスを終了させるのはよくありません。 特に、プロセス ID が 1 の init(8) は特別です。 /bin/kill -s KILL 1 を使うといとも簡単にシステムをシャットダウンさせることができます。 Return を押す前に kill(1) を実行する引数を二重にチェックする癖をつけてください。
FreeBSD では日々の作業のほとんどは、 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます。 シェルの主な仕事はコマンドを入力チャンネルから受け取り、 そしてそれらを実行することです。 大部分のシェルはさらに組み込みの機能を持っていて、日々の作業、 ファイル管理やファイル名の展開、コマンドライン編集、 コマンドマクロ、環境変数などに便利です。 FreeBSD には sh (Bourne Shell) や tcsh (高機能 C-shell) が含まれています。 また、 これ以外にも zsh や bash などたくさんのシェルが FreeBSD Ports Collection から利用可能です。
「あなたは、どのシェルを使いますか?」という質問は、 まったく趣味の問題です。 あなたが C のプログラマだったとすれば、 tcsh のような C 風のシェルの方が落ち着くかもしれません。 Linux から来た人や Unix のコマンドラインインタフェイスになじみがなければ、 bash を試すのも良いでしょう。 ポイントは、それぞれのシェルは、 あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ、 そして、どのシェルを使うことにするかを決めるのはあなた自身だということです。
シェルの一般的な機能の一つに、ファイル名の補完があります。 コマンドやファイル名の最初の数文字を与えて Tab キーを押すことで、 シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます。 例をあげましょう。 二つのファイル foobar, foo.bar が あったとします。 ここで foo.bar の方を削除するには、 rm fo[Tab].[Tab] と入力します。
するとシェルは rm foo[BEEP].bar と出力するでしょう。
[BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です。 これは複数のファイルがマッチしたため、 ファイル名の補完を完全に行なえなかったことを伝えています。 foobar と foo.bar は 両方とも fo ではじまるため、 補完できるのは foo までです。 ここで . を入力して Tab を押せば、 シェルはファイル名の残りの部分を補完できます。
もう一つあげられるシェルの特徴として、環境変数があります。 環境変数とは、シェルの環境変数空間におけるキーと値とのペアです。 この変数空間は、そのシェルから起動されたプログラムから参照でき、 それを利用してプログラムの設定を保存するのに利用されます。 下の表は、一般的な環境変数とその意味を示したものです。
| 変数名 | 意味 |
|---|---|
| USER | 現在のログインユーザのユーザ名。 |
| PATH | コロンで区切られた実行ファイル探索のための ディレクトリのリスト。 |
| DISPLAY | 接続する X11 ディスプレイのネットワーク名(存在する場合のみ)。 |
| SHELL | 現在のシェル。 |
| TERM | ユーザの端末名。 端末のケーパビリティを決定するのに使われる。 |
| TERMCAP | 種々の端末の機能を実現する端末のエスケープコードの データベースのエントリ。 |
| OSTYPE | オペレーティングシステムの種別。 たとえば FreeBSD。 |
| MACHTYPE | システムが動作している CPU のアーキテクチャ。 |
| EDITOR | ユーザの選んだテキストエディタ。 |
| PAGER | ユーザの選んだテキストページャ。 |
| MANPATH | コロンで区切られたマニュアルページ探索のための ディレクトリのリスト。 |
環境変数をセットする方法は、 それぞれのシェルごとに多少異なります。 たとえば、tcsh や csh 等の C シェルでは setenv を使います。 sh や bash 等の Bourne シェルでは set と export を使います。 たとえば csh か tcsh で EDITOR 環境変数の値を /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 と そのまま表示します。
シェルを変更する一番簡単な方法は chsh コマンドを使うことです。 chsh を実行すると 環境変数 EDITOR で示されたエディタが立ち上がります。 環境変数をセットしていなかった時は vi が立ち上がります。 “Shell:” の行を適宜変更してください。
chsh に -s オプションをつけると、
エディタを起動せずにシェルを変更することが可能です。 たとえば、シェルを bash に変えたいなら、次のようにしてください。
% chsh -s /usr/local/bin/bash
chsh をパラメータなしで実行し、 エディタでシェルを変更しても同じことができます。
Note: 使おうと思っているシェルは必ず /etc/shells 中に書かれているものでなければなりません。 シェルを Ports コレクションから インストールしていたのであれば、すでにそれは行なわれていますが、 手動でインストールした場合は、それを忘れずに行ってください。
たとえば、bash を手動で /usr/local/bin にインストールした場合 以下のようにする必要があります。
# echo "/usr/local/bin/bash" >> /etc/shellsそして chsh を実行してください。
さまざまな 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、 一方 emacs や vim といった他のエディタは Ports Collection の一部として、 より強力なテキストエディタが用意されています。 これらのエディタはやや学習が複雑ですが、より強力で高い機能性を提供します。 しかし、あなたが多量のテキストを編集することを考えているなら、 vim や emacs といった強力なエディタを習得することは、 より多くの時間を節約することでしょう。
デバイスとはシステム上のハードウェアに関するものに対してよく使われる用語で、 ディスクやプリンタ、グラフィックカードやキーボードが含まれます。 FreeBSD が起動するとき、FreeBSD が表示しているものの大部分は検出されたデバイスです。 /var/run/dmesg.boot を眺めれば起動メッセージを読み直すことができます。
例えば、acd0 は最初の IDE CDROM ドライブで、kbd0 はキーボードを表します。
Unix オペレーティングシステムにおけるデバイスのほとんどは、 デバイスノードと呼ばれる /dev ディレクトリにあるスペシャルファイルを通してアクセスしなければなりません。
新しいデバイスをシステムにつけ足したり、 追加デバイスのサポートをコンパイルして加えたりするときは、 デバイスノードを追加で作成しなければならない場合があります。
DEVFS がないシステム (5.0 より前の全 てのバージョンの FreeBSD にあてはまります) では、 以下に示すように MAKEDEV(8) スクリプトを使ってデバイスノードを作成します。
# cd /dev # sh MAKEDEV ad1
この例では、取りつけられたとき2番目に当たる IDE ドライブにとって適切なデバイスノードを作ります。
デバイスファイルシステム DEVFS は、 グローバルファイルシステム名前空間の中のカーネルデバイス名前空間へのアクセスを提供します。 デバイスノードを作成したり変更したりするのではなく、 DEVFS がこの特別なファイルシステムを管理するのです。
詳しくは devfs(5) マニュアルページをご覧ください。
FreeBSD 5.0 では DEVFS がデフォルトで使われています。
FreeBSD は様々な使い方ができます。その中の一つが、 テキスト端末でコマンドを入力することです。この方法で FreeBSD を使えば、 UNIX オペレーティングシステムの能力と柔軟性を手にすることができます。 この節では、“コンソール” と “端末” はどのようなもので、FreeBSD でどう使うかを 説明します。
起動時に自動的にグラフィカルな環境が起動するように FreeBSD を設定していなければ、システムが起動してスタートアップ スクリプトが実行されると、すぐにログインプロンプトが出てくるでしょう。 次のようものが表示されるはずです。
Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 FreeBSD/i386 (pc3.example.org) (ttyv0) login:
あなたのシステムではメッセージが多少異なるかもしれませんが、 似たようなものが見られるはずです。 最後の 2 行が、今関心を向けているものです。 最後から 2 行目は、以下のようになっています。
FreeBSD/i386 (pc3.example.org) (ttyv0)
この行には、 起動したばかりのシステムについていくばくかの情報があります。 あなたは、x86 アーキテクチャ上の Intel または その互換プロセッサ上で動作している “FreeBSD” の コンソールを目にしているのです[2]。このマシンの名称 (どの UNIX 機にも名前がついて います) は pc3.example.org で、 あなたはそのシステムコンソール、ttyv0 端末に向かっています。
最後の行は、常に以下のものになります。
login:
ここは、FreeBSD にログインするために “ユーザ名” を入力するところです。次の節でどうするか説明します。
FreeBSD は、マルチユーザ、マルチプロセスなシステムです。 これは、1 台のマシンで何人もの人が交互に多くのプログラムを 動かせるシステムに与えられる正式な説明です。
あらゆるマルチユーザシステムには、ある “ユーザ” を他のユーザと区別する何がしかの手段が必要です。 FreeBSD (とすべての UNIX ライクなオペレーティングシステム) では、 すべてのユーザに対してプログラムの実行を可能にするのに、システムに “ログイン” することを義務付けてこれを実現しています。 どのユーザにも、一意な名前 (“ユーザ名”) と個人的な秘密の鍵 (“パスワード”) があります。 FreeBSD はユーザにプログラムの実行を許可する前に、 この 2 つの入力を要求します。
FreeBSD が起動してスタートアップスクリプトを実行し終わった 直後に[3]、プロンプトを表示して有効なユーザ名の入力を促します。
login:
この例では john というユーザ名を使う ことにしましょう。このプロンプトに対して john と入力して、Enter を 押してください。そうすると、 次のような“パスワード”の入力を要求するプロンプトが 表示されます。
login: john Password:
それでは john のパスワードを入力して Enter を押してください。パスワードは 表示されません。これについては、当面は 気にする必要はありません。セキュリティのためといえば十分でしょう。
パスワードを正確に入力したら、FreeBSD にログインして 利用可能なすべてのコマンドを試せるようになっているはずです。
一つのコンソールで UNIX コマンドを動かすのは結構なことですが、 FreeBSD は多くのプログラムを一度に動かせます。 コマンドを入力できるコンソールが一つというのは、 FreeBSD のようにいくつものプログラムを同時に動かせる オペレーティングシステムの場合は少しもったいないことです。 ここで、“仮想コンソール” が非常に役に立ちます。
FreeBSD は、異なる仮想コンソールを複数 表示するように設定できます。キーボード上である組合せのキーを押せば、 その中の一つから他の仮想コンソールのどれかに切り替えられます。 それぞれのコンソールは、個別の出力チャンネルを持っており、 また FreeBSD はある仮想コンソールから次に切り替えるのに応じて、 キーボード入力とモニター出力を適切につなぎ直します。
FreeBSD は、コンソールを切り替えるために、 特別なキーの組合せを予約しています[4]。FreeBSD では Alt-F1, Alt-F2 から Alt-F8 までを、 別の仮想コンソールに切り替えるのに使えます。
あるコンソールから他に切り替えるのに応じて、FreeBSD は画面 への出力を保存して戻します。結果として、FreeBSD で動かすコマン ドを入力するのに使える複数の画面とキーボードを “仮想的に” 実現できるのです。 ある仮想コンソールで実行したプログラムは、 そのコンソールが見えなくなっている時も実行を停止しません。 別の仮想コンソールに切り替えても動き続けます。
初期設定では、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) のマニュアルを 参照してください。
“シングルユーザモード” とは何かという詳しい説明は、 Section 12.6.2 にあります。FreeBSD を シングルユーザモードで動かしている場合は一つしかコンソールが ないということは注意しておくに値するでしょう。仮想コンソールは 利用できません。シングルユーザモードのコンソールの設定は、同じく /etc/ttys ファイルにあります。 console で始まる行を探してください。
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure
Note: console 行の上のコメントが示すように、 この行を編集して secure を insecure に変更できます。そうすると、 FreeBSD がシングルユーザモードで起動した場合にも root のパスワードを要求します。
ただし、これをinsecure に 変更する場合は十分注意してください。 root のパスワードを忘れてしまったら、 シングルユーザモードで起動するのは少しややこしくなります。 できることはできますが、FreeBSD の起動の過程とそれに関わる プログラムにあまり親しんでいない人には少し難しいかも知れません。
FreeBSD についてのもっとも包括的な文書は、 マニュアルページの形式になっているものです。 FreeBSD システム上のほとんどすべてのプログラムには、 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています。 これらのマニュアルは man コマンドで見ることができます。man コマンドの使い方は簡単です。
% man コマンド名
コマンド名 のところには、知りたいコマンドの名前を入れます。 たとえば ls コマンドについて知りたい場合には、 次のように入力します。
% man ls
オンラインマニュアルは、 セクション番号で分類されています。
ユーザコマンド
システムコールとエラー番号
C のライブラリ関数
デバイスドライバ
ファイル形式
ゲームや娯楽
さまざまな情報
システムの管理と操作のためのコマンド
カーネル開発者のための情報
時折、
同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります。
たとえば、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 *
としてください。
FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています。 これらのプログラムには、マニュアルページに加えて info ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています。 この文書は info コマンド、 あるいは emacs をインストールしているなら emacs の info モードで読むことができます。
info(1) コマンドを使うには、単に次のように入力します。
% info
h と入力すると、 簡単な手引きを読むことができます。 クイックコマンドリファレンスは ? を入力してください。
FreeBSD の基本システムには数多くのシステムツールが含まれています。 しかしながら、サードパーティ製のアプリケーションをインストールしないと 実用的にはそれほどたくさんのことはできません。 FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、 ソースコードをコンパイルしてインストールする Ports Collection と コンパイル済みのバイナリをインストールする packages という相補的な 2 つの技術を提供しています。 どちらのシステムを用いても、お気に入りのアプリケーションの最新版を ローカルメディアやネットワーク上からインストールできます。
この章を読むと、以下のことがわかります。
packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法
Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法
インストールした packages や ports を削除する方法
Ports Collection が用いるデフォルトの設定を変更する方法
お望みのソフトウェア package を探しだす方法
アプリケーションをアップグレードする方法
UNIX システムを使ったことのある人なら、 サードパーティ製ソフトウェアの典型的なインストール手順が 以下のようになることをご存知でしょう。
ソースコード、またはバイナリ形式で 配布されているソフトウェアをダウンロードする。
配布時のフォーマット (一般的には compress(1), gzip(1) または bzip2(1) で圧縮された tarball) からソフトウェアを取り出す。
ドキュメント (INSTALL または README ファイル、あるいは doc/ サブディレクト中のファイル) を探しだし、 ソフトウェアのインストール方法を調べる。
ソース形式でソフトウェアが配布されている場合はコンパイルを行う。 ここでは、Makefile の編集、 または、configure スクリプトの実行、 あるいは他の作業を伴うことがある。
ソフトウェアの動作を確認し、インストールする。
すべてがうまくいったならば、インストール作業は以上です。 もしインストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなければ、 適切に動くようコードを調べ、編集する必要があるかもしれません。
あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに “従来” の方法を使い続けることができます。 しかしながら、FreeBSD は インストール時にかかるたくさんの労力を軽減する 2 つの技術、 すなわち packages と ports を提供しています。 この文書を書いている時点では、 20,000 を越えるサードパーティ製アプリケーションがこれらの方法で 利用可能となっています。
FreeBSD package では、いかなるアプリケーションに対しても ダウンロードする必要のあるファイルはただ一つです。 package には、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントが含まれています。 FreeBSD に用意されている pkg_add(1), pkg_delete(1), pkg_info(1) といった package 管理コマンドで、 ダウンロードした package ファイルを扱うことができます。 新しいアプリケーションをインストールするには、 たった一つのコマンドを実行するだけです。
FreeBSD port は、アプリケーションをソースコードからコンパイルする際の 処理を自動化するように設計されたファイルの集まりです。
プログラムをコンパイルする時のことを思い出して下さい。 通常、とてもたくさんの手順 (ダウンロード、展開、パッチ作業、コンパイル、インストール) を踏まなくてはなりません。 port を構成するファイルは、 これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。 いくつかの簡単なコマンドを実行すると、 自動的にアプリケーションのソースコードがダウンロードされ、展開、 パッチ作業、コンパイル、そして、インストール作業が行われます。
さらに ports システムは、pkg_add コマンドや他の package 管理コマンドで扱うことのできる packages を生成できます。 これらのコマンドについては後の節で簡単に紹介します。
packages と ports は依存関係を理解します。 ある特定のライブラリに依存する アプリケーションをインストールするとします。 また、アプリケーションとライブラリは FreeBSD ports や packages によって 入手可能であるとします。 アプリケーションを追加するために pkg_add コマンドまたは ports システムを用いると、 インストールされていないライブラリが検出され、 先に依存するライブラリが自動的にインストールされます。
2 つの技術が非常に類似していて、 なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。 packages と ports にはそれぞれ独自の特徴があり、 どちらを使うかはあなたの好みによります。
package の利点
一般的に、あるアプリケーションの package の tarball は、 ソースコードを含む tarball より小さなサイズとなります。
packages はコンパイル作業を必要としません。 このことは、Mozilla, KDE, または GNOME といった大きなアプリケーションで重要となります。 特にシステムが遅い場合にはなおさら重要です。
packages を用いれば、 ソフトウェアのコンパイルに関する知識は必要ありません。
ports の利点
packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からインストールすることで、 たとえば Pentium 4 や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。
アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。
設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。
ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。
バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。
ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。
ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。
ports の更新状況を把握するために、 FreeBSD ports メーリングリスト や FreeBSD ports bugs メーリングリスト を購読するとよいでしょう。
Warningアプリケーションをインストールする前に、 そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。
また、 インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる ports-mgmt/portaudit をインストールしてもよいでしょう。 このコマンドは、ビルド前の port についても調査します。 インストールされている packages を確認する場合には、 portaudit -F -a コマンドを使ってください。
この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアの インストール方法や管理方法について説明します。
どんなアプリケーションをインストールするにしても、 まずあなたが何を望んで、 またその名前がなんというのかを理解している必要があります。
FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 幸運にも、多くの方法で望むものを探すことができます。
FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で http://www.FreeBSD.org/ports/ において公開しています。 ports はカテゴリに分類されています。 アプリケーションは、(名前を知っているならば) 名前で検索でき、 あるカテゴリで利用可能な アプリケーションをすべて表示させることもできます。
Dan Langille は http://www.FreshPorts.org/ で FreshPorts を公開しています。 FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。 一つまたはそれ以上の ports を “監視” することができ、 変更があるとメールで更新情報を送ってくれます。
ご希望のアプリケーションの名前がわからなければ、 FreshMeat (http://www.freshmeat.net/) のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。
port の正確な名前を知っていて、 どのカテゴリに分類されているのかを知りたいだけなら、 whereis(1) コマンドで調べることができます。 単に whereis file と入力してください。file の部分にはインストールしたいプログラム名を入れます。 システム上でプログラムが見つかったら、 そのプログラムのパスが次のように表示されます。
# whereis lsof lsof: /usr/ports/sysutils/lsof
この表示は、lsof (システムユーティリティの一つ) が /usr/ports/sysutils/lsof というディレクトリにあることを示しています。
さらに、以下の例のように echo(1) を使って port が存在するかどうかを簡単に調べることもできます。
# echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof
この方法では /usr/ports/distfiles 以下にダウンロードされたファイル名にもマッチします。
また、Ports Collection に備わっている検索機能を利用して port を検索する方法もあります。 この検索機能を利用するには、カレントディレクトリが /usr/ports である必要があります。 そのディレクトリに移動したら、 make search name=プログラム名 と入力してください。 プログラム名の部分には検索したいプログラム名を入れます。 たとえば、lsof を探したい場合には次のようにします。
# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
出力のうち特に注意して見なければならないのは “Path:” という行です。 この行は port がどこにあるかを示しています。 出力される他の情報は port をインストールする際には必要となるものではありませんので、 ここでは触れないでおきます。
もっと詳しく検索するには、 make search key=string と入力してください。 string の部分には検索したいテキストを入れます。 port 名、コメント、説明文および依存情報が検索されます。 探しているプログラムの名前を知らない場合でも、 ある目的に関連した ports の検索に利用できます。
どちらの場合でも、 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 “LSOF” を検索した結果は、 “lsof” と同じ検索結果になります。
FreeBSD には packages を管理するツールが複数あります。
sysinstall からシステムに packages をインストールしたり削除できます。 また、インストールされた packages や利用可能な packages の一覧を表示できます。 詳細については、インストール後の作業 を参照してください。
この章では、コマンドラインの package 管理ツールについて説明します。
pkg_add(1) は、ローカルファイルやネットワーク上のサーバから FreeBSD ソフトウェア package を インストールするためのユーティリティです。
Example 4-1. 手動で package をダウンロードしてローカルからインストールする
# ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit # pkg_add lsof-4.56.4.tgz
(FreeBSD CD-ROM セットのような) ローカルな packages がない場合は、 pkg_add(1) に -r オプションをつける方が楽でしょう。
このユーティリティは、このオプションを指定して実行すると
自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP
サイトからダウンロードしてインストールします。
# pkg_add -r lsof
上の例では適当な package がダウンロードされた後、インストールされます。 ユーザはこのほかに何もする必要はありません。 メインの配布サイトではなく FreeBSD Package ミラーサイトの package を使うには、 PACKAGESITE 環境変数に利用したいサイトを設定してください。 pkg_add(1) は、FTP_PASSIVE_MODE, FTP_PROXY, FTP_PASSWORD といった環境変数を参照する fetch(3) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 環境変数の一覧については fetch(3) をご覧ください。 また、上の例で lsof-4.56.4 の代わりに lsof を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 package のバージョン番号を取り除かなければなりません。 pkg_add(1) は自動的に最新版のアプリケーションを取得します。
Note: FreeBSD-CURRENT または、FreeBSD-STABLE を使用している場合、 pkg_add(1) は最新版のアプリケーションをダウンロードします。 -RELEASE を使用している場合には、 そのバージョンのリリース時にビルドされた package がダウンロードされます。 この設定は PACKAGESITE を上書きすることで変更できます。 たとえば、FreeBSD 5.4-RELEASE を使用している場合には、 pkg_add(1) を実行するとデフォルトで ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/ から packages をダウンロードします。 もし、pkg_add(1) を使って FreeBSD 5-STABLE の packages をダウンロードしたければ、 PACKAGESITE 環境変数を ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/ に設定してください。
package は .tgz や .tbz という拡張子を持つファイルとして配布されており、 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ や FreeBSD CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 /packages ディレクトリに packages が あります。packages のレイアウトは、 /usr/ports ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 All ディレクトリにはすべての package があります。
package システムのディレクトリ構造は ports のレイアウトと同一です。 両者が組み合わさって package/port システムが構成されます。
pkg_info(1) は、インストールされている packages の一覧と説明を表示するユーティリティです。
# pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ...
pkg_version(1) は、インストールされている packages のバージョンを要約して表示するユーティリティです。 package のバージョンを、現在の ports ツリーのバージョンと 比較します。
# pkg_version cvsup = docbook = ...
2 列目の記号は、インストールされているバージョンの ローカル ports ツリーのバージョンに対する 新旧を表します。
| 記号 | 意味 |
|---|---|
| = | インストールされている package のバージョンは、 ローカル ports ツリーのものと一致しています。 |
| < | インストールされているバージョンは、 ローカル ports ツリーのものより古いです。 |
| > | インストールされているバージョンは、 ローカル ports ツリーのものより新しいです (おそらくローカル ports ツリーは古くなっています)。 |
| ? | インストールされた package を ports インデックスの中に見つけることができません (インストールされた port が Ports Collection から削除されたり、 名前が変更された場合などに起こります)。 |
| * | 複数のバージョンの package が存在します。 |
| ! | インストールされた package はインデックス中に存在しますが、何らかの理由で、 インストールされた package のバージョン番号をインデックス中のエントリと比較できません。 |
インストールされている package を削除するには、 pkg_delete(1) ユーティリティを使ってください。
# pkg_delete xchat-1.7.1
pkg_delete(1) は package 名とバージョン番号の両方を必要とします。 すなわち、先ほどの例において xchat-1.7.1 を xchat とした場合には動作しません。 インストールされている package のバージョンは、 pkg_version(1) を使うと簡単に調べることができます。 バージョン番号のかわりにワイルドカードも使えます。
# pkg_delete xchat\*
上の例では、名前が xchat で始まるすべての packages が削除されます。
package に関するすべての情報は /var/db/pkg ディレクトリ以下に置かれています。 このディレクトリの下にあるファイルの中に、 インストールされたファイルの一覧やインストールされた各 package についての説明が含まれています。
このセクションでは、Ports Collection を利用してシステムにプログラムをインストールしたり、 システムから削除したりする基本的な手順について説明します。 利用可能な make のターゲットや環境変数についての詳細は ports(7) をご覧ください。
ports をインストールするためには、まず Ports Collection を用意しなくてはなりません。 Ports Collection とは、/usr/ports 以下に置かれる Makefile, 修正パッチ、 説明文などの一連のファイルのことです。
FreeBSD のシステムインストール時に、 sysinstall が Ports Collection をインストールするかどうかを尋ねてきたはずです。 No を選んだ場合、以下の作業をおこない Ports Collection をインストールしてください。
CVSup を利用する方法
ここでは、CVSup プロトコルを利用して Ports Collection をインストールする方法や最新の状態に保つ方法を簡単に説明します。 CVSup についてもっと知りたいのであれば、 CVSup を使う をご覧ください。
Note: csup は、 FreeBSD システムにおける CVSup プロトコルの実装です。 FreeBSD 6.2 から導入されました。 古い FreeBSD release のユーザは、 net/csup port/package からインストールしてください。
はじめて csup を使う際には、 /usr/ports が空であることを確認してください! 他の方法により Ports Collection がすでに用意されていると、 csup は削除されたパッチを Ports Collection から取り除かないでしょう。
csup を実行してください。
# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
cvsup.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。
Note: 自分用の ports-supfile を使って、 コマンドラインから CVSup サーバを指定することを省略したいと思う方もいるでしょう。
そのような場合には、 まず root ユーザ権限で、 /usr/share/examples/cvsup/ports-supfile を /root や、あなたのホームディレクトリなどへコピーしてください。
次に ports-supfile を編集します。
CHANGE_THIS.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。
その後、以下のように csup を実行してください。
# csup -L 2 /root/ports-supfile
csup(1) コマンドを時間をおいて実行すると、 最新の変更点がダウンロードされて、あなたの手元の Ports Collection に加えられます。 Ports Collection 全体が再度ダウンロードされることはありません。
Portsnap を利用する方法
Portsnap は Ports Collection を配布するための新しいシステムです。 Portsnap の機能についての詳細は Portsnap を使う を参照してください。
圧縮された Ports Collection のスナップショットを /var/db/portsnap にダウンロードしてください。 この作業が終われば、ネットワークへの接続を終了してもかまいません。
# portsnap fetch
初めて Portsnap を使う時は、 スナップショットをまず /usr/ports に展開してください。
# portsnap extract
すでに /usr/ports が用意されていて、 アップデートだけを行ないたいのであれば、 代わりに以下のコマンドを実行してください。
# portsnap update
sysinstall を利用する方法
ここでは、sysinstall を利用してインストールメディアから Ports Collection をインストールする方法について説明します。 この方法では、リリース時の古い Ports Collection がインストールされることに注意してください。 もし、インターネットへの接続が可能であれば、 これまでに説明した方法を使ってください。
root ユーザ権限で、以下のように sysinstall (5.2 より前の FreeBSD では /stand/sysinstall) を実行してください。
# sysinstall
スクロールダウンして Configure を選び、 Enter を押してください。
スクロールダウンして Distributions を選び、 Enter を押してください。
スクロールダウンして ports を選び、 Space キーを押してください。
Exit までスクロールアップして、 Enter を押してください。
CDROM や FTP といったインストールメディアを選択してください。
Exit までスクロールアップして、Enter を押してください。
X を押して、 sysinstall を終了してください。
一番最初に知らなければならないのは、 Ports Collection は “スケルトン” と呼ばれるもので構成されているという事実です。 port スケルトンは簡単に言うと、アプリケーションを FreeBSD 上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。 それぞれの port スケルトンには、次のファイルが含まれています。
Makefile。 Makefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、 さまざまな命令文が含まれています。
distinfo ファイル。 このファイルには、その port を構築するためにダウンロードする必要があるファイルのファイル名と、 それらのファイルがダウンロードによって壊れていないかを (md5(1) や sha256(1) を使って) 確認するためのチェックサム情報が含まれています。
files ディレクトリ。 このディレクトリには FreeBSD システム上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 修正パッチ (patch) とは基本的に、 個々のファイルに対する変更点を表した小さなファイル群のことです。 ファイルはプレインテキスト形式で、 “10 行目を削除” や “26 行目を ... に変更” などと書かれています。 修正パッチは、“diff (差分)” とも呼ばれます。 これは、修正パッチが diff(1) プログラムで作成されるからです。
このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。
pkg-descr ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。
pkg-plist ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。
これらの他に pkg-message といったファイルを含む ports もあります。 ports システムは、 このようなファイルを用いて特殊な状況にも対応しています。 これらのファイルについての詳細および ports の一般的な説明については、port 作成者のためのハンドブック をご覧下さい。
port はソースコードからアプリケーションを構築する方法を 提供しますが、実際のソースコードは含んでいません。 ソースコードは CD-ROM やインターネットから入手できます。 ソースコードはソフトウェア作者のお気に入りの形式で配布されます。 たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、 他のツールで圧縮されていたり、圧縮されずに配布されることもあります。 どのような形式で配布されているかに関わらず、 これらのプログラムのソースコードは “distfile” と呼ばれています。 以下では FreeBSD port をインストールする 2 つの方法について説明します。
Note: ports をインストールするには、 root としてログインする必要があります。
Warningport をインストールする前に、 Ports Collection が最新であることを確認してください。 また、そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。
アプリケーションをインストールする前に、 portaudit を使って セキュリティに関する脆弱性を自動的に調べることができます。 このツールは Ports Collection (ports-mgmt/portaudit) に用意されています。 新しく port をインストールする前に、 portaudit -F コマンドを実行すると、 最新の脆弱性に関するデータベースがダウンロードされます。 セキュリティの検査およびデータベースの更新は、 日々のセキュリティチェックで行なわれます。 詳しくは、portaudit(1) および periodic(8) のマニュアルページを参照してください。
Ports Collection は、ネットワークに接続できることを想定しています。 もし接続できなければ、distfile のコピーを /usr/ports/distfiles に手動で置いてください。
まず、インストールしたい port のディレクトリに移動してください。
# cd /usr/ports/sysutils/lsof
lsof ディレクトリに移動すると、 port スケルトンがあるのが確認できると思います。 次に行なうのは、port のコンパイルまたは “ビルド (build)” です。 これは、プロンプトから単に make と入力するだけで行なえます。 そうすると、次のような出力が現われるはずです。
# make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... #
コンパイルが終了してプロンプトに戻ることを確認してください。 次に port のインストールを行ないます。 port をインストールするのに必要なのは、 make コマンドに一つの単語、 install を指定することだけです。
# make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
プロンプトに戻ったら、 インストールしたプログラムは実行できるようになっています。 lsof は高い権限で動作するプログラムなので、 セキュリティに関する警告が表示されます。 ports のコンパイルや インストール中に表示されるこれらの警告に注意してください。
コンパイル時に作成される作業用ディレクトリを削除すると良いでしょう。 このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。 このディレクトリを残しておくと、ディスク容量を消費するだけでなく、 port を新しいバージョンへアップデートする際に問題を引き起こす可能性があります。
# make clean ===> Cleaning for lsof-4.57 #
Note: make、make install および make clean と三つに分けられた手順の代わりに、 最初から make install clean と実行することで、 余分な手順を二つ省くことができます。
Note: シェルによってはコマンドの実行ファイルを探す時間を短縮するために、 環境変数 PATH に登録されている ディレクトリのコマンド一覧をキャッシュするものがあります。 このようなシェルを使っているのであれば、 port をインストールしたあとで、 新しくインストールされたコマンドを用いる前に、 rehash コマンドを実行する必要があります。 このコマンドは tcsh などのシェルで動作します。 sh のようなシェルを使っているのであれば hash -r を実行してください。 詳細については、 あなたの使っているシェルのドキュメントをご覧ください。
FreeBSD Mall の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM 製品の中には distfiles を収録しているものがあります。 これらを Ports Collection で使うことができます。 DVD-ROM を /cdrom にマウントしてください。 ほかのマウントポイントを使用したければ、 CD_MOUNTPTS 変数を設定してください。 ディスク上に必要な distfiles が存在すると、 自動的に利用されます。
Note: port には CD-ROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CD-ROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります。
ports は、FTP_PASSIVE_MODE, FTP_PROXY, FTP_PASSWORD といった環境変数を参照する fetch(1) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することなります。 環境変数の一覧については fetch(3) をご覧ください。
ネットワークに常時接続できないユーザのために make fetch コマンドが用意されています。 (ネットワークに接続している時に) このコマンドを ports のトップディレクトリ (/usr/ports) で実行してください。 必要なファイルがダウンロードされます。 このコマンドは /usr/ports/net といった、より下の階層のカテゴリにおいても使うことができます。 ある port がライブラリやその他の ports に依存している場合には、 それらの distfiles はダウンロードされないことに注意してください。 port が依存しているものもダウンロードしたければ fetch の代わりに fetch-recursive を使って下さい。
Note: 前述した make fetch と同じように、トップディレクトリで make を実行するとすべての port がビルドされます。 しかしながら ports の中には同時に存在できないものがあったり、 異なる ports の別のファイルが同じ名前で インストールされる場合があることに注意してください。
めったにないことかもしれませんが、 MASTER_SITES (ファイルをダウンロードしてくる場所) に書かれているサイト以外から tarball を持ってくることが必要になる場合があります。 そのような場合には以下のように MASTER_SITES を変更してください。
# cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
上の例では MASTER_SITES を ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ に変更しています。
Note: ports の中にはビルドオプションを指定できる (または要求してくる) ものがあります。 このオプションを指定することで、 アプリケーションの機能の一部を有効もしくは無効にできます。 また、セキュリティオプションを設定したり、 その他のカスタマイズを行うことができます。 このようなアプリケーションには www/mozilla, security/gpgme や mail/sylpheed-claws などがあります。 利用可能なオプションがある場合にはメッセージが表示されます。
作業ディレクトリやターゲットディレクトリを デフォルトのものから変更したほうが有用な場合 (もしくは変更しなければならない場合) があります。 WRKDIRPREFIX 変数と PREFIX 変数を変更することで、 違うディレクトリを使用することができます。 たとえば、
# make WRKDIRPREFIX=/usr/home/example/ports install
とすると、ports は /usr/home/example/ports でコンパイルされ、すべて /usr/local 以下にインストールされます。
# make PREFIX=/usr/home/example/local install
この場合、コンパイルは /usr/ports でおこない、 /usr/home/example/local にインストールします。
もちろん、
# make WRKDIRPREFIX=../ports PREFIX=../local install
とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが、 考え方は理解していただけたと思います)。
あるいは、これらを環境変数に設定する方法もあります。 どのようにすれば良いかについては、 あなたの使っているシェルのマニュアルページを参照してください。
(X Window System に含まれる) imake を使用する ports の場合は PREFIX が機能せず、 /usr/X11R6 にインストールしようとします。 また、Perl 関連の ports も同様に PREFIX を無視して Perl ツリーにインストールします。 これらの ports で PREFIX がきちんと参照されるように変更するのは、ほとんど不可能です。
ports をコンパイルする際、ビルドオプションを設定するために ncurses ベースのメニューが表示されることがあります。 port の構築後、再びこのメニューを表示させてオプションの追加や削除、設定の変更を行いたいと思うことがあるでしょう。 このための方法はたくさんあります。 一つ目の方法は port のディレクトリに移動し、 make config と入力する方法です。 現在の設定を反映させたメニューが再び表示されます。 別の方法は make showconfig を使う方法です。 port の設定可能なオプションがすべて表示されます。 他の方法は make rmconfig の実行です。 このコマンドを実行すると選択されているすべてのオプションが削除され、 設定をもう一度やり直すことができます。 これらの方法や他の方法についての詳細は、 ports(7) マニュアルで説明されています。
ports のインストール方法について知ればおそらく、 インストールした後になって間違っていたことに気付いた時などに備えて、 それらを削除するにはどうすれば良いのか疑問に感じることでしょう。 さて、前の例 (例のまま何も変更していない人は lsof) を削除してみましょう。 packages を削除する時とまったく同じく (packages の章 で説明したように) pkg_delete(1) コマンドで ports を削除できます。
# pkg_delete lsof-4.57
まず最初に pkg_version(1) コマンドを使って、 古くなってしまった ports の中で新しいバージョンにアップデート可能なものを Ports Collection からリストアップしてください。
# pkg_version -v
Ports Collection を更新したら、port をアップグレードする前に /usr/ports/UPDATING ファイルに目を通してください。 このファイルには port をアップグレードする際にユーザが遭遇するであろう問題や、 追加で必要な作業などが記述されています。 例えば、ファイル形式の変更や設定ファイルの場所の変更、 前のバージョンと互換性がなくなったことなどが書かれています。
もし、この節に書いてあることと UPDATING に書かれていることが矛盾している場合には、 UPDATING を優先してください。
portupgrade は、 インストールした ports のアップグレードを簡単に行なうためのユーティリティです。 ports-mgmt/portupgrade port から利用できます。 他の port と同じように make install clean コマンドでインストールしてください。
# cd /usr/ports/ports-mgmt/portupgrade # make install clean
pkgdb -F コマンドを使って、 インストールされている ports を調べてください。 矛盾が検出された場合には修復してください。 アプリケーションをアップデートする前には、 この作業を定期的に行なうとよいでしょう。
portupgrade -a を実行すると、 portupgrade はシステムにインストールされている port
の中で古くなったものをすべてアップデートします。 もし、すべての ports
に対して個別にアップグレードするかどうかを確認したいのであれば、 -i オプションを使ってください。
# portupgrade -ai
ports で利用可能なすべてのアプリケーションではなく、
ある特定のアプリケーションだけを更新したいのであれば、 portupgrade
pkgname を実行してください。
アップグレードするアプリケーションが依存しているすべての ports
をまず先に更新したい場合には、 -R
オプションを使ってください。
# portupgrade -R firefox
ports ではなく packages を用いてインストールを行ないたい場合には、 -P オプションを使ってください。 このオプションを使うと、portupgrade は PKG_PATH
に登録されているローカルディレクトリを検索します。 ローカルに packages
が見つからなければ、 リモートサイトからダウンロードを試みます。 packages
をローカルに見つけることができず、 リモートサイトからもダウンロードできない場合には、 portupgrade は ports からインストールを行ないます。 ports
を使用したくなければ、-PP オプションを指定してください。
# portupgrade -PP gnome2
また、ビルドやインストールを行なわず、 distfiles (-P
が指定されている場合は packages) だけをダウンロードしたければ、 -F オプションを指定してください。 詳細は portupgrade(1)
を参照してください。
インストールした ports のアップグレードを簡単に行なうためのもうひとつのユーティリティが Portmanager です。 ports-mgmt/portmanager port から利用できます。
# cd /usr/ports/ports-mgmt/portmanager # make install clean
インストールされているすべての ports を次のような簡単なコマンドでアップグレードできます。
# portmanager -u
Portmanager の作業を確認しながら行いたい場合には、 -ui オプションを使ってください。 Portmanager を使って、 システムに新しい ports
をインストールすることもできます。 通常の make install clean コマンドと異なり、 選択した port
をビルドしインストールする前に、 依存している port をすべてアップグレードします。
# portmanager x11/gnome2
選択した port の依存関係について問題が発生した場合には、 Portmanager を使って修復することができます。 修正が終ったら、問題を含んでいた port は再構築されます。
# portmanager graphics/gimp -f
詳細については portmanager(1) を参照してください。
インストールした ports のアップグレードを行うためのもう一つのユーティリティが Portmaster です。 Portmaster は、 どの ports をアップグレードすべきかの判断を、 (他の ports に依存せずに) “base” システムのツールと /var/db/pkg/ の情報から行うよう設計されています。 ports-mgmt/portmaster から利用できます。
# cd /usr/ports/ports-mgmt/portmaster # make install clean
Portmaster は、ports を 4 つのカテゴリに分類します。
Root ports (他の port に依存しません。他の port からも依存されません。)
Trunk ports (他の port に依存しませんが、他の port から依存されます。)
Branch ports (他の port に依存し、他の port からも依存されます。)
Leaf ports (他の port に依存しますが、他の port からは依存されません。)
-L オプションを使うと、 インストールした ports
やアップデート可能な port の一覧が表示されます。
# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions available
以下のコマンドを使って、インストールされているすべての ports を簡単にアップデートできます。
# portmaster -a
Note: Portmaster のデフォルトの設定では、 インストールされている port を削除する前にバックアップ用の package が作成されます。 このバックアップは、新しいバージョンのインストールに成功すると削除されます。
-bオプションを使うと、 Portmaster はバックアップを自動的に削除しません。-iオプションを追加すると、 Portmaster をインタラクティブモードで使用できます。 このモードでは、各 port をアップグレードするかどうかの選択を対話的に行うことがでます。
アップグレードの過程でエラーに遭遇した場合には、 -f
オプションを使ってすべての ports のアップグレードや再構築をできます。
# portmaster -af
Portmaster を使ってシステムに新しい ports をインストールしたり、新しい port のコンパイルやインストール前に依存するすべての port をアップグレードできます。
# portmaster shells/bash
詳細については portmaster(8) を参照してください。
Ports Collection を使い続けていると、 そのうちディスクを食いつぶしてしまうでしょう。 ports からソフトウェアをビルドしてインストールした後には、 常に作業用の work ディレクトリを make clean コマンドで削除するようにしましょう。 以下のコマンドで Ports Collection を掃除することができます。
# portsclean -C
distfiles ディレクトリには、たくさんのソースファイルがたまっていきます。 手動でそれらのファイルを削除してもよいのですが、 どの ports からも使われていない distfiles を次のコマンドで削除できます。
# portsclean -D
また、システムにインストールされている port から使われていない distfiles をすべて削除するには、以下のコマンドを使ってください。
# portsclean -DD
Note: portsclean ユーティリティは portupgrade ツール群の一部です。
インストールした ports のうちで、 必要なくなったものは削除してください。 ports-mgmt/pkg_cutleaves port は、 この作業を自動化するツールです。
新しいアプリケーションのインストールが終わったら、 次に付属のドキュメントを読みたいと思うでしょう。 また、必要な設定ファイルを編集したり、 (デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。
port のインストール後に追加で行わなければならない作業の詳細は、 アプリケーションごとに異なります。 しかしながら、新しいアプリケーションをインストールしたばかりで、 “次は何 ?” と思っているのであれば、 以下の tips は役に立つでしょう。
どのようなファイルがどこにインストールされているのかを知りたければ、 pkg_info(1) を使ってください。 たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、 以下を実行してください。
# pkg_info -L foopackage-1.0.0 | less
上のコマンドを実行すると package としてインストールされているすべてのファイルが表示されます。 特に、man/, etc/, doc/ ディレクトリのファイルに注目してください。 それぞれ、マニュアルページ、 設定ファイル、より包括的なドキュメントが設置されています。
もし、アプリケーションのバージョンがわからなければ、 次のコマンドを実行してください。
# pkg_info | grep -i foopackage
インストールされた packages の中から、名前に foopackage を含む package が表示されます。 必要に応じてコマンドラインの foopackage を置き換えてください。
アプリケーションのマニュアルページがインストールされているのであれば、 man(1) を使ってマニュアルを読んでください。 同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。
アプリケーションのウェブサイトがあれば、 そのサイトに更なるドキュメントや FAQ がないかを調べてください。 ウェブサイトのアドレスがわからなければ、 次のコマンドで表示されるかもしれません。
# pkg_info foopackage-1.0.0
ウェブサイトが存在すると、 URL が WWW: を含む行に表示されます。
(インターネットサーバのように) システム起動時に立ち上げる必要のある port は、 サンプルスクリプトを通常 /usr/local/etc/rc.d にインストールします。 このスクリプトを調べ、 必要があれば編集したりスクリプトの名前を変更してください。 詳細は サービスの起動 をご覧ください。
port がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。
その port に対する修正案が提出されていないかどうかを 障害報告 (Problem Report) データベース で調べてください。 もし提案されていれば、 その修正を使うことができるかもしれません。
port の保守担当者に対応してもらいましょう。 make maintainer と入力するか、 Makefile を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (Makefile の $FreeBSD: 行)、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。
Note: 特定の保守担当者が存在せず、かわりに メーリングリスト が保守している ports があります。 そのような場合には、メールアドレスは
<freebsd-listname@FreeBSD.org>のようになります。 質問する際には、このことに気をつけてください。特に
<ports@FreeBSD.org>が保守している ports には、保守担当者が本当にいません。 そのメーリングリストを購読する人々からなるコミュニティが、 修正や対応をおこなっています。 もっとボランティアが必要です!
保守担当者から返信がなければ、send-pr(1) を使ってバグレポートを提出しても構いません ( FreeBSD 障害報告の書き方 をご覧ください)。
自分で直しましょう! “Ports” システムに関する詳細な情報は port 作成者のためのハンドブック にあります。 このセクションを読むと、壊れてしまった port を直したり、 自分で作った port を提出したりできるようになります!
近くの FTP サイトから package を入手しましょう。 “マスタ” package コレクションは、 ftp.FreeBSD.org の package のディレクトリ にありますが、 まずはあなたの地域の ミラーサイト を最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、pkg_add(1) を使います。
FreeBSD では、ユーザに強力なグラフィカルインタフェイスを提供 するために XFree86 を採用しています。 XFree86 は X Window System のオープン ソースな実装です。この章では FreeBSD における XFree86 のインストールと設定について 解説します。XFree86 についての情報や、 対応しているビデオハードウェアについては XFree86 の Web サイトをご覧ください。
この章を読めば以下のことがわかります。
X Window System の様々なコンポーネントと、それらが互いにどのように連携しているか。
XFree86 のインストールと設定について
様々なウィンドウマネージャのインストール方法
XFree86 での TrueType フォントの使い方
GUI ログイン (XDM) のセットアップ方法
この章を読み始める前に以下のことに注意してください。
サードパーティ製ソフトウェアのインストール方法について知っていること (Chapter 4)。
初めて X を使う場合、Microsoft Windows や Mac OS といった他の GUI 環境に慣れている人は多少ショックを受けるでしょう。
様々な X のコンポーネントについての詳細の全てや、それらがどのようにやり取りするかについては理解する必要はありませんが、基本的なことをいくつか知っていると X を使う際に強力な武器になるでしょう。
X は、UNIX 用に書かれた最初のウィンドウシステムではありませんが、最もポピュラーなものです。X のオリジナルの開発チームは X を書く前に別のウィンドウシステムを開発していました。そのシステムの名前は “W” (“Window”の W) です。X は単にローマ字でその次の文字だというだけなのです。
X は “X”、“X Window System”、“X11”、もしくはその他の用語で呼ぶことができます。X11 を “X Windows” と呼ぶと気を悪くする人もいます。詳しくは X(1) をご覧ください。
X は最初からネットワークを意識してデザインされており、“クライアント - サーバ”モデルを採用しています。 X では、“X サーバ”はキーボードやモニター、マウスが接続されたコンピュータ上で動きます。このサーバはディスプレイの表示を管理したり、キーボード、マウスなどからの入力を処理したりします。各 X アプリケーション (XTerm や Netscape など) は “クライアント”になります。クライアントは“この座標にウィンドウを描いてください”といったメッセージをサーバへ送り、サーバは“ユーザが OK ボタンを押しました”といったようなメッセージを送り返します。
家庭や小さなオフィスのような環境で、1 台しかコンピューターがないという場合には、X サーバと X クライアントは同じコンピューター上で動くことになるでしょう。しかし、X サーバを非力なデスクトップコンピューターで動かし、X アプリケーション (クライアント) は例えばオフィス全体を捌くような高機能で高価なマシンで動かすことも可能なのです。この場合、X のクライアントとサーバの通信はネットワーク越しに行なわれます。
これは、ある人々を混乱させることがあります。X での用語は彼らが想定するものとは正反対だからです。彼らは“X サーバ”は地下にある大きなパワフルなマシンであり、“X クライアント”が自分たちのデスク上にあると想像するのです。
Xサーバとはモニターとキーボードがついているマシンのことであり、Xクライアントとはウィンドウを表示するプログラムだということを思い出してください。
X のプロトコルには、クライアントとサーバのマシンが同じ OS で動いていなければならないといったことを強制するものはなにもありませんし、同じ機種で動いている必要もありません。X サーバを Microsoft Windows や Apple の Mac OS で動かすことも可能ですし、そのようなソフトウェアもフリーのものから商用のまでいろいろとあります。
FreeBSD に付いてくる X サーバは XFree86 と呼ばれるもので、FreeBSD のライセンスに似たライセンスに従ってフリーで配布されています。FreeBSD 用の商用 X サーバも入手可能です。
X のデザイン哲学は UNIX のそれに非常によく似ており、“ツールであってポリシーではない”のです。 つまり、X はあるタスクがどのように達成されるべきかを示すものではありません。その代わり、ユーザにはツールが与えられ、それらをどうするかはユーザに委ねられているのです。
この哲学は、X ではスクリーン上でウィンドウがどのように見えるべきか、マウスでそれらをどうやって動かすか、ウィンドウ間を移動するのにどういうキーストロークを使うべきか (例えば Microsoft Windows における Alt+Tab)、各ウィンドウのタイトルバーはどのように見えるべきか、それらはクローズボタンを持つべきかどうか、といったことを示すものではないというところまで拡大して解釈できます。
その代わりに、X ではそういったことを“ウィンドウマネージャ”と呼ばれるアプリケーションに任せるのです。X 用のウィンドウマネージャは以下のようにたくさんあります。AfterStep、Blackbox、ctwm、Enlightenment、fvwm、Sawfish、twm、Window Maker、などなど。これらのウィンドウマネージャはそれぞれ異なるルックアンドフィールを持っていますし、いくつかは“バーチャルデスクトップ”をサポートしていますし、いくつかはデスクトップのマネージメントにキーストロークをカスタマイズできたり、“スタート”ボタンやそれに類するものを持っているものもありますし、“テーマのサポート”をしており新しいテーマを適用することによってルックアンドフィールを完全に変えることができるものもあります。これらのウィンドウマネージャやさらに多くのものはportsコレクションの x11-wm というカテゴリーからインストールすることが可能です。
加えて、KDE や GNOME といったデスクトップ環境はともにそれぞれのデスクトップに統合された独自のウィンドウマネージャを持っています。
それぞれのウィンドウマネージャはまた異なる設定機構を備えており、手で設定ファイルを編集しなければならないものや、設定作業のほとんどを GUI ツールですることができるものもあります。少なくとも 1 つ (sawfish) は Lisp 言語の変種で書かれた設定ファイルを持っています。
フォーカスポリシー: ウィンドウマネージャのもう一つの機能はマウスの“フォーカスポリシー”に関するものです。 全てのウィンドウシステムは、ウィンドウを選択しキーストロークを受け付けるようにするための方法が必要です。 そして、どのウィンドウがアクティブなのかを示す必要もあります。
よく知られているフォーカスポリシーは “click-to-focus” と呼ばれるもので、このモデルは Microsoft Windows で利用されており、あるウィンドウ内でマウスをクリックすればそのウィンドウがアクティブになる、というものです。
X は特定のフォーカスポリシーを採用していません。代わりにウィンドウマネージャがそれをコントロールします。それぞれのウィンドウマネージャが、それぞれのフォーカスポリシーをサポートしています。全てのものは click-to-focus をサポートしていますし、多くのものは他の方法もサポートしています。
最もポピュラーなフォーカスポリシーは次のものでしょう
- focus-follows-mouse
マウスポインターの下にいるウィンドウがフォーカスされるというものです。ウィンドウは最前面にある必要はありません。フォーカスを変えるには他のウィンドウにマウスポインターを動かすだけです。クリックする必要はありません。
- sloppy-focus
これは focus-follows-mouse を少し拡張したものです。focus-follows-mouse では、マウスがルートウィンドウ (背景) に移動した時には、フォーカスされているウィンドウがなくなり、キーストロークは単に破棄されます。sloppy-focus であればポインターが別のウィンドウに移った時のみフォーカスが変わり、現在のウィンドウから出ただけでは変わりません。
- click-to-focus
アクティブなウィンドウはマウスクリックにより選択されます。 ウィンドウは“持ち上げられ”、他の全てのウィンドウの前にきます。 ポインターが別のウィンドウに動いた時でも、全てのキーストロークがこのウィンドウに届きます。
多くのウィンドウマネージャはこういったものに加え、他のポリシーもサポートしています。ウィンドウマネージャ自身のドキュメントもよく読んでください。
X のツールを提供してもポリシーは提供しないというアプローチは、各アプリケーションでスクリーンに現われるウィジェットにも適用されます。
“ウィジェット”はクリック可能であったり、他の方法で操作可能な全てのユーザインタフェイス用アイテムを指す用語です。ボタンやチェックボックス、ラジオボタン、アイコン、リスト、などがそうです。Microsoft Windows はこれらを“コントロール”と呼んでいます。
Microsoft Windows や Apple の Mac OS はともに非常に厳密なポリシーをウィジェットに課しています。アプリケーション開発者は共通のルックアンドフィールに確実に従うことを想定されているわけです。X では、グラフィカルなスタイルやウィジェットのセットが特定のものに合わせたりすることに対してそれほど意識していませんでした。
すなわち、X アプリケーションに共通のルックアンドフィールを期待してはいけません。いくつかのポピュラーなウィジェットセットやその亜種があります。MIT のオリジナルの Athena ウィジェットや Motif (Microsoft Windows をモデルにした、斜めになったエッジやグレイの陰影のウィジェットセットを持っている)、OpenLook などです。
比較的新しい X アプリケーションのほとんどが、KDE で使われている Qt や GNOME プロジェクトで使われている GTK のようにモダンな見た目を持ったウィジェットセットを使っています。この点で言えば、UNIX のルックアンドフィールは収斂されてきており、初心者がより簡単に使えるようになってきています。
XFree86 をインストールする前にどのバージョンを動かすかを決めてください。 XFree86 3.x は XFree86 におけるメンテナンスブランチです。 これは非常に安定しており、非常にたくさんの数のグラフィックカードをサポートしているのですが、もう新しい機能は追加されません。XFree86 4.X はシステムを完全に見直して設計したものであり、フォント自体のもっと良いサポートやアンチエイリアスなどといった多くの新しい機能も追加されています。残念ながら、この新しいアーキテクチャーではビデオドライバーの書き直しが必要なため、3.X でサポートされていたいくつかの古いカードはまだサポートされていません。 新規の開発と新しいグラフィックカードへの対応は全てこのブランチで行われているため、XFree86 4.X は現在 FreeBSD におけるデフォルトの X Window System になっています。
FreeBSD のセットアッププログラムを使えば、OS のインストール時に XFree86 4.X をインストールして設定することができます (Section 2.4.2に書かれています)。 XFree86 3.x をインストールして動かしたい場合は、まずベースとなる FreeBSD をインストールしてから XFree86 のインストールを行うことになります。 例えば、XFree86 3.X を ports コレクションからビルドしてインストールする場合には次のようにします。
# cd /usr/ports/x11/XFree86 # make all install clean
他に、XFree86 の Webサイトで直接提供されている FreeBSD 用のバイナリを利用して、いずれかのバージョンの XFree86 をインストールするという方法もあります。 XFree86 4.X については pkg_add(1) ツールを用いるバイナリパッケージも提供されています。
この章の残りでは、XFree86 をどのように設定すればいいか、また productive なデスクトップ環境をどのように設定するかについて解説します。
XFree86 4.Xの設定を始める前に、 次の情報が必要となります。
モニターの仕様
ビデオアダプタのチップセット
ビデオアダプタのメモリー
モニターの仕様は、XFree86 がどの解像度とリフレッシュレートで動くかを決定するために用いられます。 こういった仕様は、通常はモニターに付いてくるドキュメントや製造元のWebサイトから取得することができます。必要なものは二つの数字の範囲、一つは水平走査周波数でもう一つは垂直同期周波数、です。
ビデオアダプタのチップセットは XFree86 がグラフィックハードウェアとやり取りするためにどのドライバーモジュールを使うかを定義します。ほとんどのチップセットが自動認識されますが、正常に認識されない時のために知っておくとよいでしょう。
ビデオメモリーは、グラフィックアダプタがどの解像度とどの色数で動くことができるかを決めます。 これは、ユーザが自分のシステムにおける制限を理解するために知っておくことが重要です。
XFree86 4.X の設定は複数のステップの処理に分けられます。
まずは XFree86 に -configure
オプションを付けて初期設定ファイルを作りましょう。スーパーユーザになって次のようにしてください。
# XFree86 -configure
これにより、現在のワーキングディレクトリに XF86Config.new という XFree86 の設定ファイルのスケルトンが生成されます。 XFree86 プログラムはシステム上のグラフィックハードウェアを検出し、 そのハードウェア用の適切なドライバーを読み込む設定ファイルを作ります。
次のステップは、作成した設定ファイルで XFree86 が動くことを確認することです。 そのためには以下のようにします。
# XFree86 -xf86config XF86Config.new
黒とグレーのグリッドと X のマウスポインターが現われればその設定は成功です。 テストから抜け出すためには単に次のキーを同時に押します。 Ctrl+Alt+Backspace
次は XF86Config.new を好みに合うように調整します。 emacs(1) や ee(1) のようなテキストエディターでファイルを開いてください。 まずモニターの周波数を加えます。これらは水平と垂直の同期周波数と表現されるのが普通です。 これらの値は XF86Config.new の "Monitor" のセクションに次のように加えます。
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSection
HorizSync と VertRefresh
というキーワードが設定ファイル中にない場合があります。その場合には、 Horizsync キーワードの後には水平走査周波数の、 VertRefresh
キーワードの後には垂直同期周波数の正しい値を加えてください。
上の例では対象となるモニターの周波数が書かれています。
X はモニターが対応していれば DPMS (Energy Star) 機能を使うことができます。 'xset' プログラムでタイムアウトをコントロールしたり、強制的にスタンバイ、サスペンドや電源オフにすることができます。 モニターの DPMS 機能を有効にしたい場合は、"Monitor" のセクションに次の行を加えてください。
Option "DPMS"
XF86Config.new はエディターで開いたままにしておき、 デフォルトの解像度と色数を好みで選びましょう。 Screen セクションに以下のように書きます。
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection
DefaultDepth
というキーワードはデフォルトで動く色数について記述するためのものです。 XFree86(1)
のコマンドラインスイッチ -bpp
が使用された場合はこちらが優先されます。 Modes
というキーワードは与えられた色数におけるデフォルトの解像度を記述しておくためのものです。
上の例ではデフォルトの色数はピクセルあたり24ビットであり、この色数での解像度は1024ピクセル×768ピクセルです。
1024x768の解像度で動かすためには DefaultDepth
というキーワードに 24 という値を与えて書き加えておき、 "Display" サブセクションに求める Depth と Modes
のキーワードを書いておきます。
ターゲットのシステムのグラフィックハードウェアによって定義されているように、VESAスタンダードモードのみがサポートされていることに注意してください。
最後に、設定ファイルを保存し、上の例にあるようにテストしてみてください。全てうまくいったなら、XFree86(1) が見つけることができる共通の場所に設定ファイルを置きます。 これは、通常は /etc/X11/XF86Config や /usr/X11R6/etc/X11/XF86Config です。
# cp XF86Config.new /etc/X11/XF86Config
設定ファイルを共通の場所に置いたら、設定は完了です。 startx(1) で XFree86 4.X を起動するために x11/wrapper ポートをインストールします。 また、XFree86 4.X を xdm(1) で立ち上げることも可能です。
Intel i810 統合チップセットを設定するには、XFree86にカードを制御させるためにAGP プログラミングインタフェイスである agpgart が必要になります。 agpgart を利用するには、kldload(8) を使って agp.ko というカーネルローダブルモジュールをカーネルにロードしておく必要があります。 これは、/boot/loader.conf に次のように書いておけば loader(8) がブート時に自動的にやってくれます。
agp_load="YES"
次に、プログラミングインタフェイス用にデバイスノードを作る必要があります。 AGP のデバイスノードを作るには、/dev で MAKEDEV(8) を次のように起動します。
# cd /dev # sh MAKEDEV agpgart
これで他のグラフィックカードと同様に設定を行うことができるようになります。
もし XFree86 4.1.0 (もしくはそれ以降) を使っており、 fbPictureInit といったようなシンボルが見つからないというメッセージが現われるなら、 XFree86 設定ファイルで Driver "i810" の後に次のような行を入れてみてください。
Option "NoDDC"
XFree86 に付いてくるデフォルトのフォントは通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです。 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし、 Netscape での小さなフォントは頭が悪そうに見えます。 しかし、世の中には質の高い Type1 (PostScript) フォントがいくつかあり、 XFree86 ではバージョン 3.X でも 4.X でもそれらを簡単に利用することができます。 例えば、URW フォントコレクション (x11-fonts/urwfonts) には高品質の Type1 フォント (Times Roman、Helvetica、Palatino など) が含まれています。 freefont コレクション (x11-fonts/freefont) にはもっとたくさんのフォントが含まれていますが、 それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり、 スクリーンフォントとしては十分ではありません。さらに、XFree86 は簡単に TrueType フォントを使うように設定することも可能です。 後に出てくる TrueType フォントのセクション を参照してください。
上記の Type1 フォントコレクションを ports から入れる場合には次のコマンドを実行してください。
# cd /usr/ports/x11-fonts/urwfonts # make install clean
freefont や他のコレクションでも同じようにします。 X サーバにこれらのフォントがあることを教えるには (XFree86 バージョン 3 の場合は /etc/、 バージョン 4 では /etc/X11/ にある) XF86Config の適切な場所に次のような行を加えます。
FontPath "/usr/X11R6/lib/X11/fonts/URW/"
別の方法としては、X のセッション中に次のようなコマンドラインを実行します。
% xset fp+ /usr/X11R6/lib/X11/fonts/URW % xset fp rehash
これは動くのですが、X のセッションが終了すると消えてしまいます。 消えないようにするには X の起動時に読み込まれるファイル (通常の startx セッションの場合は ~/.xinitrc, XDM のようなグラフィカルなログインマネージャを通してログインする時は ~/.xsession) に加えておきます。 三番目の方法は新しい XftConfig ファイルを使うことです。 これに関しては アンチエイリアスのセクションを参照してください。
XFree86 4.X には TrueType フォントのレンダリング機能が組み込まれています。 この機能を実現するために二つの異なるモジュールがあります。 ここでは、"freetype" のほうがより他のフォントレンダリングバックエンドと似ているため、 このモジュールを使うことにします。 freetype モジュールを使うためには /etc/X11/XF86Config ファイルに以下の行を追加するだけです。
Load "freetype"
XFree86 3.3.X の場合、 TrueType フォントサーバが別に必要となります。 Xfstt がよく使われるものです。 Xfstt をインストールするのは簡単で、 x11-servers/Xfstt ポートを利用してください。
さて、まずは TrueType フォント用のディレクトリ (例えば /usr/X11R6/lib/X11/fonts/TrueType) を作り、そこに TrueType フォントを全て放り込みましょう。 Macintosh の TrueType フォントは、そのままでは使うことができませんので注意してください。 XFree86 で使うには Unix/DOS/Windows 用のフォーマットでなければなりません。 ファイルを置いたら ttmkfdir を使って fonts.dir ファイルを作ってください。 このファイルにより、X は新しいファイルがイントールされたことを理解します。 ttmkfdir は FreeBSD Ports コレクション、 x11-fonts/ttmkfdir、からインストールできます。
# cd /usr/X11R6/lib/X11/fonts/TrueType # ttmkfdir > fonts.dir
次に TrueType フォントのディレクトリをフォントパスに追加します。 上の Type1 フォントの場合と同じように、
% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType % xset fp rehashとするか、もしくは XF86Config ファイルに
FontPath 行を追加するのです。これで終わりです。Netscapeや Gimp、StarOffice といった全ての X アプリケーションから TrueType フォントを使うことができます。 (高解像度なディスプレイで見る Web ページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう。
XFree86 では 4.0.2 以降でフォントのアンチエイリアスをサポートしています。 今のところ、ほとんど全てのソフトがこの新しい機能を使うメリットを亨受するようにはなっていません。 しかし、Qt (KDE デスクトップ用のツールキット) はサポートしていますので、 XFree86 4.0.2 以降と Qt 2.3 以降及び KDE を使う場合には全ての KDE/Qt アプリケーションでアンチエイリアスなフォントを使うことができます。
アンチエイリアスを使うように設定するには、 /usr/X11R6/lib/X11/XftConfig ファイルを作ります (既にある場合には編集してください)。 このファイルを使えばいくつかの先進的な機能を使うことができるのですが、 このセクションでは最も簡単なところだけを解説します。
まず、X サーバに対してアンチエイリアスをかけるべきフォントを指定します。 それぞれのフォントディレクトリに対して次のような行を加えます。
dir "/usr/X11R6/lib/X11/Type1"
アンチエイリアスをかけたい他のフォントのディレクトリ (URW や truetype など) についても同じようにします。 アンチエイリアスはスケーラブルなフォント (基本的には Type1 と TrueType) にのみ有効ですので、ビットマップフォントのディレクトリは加えないようにしてください。 ここに含めたディレクトリは XF86Config ではコメントアウトします。
アンチエイリアスをかけることによって境界が少しぼやけ、 そのためにとても小さなテキストはさらに読みやすくなり、 大きなフォントでは“ギザギザ”が消えるのです。 しかし、普通のテキストにかけた場合には目が疲れることになります。 9から13ポイントのサイズのフォントについて、アンチエイリアスをかけないようにするには次の行を加えます。
match
any size > 8
any size < 14
edit
antialias = false;
いくつかの等幅フォントは、 アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります。 特に KDE でその傾向があるようです。 解決策の一つとして、そういったフォントのスペーシングを100に設定する方法があります。 そうするためには次の行を加えてください。
match any family == "fixed" edit family =+ "mono";
match any family == "console" edit family =+ "mono";
(これによりfixedというフォントに他の "mono" という名前のエイリアスを付けます) そして次の行も加えてください。
match any family == "mono" edit spacing = 100;
等幅フォントが必要な時にはつねに Lucidux を使うように (このフォントは実際見目もよく、スペーシングの問題もありません) するためには最後の行を次のように変更します (最後の行は異なるものに同じファミリー名を付けています)。
match any family == "mono" edit family += "LuciduxMono";
match any family == "Lucidux Mono" edit family += "LuciduxMono";
match any family == "LuciduxMono" edit family =+ "Lucidux Mono";
最後に、このファイルを自分の .xftconfig として保存し、次のコマンドを追加します。
includeif "~/.xftconfig"
最後に一つ。LCD スクリーンではサブピクセルサンプリングが必要な場合があります。 これは、基本的には (水平方向に分かれている) 赤、緑、 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので、 そうすることによって劇的な結果が得られます。 これを有効にするには XftConfig ファイルに次の行を加えます (ディスプレイの種類にもよりますが最後は ``rgb'' ではなく ``bgr''や ``vrgb''、``vbgr'' の場合もあるので、試してみて最も良いものを使ってください)。
match edit rgba=rgb;
アンチエイリアスは、次に X サーバを立ち上げた時から有効になります。 しかし、上でも述べたようにその恩恵を受けるにはプログラム側での対処も必要です。 今のところ Qt は対応しているため、KDE 環境全体でアンチエイリアスのかかったフォントを用いることができます (KDE についての詳しいことは Section 5.7.3.2 をご覧ください)。 gtk+ を同じようにするパッチもありますので、そのパッチを当てた gtk+ を使ってコンパイルし直せば GNOME 環境や Mozilla もまたアンチエイリアスなフォントを使うことができます。 実際には x11/gdkxft という port があり、 リコンパイルしなくてもアンチエイリアスなフォントを使うことができます。 詳しくは Section 5.7.1.3 をご覧ください。
アンチエイリアスは、FreeBSD や XFree86 ではまだ新しい機能ですが、その設定はもっと簡単になるでしょうし、 すぐにもっとたくさんのアプリケーションがサポートするようになるでしょう。
X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり、ログインセッションの管理に用います。 最低限の機能を実装した “X 端末”やデスクトップ、 大規模なネットワークディレプレイサーバといった場面ではこれが有用です。 X Window System はネットワークとプロトコルから独立しているため、 ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります。 XDM はどのディスプレイサーバに接続するかを選択でき、ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェイスを提供しています。
XDM がユーザに getty(8) (詳しくはSection 18.3.3をご覧ください) と同じ機能を提供することを考えてみてください。 つまり、ディスプレイ上でシステムへのログインができ、ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです。 それからXDMは、ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます。 この時点で、XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示することができるのです。
XDM のデーモンプログラムは /usr/X11R6/bin/xdm にあります。 このプログラムは root になればいつでも起動することができ、 ローカルマシン上のディスプレイの管理を始めます。 マシンをブートする際、いつも XDM を起動したい場合には、/etc/ttys にそのためのエントリを加えておくのが簡単です。 このファイルのフォーマットや使用方法についての詳細は Section 18.3.3.1 を参照してください。デフォルトの /etc/ttys ファイルには仮想端末上で XDM のデーモンプログラムを起動するための行:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureがあります。このエントリーはデフォルトでは無効になっており、 有効にするには 5 番目のカラムを off から on にし、Section 18.3.3.6 の指示に従って init(8) を再起動します。最初のカラムはこのプログラムが管理する端末の名前で、 この場合 ttyv8 になります。 つまり、XDM は 9 番目仮想端末で起動されるということです。
XDM の設定用ディレクトリは /usr/X11R6/lib/X11/xdm です。 このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります。 だいたいは以下のような感じです。
| ファイル | 説明 |
|---|---|
| Xaccess | クライアント認証のルールセット |
| Xresources | デフォルトの X リソース |
| Xservers | 管理すべきリモートやローカルのディスプレイのリスト |
| Xsession | デフォルトのログイン時のセッションスクリプト |
| Xsetup_* | ログインインタフェイスの前にアプリケーションを起動するためのスクリプト |
| xdm-config | このマシンで動いている全てのディスプレイのグローバルな設定 |
| xdm-errors | サーバプログラムによって生成されるエラー |
| xdm-pid | 現在動いている XDM のプロセス ID |
このディレクトリにはまた、XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります。 それぞれのファイルの目的を簡単に解説しましょう。 正確な文法や使い方は xdm(1) に記述されています。
デフォルトの設定では、単純な四角のログインウィンドウがあり、 そこにはマシンのホスト名が大きなフォントで表示され、“Login:” と “Password:” のプロンプトがその下に表示されています。 XDM スクリーンのルックアンドフィールを変えるにはここから始めるのがいいでしょう。
XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます。 このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます。 デフォルトでは、どんなクライアントからの接続も許可するようになっていますが、 xdm-config を変更してリモートからのコネクションを待ち受けるようにしない限り問題ではありません。
これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです。 このファイルでログインプログラムの見た目を変更することができます。 フォーマットは XFree86 のドキュメントで記述されている app-defaults ファイルのものと同じです。
XDM でログインした後に実行されるデフォルトのセッションスクリプトです。 通常、各ユーザは ~/.xsessionrc というカスタマイズしたセッションスクリプトを持っており、こちらが優先されます。
これらは chooser やログインインタフェイスが表示される前に自動的に実行されます。 それぞれのディスプレイには、 Xsetup_ に続けてローカルのディスプレイ番号を付けたもの (例えばXsetup_0) を名前とするスクリプトがあります。 典型的な使い方は xconsole のようなバックグラウンドで動かすプログラムを一つか二つ起動することです。
このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます。 XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合、 このファイルのエラーメッセージを見てください。 そういったメッセージは各ユーザの ~/.xsession-errors にもセッション毎に書き出されます。
あるディスプレイサーバに他のクライアントが接続することができるようにするために、 アクセスコントロールのルールを編集し、コネクションリスナーを有効にします。 デフォルトでは保守的な設定になっています。 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) を参照したりしてください。
デフォルトの XDM に代わるものがいくつかあります。 一つは KDM (KDE に付属しています) はその一つであり、この章の後ろで解説します。 KDM はログイン時にウィンドウマネージャを選ぶことができるのに加え、 見た目もかなり綺麗にしてくれます。
このセクションでは、FreeBSD 上の X で利用可能ないくつかのデスクトップ環境について解説します。 “デスクトップ環境”とは、単なるウィンドウマネージャから KDE や GNOME といったような完全なデスクトップアプリケーションスイートまでカバーします。
GNOME はユーザフレンドリーなデスクトップ環境で、 ユーザはコンピューターを簡単に使ったり設定したりできるようになります。 GNOME にはパネル (アプリケーションを起動したり状態を表示したりするもの) 、デスクトップ (データやアプリケーションが置かれる場所)、 標準的なデスクトップツールやアプリケーションのセット、 そしてアプリケーションが互いにうまくやり取りできるような仕組みが含まれています。 他の OS や環境に慣れている人でも GNOME の提供するグラフィック環境であれば心地よく感じるでしょう。
GNOME をインストールする最も簡単な方法は、 第 2 章で解説した FreeBSD のインストールメニューの“デスクトップ環境の設定”を通して行うことです。 また、package や ports を利用しても簡単にインストールできます。
GNOME packageをネットワークからインストールするには、 以下のようにするだけです。
# pkg_add -r gnome
GNOME をソースから構築する場合、 次のように ports ツリーを使いましょう。
# cd /usr/ports/x11/gnome # make install clean
GNOMEがインストールできたら、デフォルトのウィンドウマネージャの代わりに GNOME を起動するように X サーバに教えます。 自分の .xinitrc が既にある場合には、ウィンドウマネージャを起動するところの行を /usr/X11R6/bin/gnome-session を起動するように変更するだけです。 特にこのファイルを用意していない場合には次のようにすれば十分でしょう。
% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc
次に、startx とタイプすれば GNOME デスクトップ環境が起動します。
Note: もし XDM のようなディスプレイマネージャを使っているなら、 この方法ではうまくいきません。その代わり、実行可能な .xsession というファイルを作成し、 同じコマンドを起動するようにします。 そのためには、このファイルを編集してウィンドウマネージャを /usr/X11R6/bin/gnome-session で置き換えます。
% echo "#!/bin/sh" > ~/.xsession % echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession % chmod +x ~/.xsession
もう一つの方法は、ログイン時にウィンドウマネージャを選択できるようにディスプレイマネージャを設定することです。 KDE2 の詳細についてのセクションで KDE のディスプレイマネージャである kdm を使ってどのようにすればいいのかを解説しています。
XFree86 デスクトップでは、フォントのアンチエイリアスは KDE 環境ではじめて登場し標準のインストールでサポートされていますが、 GNOME 環境のような gtk アプリケーションでも可能です。 最も素直なやり方は恐らく x11/gdkxft port にある libgdkxftライブラリ を使うことです。 この port をインストールしたら /usr/X11R6/share/doc/gdkxft/README を注意深く読んでください。
あとは gtk アプリケーションにフォントのレンダリング関数を標準の libgdk.so よりも前に libgdkxft.so から探すようにさせるだけです。 これは、環境変数が正しい位置を指すようにするだけでできます。 Bourne シェル (/bin/sh) 系のシェルの場合、 (Gimp を起動するなら) 次のようにタイプします。
% LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so gimp
csh 系のシェルであれば次のようにしてください。
% setenv LD_PRELOAD /usr/X11R6/lib/libgdkxft.so % gimp
もしくは、
LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so
export LD_PRELOAD
というコマンドを、X をどのように立ち上げるかに依って .xinitrc や .xsession, もしくは /usr/X11R6/lib/X11/xdm/Xsession に書いておきます。 ただし、こうすると GTK の Linux バイナリを起動する時にトラブるかもしれません。
KDE は最近の簡単に使えるデスクトップ環境です。 KDE によりユーザは以下のようなメリットを亨受します。
美しい現代風のデスクトップ
ネットワーク透過なデスクトップ
KDE デスクトップやそのアプリケーションを使う際の便利で統一されたヘルプにアクセスできるような統合されたヘルプシステム
全ての KDE アプリケーションで統一されたルックアンドフィール
標準化されたメニュー、ツールバー、キーバインディング、カラースキームなど
国際化: KDE は 40を越える言語で利用可能
集中したダイアログベースのデスクトップ設定
膨大な数の KDE アプリケーション
KDE はその “KParts” テクノロジーをベースにしたオフィススイートを持っており、 それにはスプレッドシート、プレゼンテーションアプリケーション、オーガナイザー、 ニュースクライアントなどが含まれています。 KDE にはまた Konqueror と呼ばれる Web ブラウザーも付属しており、これは Unix システム上の他の Web ブラウザーの強力な競争相手です。 KDE の詳細については KDE の Webサイトをご覧ください。
GNOME や他のデスクトップ環境と全く同じように、 KDE をインストールする最も簡単な方法は第 2 章にある FreeBSD のインストールメニューでの“デスクトップ設定”を利用することです。 またまた同じことですが、package や ports コレクションからインストールするのも簡単です。
ネットワーク越しに KDE2 package をインストールするには次のようにします。
# pkg_add -r kde2
ソースから KDE を構築するには次のように ports ツリーを使いましょう
# cd /usr/ports/x11/kde2 # make install clean
KDE2 がインストールできたら X サーバに、デフォルトのウィンドウマネージャの代わりにこのアプリケーションを立ち上げるように教えます。 .xinitrc ファイルを次のように編集しましょう。
% echo "/usr/X11R6/bin/startkde" > ~/.xinitrc
さぁ、これで startx でいつ X Window System を立ち上げても KDE2 がデスクトップになります。
xdm のようなディスプレイマネージャを使っている場合、 設定は少し異なります。 代わりに .xsession ファイルを編集しましょう。 kdm 用の説明はこの章の後のほうにあります。
さぁ、KDE2 のインストールができました。 ほとんどのことはヘルプページを見たりいろんなメニューをつつけばわかるでしょう。 Windows や Mac のユーザにも簡単なはずです。
KDE2 の最も良いリファレンスはオンラインドキュメントです。 KDE には独自の Web ブラウザー Konqueror が付属してますし、膨大な数の便利なアプリケーションや詳しいドキュメントもあります。 このセクションの残りではなんとなく使っているだけでは理解し難い技術的なところを解説します。
マルチユーザシステムの管理者であれば、ユーザを迎えるにあたってグラフィカルなログインスクリーンが欲しいと思うかもしれません。 xdm は上で述べたようにその目的で使うことができます。 しかしながら、KDE にはその代わりになる KDM が付いており、より魅力的な見た目で、ログイン時のオプションもたくさんあります。 特に、(メニューを使って) ログイン後にどのデスクトップ環境か (KDE2 や GNOME など) を簡単に選ぶこともできます。
まず最初に root で KDE2 のコントロールパネル kcontrol を起動しましょう。 一般には X 環境全体を root で動かすのは安全ではありませんので、 ウィンドウマネージャは普通のユーザで起動しておいて (xterm や KDE の konsole のような) ターミナルウィンドウを開き、su コマンドで root になり (そのユーザは wheel グループに入ってなければなりません) kcontrol とタイプします。
左側にあるシステム と書かれたアイコンをクリックし、 ログインマネージャ をクリックします。 右側には様々な設定オプションがあり、これらについては KDE のマニュアルに細かく解説されています。右側にある セッション をクリックしてください。 新規追加 をクリックして様々なウィンドウマネージャやデスクトップ環境を加えます。 これらはただのラベルですので startkde や gnome-session ではなく KDE や GNOME とできます。 failsafe というラベルも入れてください。
他のメニューでも遊んでみてください。それらはだいたい見た目に関するもので、 見ればわかります。終わったら下のほうにある 適用 ボタンをクリックしてコントロールセンターを終了します。
(KDE や GNOME といった) ラベルが何かを kdm が確実に理解してくれるように、 xdm で使われているファイルを編集します。
Note: KDE 2.2 では、これは変更され kdm は独自の設定ファイルを持ちます。 詳しくは KDE 2.2 のドキュメントを参照してください。
case $# in
1)
case $1 in
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esac
このセクションにもう少し行を追加する必要があります。 “KDE2” や “GNOME” というラベルが付いてると仮定すると、 以下の行を追加してください。
case $# in
1)
case $1 in
kde)
exec /usr/local/bin/startkde
;;
GNOME)
exec /usr/X11R6/bin/gnome-session
;;
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esac
KDE を尊重してログイン時のデスクトップのバックグラウンドを変える場合には /usr/X11R6/lib/X11/xdm/Xsetup_0 に次の行を加えます。
/usr/local/bin/kdmdesktop
最後に、次のブート時で立ち上がるように /etc/ttys に kdm を書きます。 上の xdm のセクションの解説で /usr/X11R6/bin/xdm となっている部分を /usr/local/bin/kdm とすればいいだけです。
4.0.2 以降、XFree86 ではその "RENDER" 拡張によってアンチエイリアスがサポートされています。 (KDE で利用されているツールキットである) Qt では 2.3 以降でこの拡張がサポートされています。 その設定は X11 フォントでのアンチエイリアスに関して Section 5.5.3 で解説されています。従って最新のソフトウェアであれば KDE2 デスクトップ上でアンチエイリアスを利用することが可能なのです。 KDE2 のメニューから 設定 -> ルックアンドフィール -> フォント と辿り、 “フォントとアイコンをアンチエイリアス表示” をクリックしてください。 KDE の一部になっていない Qt アプリケーションの場合、 QT_XFT という環境変数をプログラムを起動する前に設定する必要があります。
XFCE は GNOME で使われている GTK ツールキットをベースにしたデスクトップ環境ですが、非常に軽く、 使用や設定が簡単なのにも関わらずシンプルで効率的なデスクトップです。 見ためとしては商用 Unix システムが採用している CDE にかなり似ています。XFCE の機能のいくつかを下に挙げておきます。
シンプルで使いやすいデスクトップ
マウスのドラッグアンドドロップなどで全ての設定が可能
CDE に似たメインパネルとメニューやアプレット、ランチャー
統合されたウィンドウマネージャ、ファイルマネージャ、サウンドマネージャと GNOME 準拠のモジュールなど
(GTK なので) テーマをサポート
速くて軽くて効率的: 古いマシンや遅いマシン、メモリーの限られたマシン向き
XFCE に関する詳しい情報は XFCE の Web サイトから得られます。
(この文章を書いている時点で) xfce のバイナリーパッケージがあります。インストールするにはただ次のようにタイプするだけです
# pkg_add -r xfce
また、ports コレクションを利用してソースから作ることも可能です
# cd /usr/ports/x11-wm/xfce # make install clean
次に X が起動した時に XFCE が起動されるように設定します。 次のようにしてください。
% echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc
次に X が起動する時 XFCE のデスクトップが立ち上がります。 上と同様に、xdm のようなディスプレイマネージャを使っている場合には GNOME のセクションに書いてあるのと同じように .xsession ファイルを作り、/usr/X11R6/bin/startxfce を起動するようにします。 もしくは、kdm のセクションにあるようにディスプレイマネージャから XFCE を選ぶことができるように設定します。
第 1 部では基礎的なことがらを説明したので、 FreeBSD ハンドブックの第 2 部では FreeBSD でよく使われる機能について説明します。 各章の内容は以下のとおりです。
ブラウザ、生産的なツール、ドキュメントビューアといった、 人気があって便利なデスクトップアプリケーションの紹介
FreeBSD で利用可能なマルチメディアツールの紹介
システムで特別な機能を有効にするために、 カスタムカーネルを構築する手順の説明
デスクトップおよびネットワーク接続両方のプリンタの設定に関する、 印刷システムの詳細な説明
FreeBSD システムで Linux アプリケーションを実行する方法
これらの章では、読み飛ばしを推奨しているものもあります。 これについてはそれぞれの章の始めにある概要に書かれています。
FreeBSD では、Web ブラウザやワードプロセッサといった たくさんの種類のデスクトップアプリケーションを利用できます。 その多くは packages や Ports Collection を用いて導入できます。 新しいユーザの多くは、 デスクトップにこの種のアプリケーションがあることを期待しているでしょう。 この章では、人気の高いデスクトップアプリケーションを packages や Ports Collection から簡単にインストールする方法について説明します。
ports からプログラムをインストールする場合、 そのプログラムはソースからコンパイルされることに注意してください。 コンパイルする対象やマシンの性能にもよりますが、 この作業にはとても時間がかかることがあります。 ソースからコンパイルする時間がない場合には、 Ports Collection に収録されているほとんどのプログラムを、 あらかじめコンパイルされた packages からインストールできます。
FreeBSD における Linux バイナリ互換機能によって、Linux 用に開発された多くのアプリケーションを あなたのデスクトップでも利用できます。 どんな Linux アプリケーションをインストールする場合でも、 事前に Chapter 10 を読んでおくことをおすすめします。 Linux バイナリ互換機能を用いた port の多くは “linux-” からはじまる名前となっています。 whereis(1) などを使って特定の port を探す場合には、このことを思い出してください。 この章では、Linux アプリケーションをインストールする前に Linux バイナリ互換機能を有効にしてあることを前提とします。
この章では、以下の分野について説明します。
Web ブラウザ (Firefox, Opera, Konqueror など)
生産的なアプリケーション (KOffice, AbiWord, GIMP, OpenOffice.org など)
ドキュメントビューア (Acrobat Reader®, gv, Xpdf, GQview など)
財務管理ソフトウェア (GnuCash, Gnumeric, Abacus など)
この章を読む前に、以下のことを理解しておく必要があります。
サードパーティ製ソフトウェアのインストール方法 (Chapter 4)
Linux ソフトウェアのインストール方法 (Chapter 10)
マルチメディア環境を整える方法については Chapter 7 を、 電子メールを設定して使いたい場合には Chapter 20 を参照してください。
訳注: この文書は英語で書かれている原文をそのまま邦訳したものです。 必ずしも各アプリケーションで日本語が扱えるとは限らないことに注意してください。 日本語に対応したアプリケーションは、Ports Collection の japanese ディレクトリにあるかもしれません。
FreeBSD では Web ブラウザは事前にインストールされていません。 そのかわり、Ports Collection の www ディレクトリには数多くの Web ブラウザ が用意されており、 すぐにインストールできます。ソースからコンパイルする時間がない場合 (ソースからのコンパイルは大変な時間がかかることがあります)、 多くのプログラムを packages からインストールできます。
KDE と GNOME では、はじめから HTML ブラウザが用意されています。 これらのデスクトップ環境を設定するための情報については Section 5.7 を参照してください。
軽快な Web ブラウザを探している場合には、Ports Collection から www/dillo, www/links, www/w3m を試してみてください。
この節では次のアプリケーションについて説明します。
| アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要となる主な環境 |
|---|---|---|---|
| Firefox | 中 | 重 | Gtk+ |
| Opera | 少 | 軽 | FreeBSD 版と Linux 版を利用することができます。 Linux 版のバイナリを実行するには、 Linux バイナリ互換機能を有効にし、 linux-openmotif をインストールする必要があります。 |
| Konqueror | 中 | 重 | KDE ライブラリ |
Firefox は、 先進的で無料かつオープンソースの安定したブラウザです。 FreeBSD に完全に対応しています。 標準によく準拠した HTML 表示エンジン、タブブラウジング、ポップアップブロック、 拡張性、高い安全性などが特徴です。 Firefox は Mozilla のコードベースから派生したブラウザです。
package をインストールするには以下のように入力してください。
# pkg_add -r firefox
上の例では、Firefox 2.X がインストールされます。 Firefox 3.X を利用したい場合には、 かわりに以下のように入力してください。
# pkg_add -r firefox3
ソースコードからコンパイルする方が好きなら、Ports Collection を使って以下のようにインストールすることもできます。
# cd /usr/ports/www/firefox # make install clean
Firefox 3.X を利用する場合は、 上のコマンドの firefox を firefox3 に置き換えてください。
Note: 本節と次節では、Firefox があらかじめインストールされていることを前提とします。
FreeBSD Foundation は、Sun Microsystems 社から Java Runtime Environment (JRE™) と Java Development Kit (JDK™) の FreeBSD バイナリを配布するライセンスを獲得しています。 FreeBSD のバイナリパッケージは、FreeBSD Foundation のウェブサイトよりダウンロードできます。
Java™ を Firefox に追加するには、 まず java/javavmwrapper port をインストールしてください。 その後 http://www.freebsdfoundation.org/downloads/java.shtml から Diablo JRE package をダウンロードし、 pkg_add(1) を使ってインストールしてください。
ブラウザを起動し、ロケーションバーに about:plugins と入力して Enter を押してください。 インストールされているプラグイン一覧のページが表示されます。 Java プラグインが一覧に追加されているでしょう。 一覧にない場合は、 root 権限で以下のコマンドを実行してください。
# ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \ /usr/local/lib/browser_plugins/
その後、ブラウザを再起動してください。
FreeBSD 用の Macromedia® Flash™ プラグインは提供されていません。 しかしながら、Linux バージョンのプラグインを実行するためのソフトウェアレイヤ (wrapper) が存在します。 この wrapper は、Adobe® Acrobat® プラグインや RealPlayer® プラグインなどにも対応しています。
Warning以下では最近の -STABLE ブランチである FreeBSD 7.1-RELEASE 以降に、 Flash 9.X をインストールする方法について説明します。 古い FreeBSD を使っている場合や問題に遭遇した場合には、 かわりに www/linux-flashplugin7 をインストールし、 以下の linprocfs(5) に関する説明は飛ばしてください。
www/nspluginwrapper port をインストールします。 この port は、emulators/linux_base-fc4 という大きな port を必要とします。
次に、www/linux-flashplugin9 port をインストールします。 port をインストールしたら、各ユーザごとに nspluginwrapper を使ってプラグインをインストールしてください。
% nspluginwrapper -v -a -i
Flash アニメーションを再生したいのであれば、 Linux® プロセスファイルシステム linprocfs(5) を /usr/compat/linux/proc にマウントする必要があります。 以下のコマンドでマウントしてください。
# mount -t linprocfs linproc /usr/compat/linux/proc
/etc/fstab に以下の行を追加すると、 起動時に自動的にマウントされます。
linproc /usr/compat/linux/proc linprocfs rw 0 0
その後、ブラウザを起動し、 ロケーションバーに about:plugins と入力して Enter を押してください。 現在利用可能なプラグインの一覧が表示されます。
Swfdec は Flash アニメーションのデコードやレンダリングを行うライブラリです。 Swfdec-Mozilla は、Firefox ブラウザにおいて SWF ファイルを実行するためのプラグインで、Swfdec ライブラリを利用しています。 このライブラリは、現在でも盛んに開発されています。
もし、コンパイルできなかったり、コンパイルしたくない場合には、 ネットワークから package をダウンロードしてインストールしてください。
# pkg_add -r swfdec-plugin
package を入手できない場合は、Ports Collection からコンパイルしてインストールしてください。
# cd /usr/ports/www/swfdec-plugin # make install clean
その後、ブラウザを再起動してプラグインを有効にしてください。
Opera は、 機能満載で、標準規格に準拠した Web ブラウザです。 また、メールおよびニュースリーダや、IRC クライアント、 RSS/Atom フィードリーダ、その他いろいろなものが組み込まれています。 それにもかかわらず、Opera は比較的軽く、非常に速く動作します。 FreeBSD “ネイティブ”バージョンと、 Linux バイナリ互換機能によって動作するバージョンの 2 つがあります。
FreeBSD 版の Opera で Web を見るには、次の package をインストールします。
# pkg_add -r opera
一部の FTP サイトでは、すべての packages は用意されていません。 以下のように入力することで、Opera を Ports Collection からインストールできます。
# cd /usr/ports/www/opera # make install clean
Linux 版の Opera をインストールするには、上の例で opera を linux-opera に置き換えてください。 Adobe Acrobat Reader のように、Linux 版しか入手できないプラグインを利用したい状況では Linux 版が有用です。他のすべての点で、FreeBSD 版と Linux 版は同じように機能するでしょう。
Konqueror は KDE を構成するソフトウェアです。 ただし、KDE をインストールしなくても、 x11/kdebase3 をインストールすることにより、単体で動作させることができます。 Konqueror はブラウザであると同時に、 ファイルマネージャおよびマルチメディアビューアの役割も果たします。
Konqueror にはプラグイン一式が用意されており、 misc/konq-plugins を利用してインストールできます。
Konqueror は Flash にも対応しています。 Konqueror に Flash を導入するための “How To” ガイドが http://freebsd.kde.org/howtos/konqueror-flash.php にあります。
生産的なアプリケーションということになると、 新しいユーザはしばしば魅力的なオフィススイートや 親しみのあるワードプロセッサを求めるでしょう。 デフォルトアプリケーションではありませんが、 KDE のような デスクトップ環境 はオフィススイートを提供しています。 FreeBSD は、デスクトップ環境にかかわらず 必要なものはすべて提供しています。
この節では次のアプリケーションについて説明します。
| アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要となる主な環境 |
|---|---|---|---|
| KOffice | 少 | 重 | KDE |
| AbiWord | 少 | 軽 | Gtk+ または GNOME |
| Gimp | 少 | 重 | Gtk+ |
| OpenOffice.org | 多 | 莫大 | JDK 1.4, Mozilla |
KDE コミュニティはデスクトップ環境とともに、 KDE 環境以外でも利用可能な オフィススイートを提供しています。 このオフィススイートには、他のオフィススイートと同様に、 4 つの標準的なアプリケーションが含まれています。 KWord はワードプロセッサ、 KSpread は表計算ソフトウェア、 KPresenter はプレゼンテーションソフトウェア、そして Kontour は図形描画ソフトウェアです。
最新の KOffice をインストールする場合には、事前に KDE を最新のバージョンにしておいてください。
KOffice を package からインストールするには次のようにします。
# pkg_add -r koffice
package を入手できない場合でも Ports Collection を利用できます。 たとえば、KDE3 の KOffice をインストールするには次のようにします。
# cd /usr/ports/editors/koffice-kde3 # make install clean
AbiWord は、Microsoft Word のような見た目や操作感を持つフリーのワードプロセッサです。 書類や手紙、報告書、メモなどを書くのに適しています。 非常に速く、多くの特徴があり、非常にユーザフレンドリです。
AbiWord は、 Microsoft .doc のような独自仕様を含む多くの形式のファイルを読み書きできます。
次のようにして AbiWord を package からインストールできます。
# pkg_add -r abiword
package を入手できない場合でも Ports Collection を利用できます。 おそらく Ports Collection の方が新しいでしょう。 次のようにしてインストールします。
# cd /usr/ports/editors/abiword # make install clean
画像を描画したり写真を修正することに関して、 GIMP はとても洗練された編集プログラムです。 単純にお絵かきソフトウェアとして使うこともできますし、 高品質な写真の加工ツールとしても使えます。 多くのプラグインに対応しており、 スクリプトインタフェースを特徴としています。 GIMP はさまざまな形式のファイルを読み書きでき、 スキャナやタブレットとのインタフェースにも対応しています。
次のコマンドにより package をインストールできます。
# pkg_add -r gimp
利用している FTP サイトにこの package がない場合でも、 Ports Collection からインストールできます。 Ports Collection の graphics ディレクトリには Gimp マニュアルもあります。 インストールする方法は次のとおりです。
# cd /usr/ports/graphics/gimp # make install clean # cd /usr/ports/graphics/gimp-manual-pdf # make install clean
Note: Ports Collection の graphics ディレクトリには GIMP の開発版である graphics/gimp-devel があります。 Gimp マニュアル の HTML バージョンは graphics/gimp-manual-html にあります。
OpenOffice.org は、完全なオフィススイートに必須のアプリケーション (ワードプロセッサ、表計算ソフトウェア、 プレゼンテーションソフトウェア、そして図形描画ソフトウェア) をひととおり揃えています。 ユーザインタフェースは他のオフィススイートと似ており、 広く用いられているさまざまな形式のファイルを読み書きできます。 インタフェース、スペルチェッカ、辞書は国際化されており、 多くの言語で利用できます。
OpenOffice.org のワードプロセッサは、ネイティブのファイル形式に XML を採用することで ポータビリティや柔軟性を高めています。 表計算ソフトウェアにはマクロ機能があり、 外部データベースと接続することもできます。 OpenOffice.org は、すでに Windows, Solaris™, Linux, FreeBSD, Mac OS® X において安定してネイティブに動作しています。 OpenOffice.org についての詳しい情報は、 OpenOffice.org web サイト をご覧ください。また、 FreeBSD OpenOffice.org プロジェクトチーム の Web サイトから、FreeBSD 特有の情報や packages を直接取得することもできます。
OpenOffice.org をインストールするには次のようにします。
# pkg_add -r openoffice.org
Note: FreeBSD のリリース版を使用している場合、この操作は動作します。 それ以外の版を使用している場合、FreeBSD OpenOffice.org Porting Team の web サイトから適切なパッケージをダウンロードして、 pkg_add(1) を使用してインストールしてください。 ここからはリリース版と開発版の両方がダウンロードできます。
package をインストールしたら、以下のコマンドを入力するだけで OpenOffice.org が起動します。
% openoffice.org
Note: 初回起動時に、いくつかの質問が表示され、 ホームディレクトリに .openoffice.org2 フォルダが作成されます。
OpenOffice.org の packages が利用できない場合でも、port を利用する方法があります。 しかしながら、コンパイルするには大きなディスクスペースと 本当にかなり長い時間を必要とすることを心に留めておかなければなりません。
# cd /usr/ports/editors/openoffice.org-2 # make install clean
Note: 地域化されたバージョンをビルドしたいのなら、 上記コマンドの代わりに以下のコマンドを実行して下さい。
# make LOCALIZED_LANG=your_language install cleanyour_language を正しい言語 ISO コードに置き換えてください。 サポートされている言語コードは、同じ port ディレクトリにある files/Makefile.localized ファイルに書かれています。
インストールが終わったら、以下のコマンドで OpenOffice.org を起動することができます。
% openoffice.org
UNIX の出現以降、いくつかの新しい文書形式がよく使われるようになりました。 基本システムには、それらの文書が要求するビューアがないかもしれません。 この節ではそれらのドキュメントビューアのインストール方法について説明します。
この節では次のアプリケーションについて説明します。
| アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要になる主な環境 |
|---|---|---|---|
| Acrobat Reader | 少 | 軽 | Linux バイナリ互換機能 |
| gv | 少 | 軽 | Xaw3d |
| Xpdf | 少 | 軽 | FreeType |
| GQview | 少 | 軽 | Gtk+ または GNOME |
今や多くの文書が “Portable Document Format” を意味する PDF ファイル形式で配布されています。 PDF ファイルを読むのに推奨されるビューアの一つが Acrobat Reader で、 Adobe から Linux 向けにリリースが提供されています。 FreeBSD は Linux バイナリを実行できるので、 FreeBSD でもこのアプリケーションを利用できます。
Ports Collection から Acrobat Reader 7 をインストールするには次のようにします。
# cd /usr/ports/print/acroread7 # make install clean
ライセンスの制限のため、パッケージを利用することはできません。
gv は PostScript® と PDF のビューアです。これはもともと ghostview をベースとしていますが、 Xaw3d ライブラリによってより良い外観になっています。 動作が速くて、ユーザインタフェースもシンプルです。 gv は用紙の向きやサイズ、 拡大縮小、アンチエイリアスなどたくさんの機能を持っています。 ほとんどすべての操作はキーボードとマウスの両方で行なうことができます。
package から gv をインストールするには次のようにします。
# pkg_add -r gv
package が手に入らない場合には Ports Collection を使ってください。
# cd /usr/ports/print/gv # make install clean
FreeBSD 向けの軽い PDF ビューアを使いたいのなら、 Xpdf を試してみてください。 Xpdf は軽くて効率的なビューアです。 とても少ないリソースでも動作し、とても安定しています。 標準の X フォントを利用し、 Motif®, その他の X ツールキットを必要としません。
Xpdf の package をインストールするには次のコマンドを入力します。
# pkg_add -r xpdf
package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。
# cd /usr/ports/graphics/xpdf # make install clean
インストールが完了したら Xpdf を起動できます。 メニューを表示するにはマウスの右ボタンを押してください。
GQview は画像管理ソフトウェアです。 クリックひとつで画像ファイルを開いたり、外部エディタを起動したり、 サムネイル画像を作成したり、そのほかにもいろいろできます。 また、スライドショーや基本的なファイル操作機能も備えています。 画像のコレクションを管理でき、重複したファイルも簡単に見つけられます。 GQview は全画面表示もでき、 国際化にも対応しています。
GQview の package をインストールするには次のコマンドを入力します。
# pkg_add -r gqview
package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。
# cd /usr/ports/graphics/gqview # make install clean
FreeBSD デスクトップで個人的な財務管理ができるように、 強力で簡単に使えるアプリケーションが用意されています。 それらのアプリケーションの中には Quicken® や Excel などの広く行き渡った形式のファイルと互換性があるものもあります。
この節では次のアプリケーションについて説明します。
| アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要になる主な環境 |
|---|---|---|---|
| GnuCash | 少 | 重 | GNOME |
| Gnumeric | 少 | 重 | GNOME |
| Abacus | 少 | 軽 | Tcl/Tk |
| KMyMoney | 少 | 重 | KDE |
GnuCash は、 GNOME の一部で、 使いやすくかつ強力なアプリケーションとしてエンドユーザに提供されています。 GnuCash を使えば、 収入や支出、銀行口座、あるいは株を管理できます。 直観的なインタフェースを特徴としていますが、 非常に高度な機能も提供しています。
GnuCash は洗練された登録機能、 階層構造の勘定システム、多くのキーボードショートカット、 自動補完機能を提供しています。 単一のトランザクションをより小さな要素に分解できます。 GnuCash は、 Quicken の QIF ファイルの読み込みやマージができます。 また、国際的な日付および通貨形式も扱えます。
GnuCash をインストールするには次のようにします。
# pkg_add -r gnucash
package が手に入らないならば、Ports Collection を使ってください。
# cd /usr/ports/finance/gnucash # make install clean
Gnumeric は、 GNOME デスクトップ環境に含まれている表計算ソフトウェアです。 セルの書式に従ってユーザの入力を自動的に “推測”する便利な機能や、 多くのシーケンスに対する自動補完機能があります。 Excel, Lotus 1-2-3, Quattro Pro といった広く行き渡っている多くの形式のファイルを読みこめます。 Gnumeric は、グラフ描画ソフトウェアの math/guppi を介してグラフ機能を提供しています。 多くの関数を内蔵しており、 数値、通貨、日付、時間などのよく使うセルの書式が利用できます。
package から Gnumeric をインストールするには次のように入力します。
# pkg_add -r gnumeric
package が手に入らないならば、Ports Collection を使ってください。
# cd /usr/ports/math/gnumeric # make install clean
Abacus は、軽くて使いやすい表計算ソフトウェアです。 統計、財務、数学などの分野で 役にたつ多くの関数を内蔵しています。 Abacus は Excel 形式のファイルを読み書きでき、 PostScript 形式のファイルも作成できます。
package から Abacus をインストールするには次のようにします。
# pkg_add -r abacus
package が手に入らないならば、Ports Collection を使ってください。
# cd /usr/ports/deskutils/abacus # make install clean
KMyMoney は、 KDE の個人用財務管理ソフトウェアです。 商用の個人用財務管理ソフトウェアに見られる機能を取り入れ、 提供することを目指しています。 また、使いやすい複式簿記機能も特徴です。 KMyMoney は標準の Quicken Interchange Format (QIF) ファイルをインポート可能で、 投資履歴や複数通貨の取扱い、財政状況のレポートを提供します。 また、プラグインを用いることにより OFX のインポートもできます。
package から KMyMoney をインストールするには次のようにします。
# pkg_add -r kmymoney2
package が手に入らない場合は、Ports Collection を使ってください。
# cd /usr/ports/finance/kmymoney2 # make install clean
FreeBSD はその性能や安定性によって インターネットサービスプロバイダに人気がある一方で、 日常のデスクトップでの用途にも完全に対応しています。 数千のアプリケーションが packages や ports から利用できます。 これらによりあなたのニーズを完全に満たすデスクトップを構築できます。
以下は、この章で説明した デスクトップアプリケーションの一覧です。
| アプリケーション名 | package 名 | port 名 |
|---|---|---|
| Opera | opera | www/opera |
| Firefox | firefox | www/firefox |
| KOffice | koffice-kde3 | editors/koffice-kde3 |
| AbiWord | abiword | editors/abiword |
| GIMP | gimp | graphics/gimp |
| OpenOffice.org | openoffice | editors/openoffice-1.1 |
| Acrobat Reader | acroread | print/acroread7 |
| gv | gv | print/gv |
| Xpdf | xpdf | graphics/xpdf |
| GQview | gqview | graphics/gqview |
| GnuCash | gnucash | finance/gnucash |
| Gnumeric | gnumeric | math/gnumeric |
| Abacus | abacus | deskutils/abacus |
| KMyMoney | kmymoney2 | finance/kmymoney2 |
FreeBSD は数多くの種類のサウンドカードに対応しており、 コンピュータで原音に忠実な出力を楽しむことができます。 これには録音機能と、MPEG Layer 3 Audio (MP3) や WAV, Ogg Vorbis などをはじめとした多くの形式の音楽の再生機能が含まれます。 加えて FreeBSD の Ports Collection には、録音した音楽を 編集したり、音響効果を加えたり、接続された MIDI 機器を制御するためのアプリケーションがあります。
多くの試みによって、FreeBSD ではビデオファイルおよび DVD の 再生ができるようになりました。さまざまなビデオメディアをエンコード、 変換、再生するアプリケーションの数は、 音声用のアプリケーションほど充実していません。 この文書を執筆している時点では、たとえば audio/sox のようなファイル形式を変換するためのすぐれたアプリケーションは Ports Collection にありません。しかしながら、 この分野のソフトウェアの状況は急速に変わりつつあります。
この章ではサウンドカードを設定するために必要な方法を説明します (ただし、高音質で再生するためには若干の微調整が必要かもしれません)。 ビデオカードのハードウェアに関する問題は、 X11 (Chapter 5) のインストールと設定においてすでに扱いましたので、 そちらをご覧ください。
この章を読むと、以下のことがわかります。
サウンドカードを認識させるためにシステムを設定する方法
サウンドカードがうまく動作しているかどうかテストする方法
サウンドの設定に関するトラブルシューティング
MP3 およびその他の形式の音声を再生、エンコードする方法
X サーバで どのようにビデオに対応しているか
ビデオを再生、エンコードするのに役に立つ ports
DVD の .mpg ファイルおよび .avi ファイルを再生する方法
CD および DVD の情報を抽出する方法
TV カードの設定方法
画像スキャナの設定方法
この章を読む前に、以下のことを理解しておく必要があります。
新しいカーネルを設定してインストールする方法 (Chapter 8)
Warningオーディオ CD を mount(8) でマウントしようとすると、少なくともエラーになります。 最悪の場合、カーネルパニックが発生するでしょう。 これらのメディアは通常の ISO ファイルシステムとは異なり、 特別なエンコードが施されているからです。
設定をはじめる前に、あなたが持っているカードのモデル、 そのカードが使用しているチップ、そして PCI, ISA どちらのカードなのかを確認する必要があります。 FreeBSD は PCI および ISA の両方のカードに幅広く対応しています。 使用しているカードが対応しているかどうかは、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 このハードウェアノートには、カードに対してどのドライバを利用すればよいか についても言及されています。
サウンドデバイスを使うために、 適切なデバイスドライバを読み込まなければいけません。 これには二つの方法のどちらかでできるでしょう。 もっとも簡単な方法は kldload(8) を使ってサウンドカードのカーネルモジュールを単に読み込むことです。 次のコマンドで実現できます。
# kldload snd_emu10k1
または /boot/loader.conf ファイルにこのような適切な行を加えて実現することもできます。
snd_emu10k1_load="YES"
以上は Creative SoundBlaster® Live! サウンドカードの例です。 他に利用可能な読み込み可能なサウンドモジュールは /boot/defaults/loader.conf に記載されています。 どのドライバを利用すればいいか確かでなければ、 snd_driver モジュールを読み込んでみてください。
# kldload snd_driver
snd_driver モジュールは、 一般に使用されるカードに対応したドライバをまとめて一度に読み込む メタドライバです。このドライバを使用すれば、 速やかに正しいドライバを探し出すことができるでしょう。 /boot/loader.conf ファイルを使用して、 すべてのサウンドドライバを読み込むこともできます。
snd_driver メタドライバの読み込み後に、 どのドライバがサウンドカードに選択されたのかを知りたいのなら cat /dev/sndstat コマンドで /dev/sndstat ファイルを調べてください。
二つ目の方法は、 サウンドカードのドライバをカーネルへ静的に組み込むことです。 以下の節では、この方法でハードウェアを対応させる方法を説明します。 カーネル再構築の詳細は Chapter 8 を参照してください。
はじめに、オーディオフレームワークドライバ sound(4) をカーネルに追加します。 カーネルコンフィグレーションファイルに以下の行を追加してください。
device sound
次に、サウンドカードに対応したドライバを追加します。 それには、どのドライバがカードに対応しているかを知る必要があります。 使用しているカードに対する正しいドライバを決定するために、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 たとえば、Creative SoundBlaster Live! サウンドカードは snd_emu10k1(4) ドライバが対応しています。 このカードを使用するためには、カーネルコンフィグレーションファイルに 以下の行を追加してください。
device snd_emu10k1
ドライバのマニュアルページを読んで、 追加すべき構文を調べてください。 対応しているすべてのサウンドドライバに関する カーネルコンフィグレーションの具体的な構文は、 /usr/src/sys/conf/NOTES にもあります。
すべての PnP 非対応の ISA カードに当てはまるように、 PnP 非対応の ISA サウンドカードでは、 カーネルにカードが使用する資源 (IRQ, I/O ポートなど) を明示的に指定する必要があるかもしれません。 この場合は、/boot/device.hints ファイルを使用してください。 システムの起動時に、loader(8) はこのファイルを読み、設定情報をカーネルに渡します。 たとえば、PnP 非対応の古い Creative SoundBlaster 16 (ISA 接続) には snd_sb16 とともに snd_sbc(4) ドライバを使用します。 このカードを使用する場合には、カーネルコンフィグレーションファイルに 以下の行を追加すると同時に、
device snd_sbc device snd_sb16
/boot/device.hints ファイルに以下のエントリを追加してください。
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
この例では、 I/O ポートに 0x220 を、 IRQ に 5 を使用します。
/boot/device.hints ファイルに用いるべき構文は、 sound(4) ドライバのマニュアルページ、および、 各ドライバのマニュアルページに記載されています。
初期設定は以上の通りです。 カードを使用する状況によっては、 IRQ やその他の設定を変更する必要があるかもしれません。 このカードについての詳細は、 snd_sbc(4) マニュアルページをご覧ください。
カーネルを変更して再起動するか、必要となるモジュールを読み込むと、 システムのメッセージバッファ (dmesg(8)) にサウンドカードが認識されたことが示されます。 たとえば、次のようなメッセージが出力されます。
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0 pcm0: [GIANT-LOCKED] pcm0: <Cirrus Logic CS4205 AC97 Codec>
サウンドカードの状態は、/dev/sndstat ファイルを使用して確認することができます。
# cat /dev/sndstat FreeBSD Audio Driver (newpcm) Installed devices: pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384 kld snd_ich (1p/2r/0v channels duplex default)
この出力はシステムによって異なるでしょう。 pcm デバイスがなければ、 今までの手順を振り返ってみてください。 カーネルコンフィグレーションファイルをもう一度見直して、 正しいデバイスドライバを選択しているかどうか確認してください。 トラブルシューティングは Section 7.2.2.1 を参照してください。
すべてうまくいけば、サウンドカードが機能するでしょう。 CD-ROM または DVD-ROM ドライブのオーディオ出力端子がサウンドカードと適切に接続されていれば、 cdcontrol(1) を使ってドライブ内の CD を再生できます。
% cdcontrol -f /dev/acd0 play 1
audio/workman のように、よりよいインタフェースを提供する さまざまなアプリケーションがあります。 MP3 オーディオファイルを聴くために audio/mpg123 のようなアプリケーションをインストールしようと思うかもしれません。
手っ取り早くカードをテストするには、 /dev/dsp デバイスにデータを送ってみてください。 たとえば、以下のようにします。
% cat filename > /dev/dsp
ここで filename はどんなファイルでも構いません。 このコマンドラインを実行すると雑音が発生するはずです。 これにより、サウンドカードが実際に動作していることを確認できます。
サウンドカードのミキサレベルは mixer(8) コマンドで変更することができます。 詳細は mixer(8) マニュアルページをご覧ください。
| エラー | 解決方法 |
|---|---|
| “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 を使って、他のアプリケーションがデバイスを 使用しているか調べてください。 注目すべきトラブルメーカは esound と KDE のサウンド機能です。 |
特定のアプリケーションとのサウンドデバイスの共用に対応していない時、 esound または artsd のように 同時に再生することのできる音源を複数実装していることは、 多くの場合望ましいことです。
FreeBSD では、 仮想サウンドチャネル を使ってこれを実現でき、sysctl(8) で設定できます。 仮想チャネルはカーネル内でサウンドを合成することにより、 サウンドカードの再生を多重化することができます。
仮想チャネルの数を決めるのに二つの sysctl 変数を設定できます。 root ユーザで以下のようにします。
# sysctl dev.pcm.0.play.vchans=4 # sysctl dev.pcm.0.rec.vchans=4 # sysctl hw.snd.maxautovchans=4
上記の例では四つの仮想チャネルを設定しています。
これは通常利用する上で十分実用的な数です。 dev.pcm.0.play.vchans=4 と dev.pcm.0.rec.vchans=4 は、 pcm0
が再生や録音のために持っている仮想チャネルの数で、
一度デバイスが取り付けられると設定できます。 hw.snd.maxautovchans は、 kldload(8)
を用いて認識された新しいデバイスの仮想チャネル数です。 pcm
モジュールはハードウェアドライバとは独立して読み込むことができるので、
後でどんなにデバイスを認識しても hw.snd.maxautovchans
は仮想チャネルを格納できます。 より詳細な情報については pcm(4) のマニュアルページを参照してください。
Note: デバイスを使用しているときに 仮想チャンネルの数を変更することはできません。 まず、ミュージックプレーヤやサウンドデーモンといった デバイスを使用しているすべてのプログラムを終了してください。
devfs(5)
を使用していないのなら、 利用するアプリケーションに /dev/dsp0.x
を指定しなければならないでしょう。 上記の例のように dev.pcm.0.rec.vchans を 4 に設定すると x は 0 から 3 となります。 devfs(5)
を使用しているシステムでは、 /dev/dsp0
を必要とするプログラムが意識しなくてもこれらが自動的に設定されます。
各ミキサチャネルの初期値は pcm(4) ドライバのソースにハードコーディングされています。 起動時に記録されていた値をミキサに設定する さまざまなアプリケーションやデーモンがありますが、 あまりよい解決方法ではありません。 適切な値を /boot/device.hints ファイルに記述することにより、 ドライバレベルでミキサの初期値を設定することができます。 たとえば、以下のような行を追加します。
hint.pcm.0.vol="50"
この例では、pcm(4) が読み込まれたと同時に、 ボリュームチャネルの初期値を 50 に設定します。
MP3 (MPEG Layer 3 Audio) は CD に匹敵する音質でサウンドを再生できます。あなたの FreeBSD ワークステーションにこのプレイヤをインストールしない理由はないでしょう。
XMMS (X Multimedia System) は とても人気のある X11 ベースの MP3 プレイヤです。 XMMS のグラフィカルインタフェースは Nullsoft の Winamp とほとんど同一なので、Winamp のスキンを使うことができます。 XMMS はネイティブプラグインにも対応しています。
XMMS は multimedia/xmms の port または package からインストールできます。
XMMS のプレイリスト、グラフィックイコライザそしてその他のインタフェースは 直感的です。 Winamp を使いなれている人は 簡単に XMMS を使えるでしょう。
audio/mpg123 はコマンドライン上の代替となる MP3 プレイヤの port です。
mpg123 はサウンドデバイスと MP3 ファイルを指定して実行できます。 /dev/dsp1.0 デバイスを使用して MP3 ファイル Foobar-GreatestHits.mp3 を再生するのであれば、次のように実行してください。
# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp. Uses code from various people. See 'README' for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! Playing MPEG stream from Foobar-GreatestHits.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
CD 全体または CD トラックを MP3 に変換する前に、CD 上のオーディオデータをハードディスク上に抽出する必要があります。 これには raw CDDA (CD Digital Audio) データを WAV ファイルにコピーします。
sysutils/cdrtools スイートの一部である cdda2wav ツールは CD からオーディオデータを抽出したり、 情報を関係づけるのに使われます。
CD をドライブにいれて次のコマンドを (rootで) 実行して、 CD 全体を (トラックごとに) 個々の WAV ファイルに抽出できます。
# cdda2wav -D 0,1,0 -B
cdda2wav は ATAPI (IDE) CDROM ドライブにも対応しています。 IDE ドライブから抽出するには、 SCSI ユニット番号をデバイス名に置き換えて指定します。 たとえば IDE ドライブから七番目のトラックを抽出するには、 次のようにします。
# cdda2wav -D /dev/acd0 -t 7
-D 0,1,0 は SCSI
デバイス 0,1,0 を表します。 これは cdrecord -scanbus の出力に一致します。
個々のトラックを抽出するには、 次のように -t
オプションを使用します。
# cdda2wav -D 0,1,0 -t 7
上記の例はオーディオ CDROM の七番目のトラックを抽出します。 範囲を指定して、 たとえば一番目から七番目のトラックまで抽出したい場合、 次のようにします。
# cdda2wav -D 0,1,0 -t 1+7
dd(1) ユーティリティも ATAPI ドライブ上のオーディオトラックを展開するのに使われます。 何ができるか詳しいことは オーディオ CD の複製について Section 15.5.5 を参照してください。
現在、一般に好まれている MP3 エンコーダは lame です。 lame は Ports Collection の audio/lame に収録されています。
次のコマンドを実行すると、抽出した WAV ファイル audio01.wav を使って audio01.mp3 に変換します。
# lame -h -b 128 \ --tt "曲名" \ --ta "アーティスト名" \ --tl "アルバム名" \ --ty "年" \ --tc "コメント" \ --tg "ジャンル" \ audio01.wav audio01.mp3
128 kbits が標準のビットレートのようです。 多くの人はさらに高音質の
160 kbits または 192 kbits を好むでしょう。
ビットレートが高くなるにつれて作成される MP3
ファイルは多くのディスク領域を消費しますが、より高音質となります。 -h オプションを指定すると “低速高品質”
モードとなります。 --t ではじまるオプションは ID3
タグを設定します。 このタグにはたいてい曲の情報が含まれており、 MP3
ファイルに格納されます。 lame
のマニュアルを参照すれば他のオプションが見つかるでしょう。
MP3 からオーディオ CD を作成するには、 MP3 形式を非圧縮 WAV 形式に変換しなければなりません。 XMMS と mpg123 の両方が MP3 から非圧縮ファイル形式への出力に対応しています。
XMMS でディスクへ書き出す方法は次の通りです。
XMMS を起動します。
右クリックで XMMS メニューを表示します。
Options から Preference を選択します。
Output Plugin を “Disk Writer Plugin” に変更します。
Configure を押します。
非圧縮ファイルを書き出すディレクトリを入力 (または選択) します。
普段通り XMMS へ MP3 ファイルを読み込みます。 音量は 100% で イコライザの設定はオフにします。
Play を押します-- XMMS は MP3 を再生しているかのように表示しますが、 音声はきこえません。 実際には MP3 をファイルに出力しています。
再び MP3 を聴けるように Output Plugin を以前のように元に戻すのを忘れないでください。
mpg123 で標準出力へ書き出す方法は次の通りです。
mpg123 -s audio01.mp3 > audio01.pcm を実行します。
XMMS は WAV 形式でファイルに書き出しますが、 mpg123 は MP3 を PCM オーディオデータに変換します。 両形式は cdrecord を使ってオーディオ CD を作成するのに利用することができます。 burncd(8) を使う場合は raw PCM データが必要です。 WAV ファイルを使用する場合、 それぞれのトラックの先頭に小さなノイズが入るのに気づくでしょう。 これは WAV ファイルのヘッダ情報です。 SoX (audio/sox の port または package からインストールできます) を使うと簡単に WAV ファイルのヘッダ情報を削除できます。
% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw
FreeBSD での CD 作成の詳しい情報は Section 15.5 を参照してください。
ビデオ再生は今まさに成長中の新しいアプリケーション分野です。 辛抱強くしてください。 音声のようにすべてが順調にいくとは限りません。
設定をはじめる前に、あなたが持っているビデオカードのモデル、 そのカードが使用しているチップを確認する必要があります。 Xorg および XFree86 はさまざまなビデオカードに対応していますが、 ビデオ再生に申し分のない性能を発揮できるカードはわずかです。 あなたのビデオカードの利用している X サーバが対応している拡張機能のリストを得るには、 X11 を実行中に xdpyinfo(1) コマンドを実行してください。
さまざまなプレイヤやオプションを試すのに、 テストファイルとして小さな MPEG ファイルを用意しておくのはよい考えです。 いくつかの DVD プレイヤは DVD メディアを /dev/dvd として 初期設定しているか、ハードコーディングされているので、 次のように適切なデバイスにシンボリックリンクを張っておくと便利かもしれません。
# ln -sf /dev/acd0 /dev/dvd # ln -sf /dev/acd0 /dev/rdvd
devfs(5) の仕様により、 このように手動で作成されたリンクは再起動すると消えてしまいます。 システムの起動時にこれらのシンボリックリンクを自動的に作成するには、 /etc/devfs.conf に下記の設定を追加します。
link acd0 dvd link acd0 rdvd
加えて、特別な DVD-ROM 機能を必要とする DVD 解読は、 DVD デバイスへの書き込み権限が必要です。
共有メモリ X11 インタフェースを改善するために、 いくつかの sysctl(8) 変数の値を増やすことが推奨されています。
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
X11 においてビデオ表示性能を改善する方法はいくつかあると思われます。 ちゃんと動作するかどうかはハードウェアに大きく依存しています。 下記に説明したどの方法でも、 ハードウェアが変わると品質が変わるでしょう。 二つ目に、X11 でのビデオレンダリングは最近多くの注目を集めるトピックです。 そして Xorg や XFree86 のバージョンを追うごとに、著しく改良されているかもしれません。
よく知られたビデオインタフェースは次の通りです。
X11: 共有メモリを用いた通常の X11 出力
XVideo: X11 drawable 内でのビデオ再生に対応した X11 インタフェースの拡張機能
SDL: Simple Directmedia Layer
DGA: Direct Graphics Access
SVGAlib: 低レベルコンソールグラフィックレイヤ
Xorg と XFree86 4.X には XVideo (または Xvideo, Xv, xv) と呼ばれる拡張機能があります。 これは特別なアクセラレーションによって drawable オブジェクト に直接ビデオを表示することができます。 この拡張機能によって、 低速なマシンでも、とてもすぐれた品質の再生が可能となります。
この拡張機能が動作しているかどうかを調べるには、 xvinfo を使います。
% xvinfo
以下のような結果が得られたならば、あなたのカードは XVideo に対応しています。
X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0
リストにある形式 (YUV2, YUV12 など) が XVideo のすべての実装で存在するとは限りません。 対応している形式が少ないために、あるプレイヤでは悪影響が出る かもしれないことにも注意してください。
出力が以下のような場合、
X-Video Extension version 2.2 screen #0 no adaptors present
あなたのカードはおそらく XVideo に対応していないのでしょう。
あなたのカードが XVideo に対応していないとしても、 このことはあなたのディスプレイでビデオを表示するのに、 計算上の要求を満たすことがより困難になるだけのことです。 しかしながら、あなたのビデオカードおよびプロセッサによっては、 それでも満足のいく性能が得られるかもしれません。 性能を向上させるには Section 7.4.3 をよく読むとよいでしょう。
Simple Directmedia Layer (SDL) は Microsoft Windows, BeOS そして UNIX の間で サウンドとグラフィックスを効果的に利用した クロスプラットホームアプリケーションを 開発することを目的としたレイヤです。 SDL レイヤはハードウェアに対する低レベルの抽象的概念を提供し、 時には X11 インタフェースを使用するよりも効果的なことがあります。
SDL は devel/sdl12 からインストールできます。
Direct Graphics Access は、 プログラムが X サーバを介せず 直接フレームバッファを変更することを可能にする X11 の拡張機能です。 共有メモリを使用するために 低レベルのメモリマッピングが実行できることを期待しているので、 この機能を使うプログラムは root 権限で実行されなければなりません。
DGA 機能拡張は dga(1) によってテストとベンチマークができます。 dga 実行中はキーボードを押せばいつでもディスプレイ色が変更されます。 中止するには q を押します。
この節では Ports Collection で利用可能な、 ビデオの再生に使用できるソフトウェアについて論じます。 ビデオ再生は大変活発なソフト開発分野で、 さまざまなアプリケーションの機能は、 ここでの説明から省かざるをえません。
はじめに、FreeBSD で実行できるビデオアプリケーションの多くは、 Linux アプリケーションとして開発されたということを知ることは重要です。 これらのアプリケーションの多くはまだベータ版の品質です。 FreeBSD でこれらのビデオアプリケーションを使用する際に、 以下のような問題が起こるかもしれません。
あるアプリケーションが、 他のアプリケーションの作成したファイルを再生できない。
あるアプリケーションが、 自身の作成したファイルを再生できない。
二つの異なるマシンで構築した同じアプリケーションが、 同じファイルを再生する挙動がそれぞれ異なる。
イメージサイズ変更のように見たところではありふれたフィルタが、 バグの多いサイズ変更ルーチンによってひどい人工物を作成する。
アプリケーションがよくコアダンプする。
文書が port と一緒にインストールされない (文書は web サイトにあったり、その port の work ディレクトリの中に 残っていることがある)。
これらのアプリケーションの多くはさらに “Linux 主義” を主張するかもしれません。 すなわち、アプリケーションの作者が仮定した、 Linux ディストリビューションでのみ実装されている ある標準ライブラリの使用方法や Linux カーネルの特定の機能に起因する問題が生じるかもしれません。 必ずしも port 保守担当者がこれらの問題を把握して作業しているとは限らず、 次のような問題が発生する可能性があります。
プロセッサの特性を検知するための /proc/cpuinfo の利用
本当はプログラムを終了させるはずであるのに、 停止させてしまうようなスレッドの誤用
一般的にアプリケーションとともに使用され、まだ FreeBSD の Ports Collection に収録されていないソフトウェアを必要とする
これまで、これらのアプリケーションの開発者は、 移植に必要だったその場しのぎの回避方法を最小化し 問題を解決するために port 保守担当者と協力しています。
MPlayer は最近開発され、 急激に成長しつつあるビデオプレイヤです。 MPlayer チームの目的は、 Linux や他の Unix 系 OS 上で高速性と柔軟性をもたらすことです。 このプロジェクトは、 チーム創設者が当時利用可能だったビデオプレイヤの ひどい再生能力にうんざりしたのをきっかけとして始まりました。 合理化された設計のために GUI が犠牲にされたと言う人もいます。 しかしながら、コマンドラインオプションおよびキーボード操作に 一度慣れれば非常によく動作します。
MPlayer は multimedia/mplayer にあります。 MPlayer は 構築の際にさまざまなハードウェアのチェックをするため、 あるシステムで作成されたバイナリは、 別のシステムで利用できないかもしれません。 したがって port から構築し、 バイナリパッケージを利用しないことが重要です。 さらに、Makefile や構築のはじめに説明されるように、 make のコマンドラインで多くのオプションを指定することができます。
# cd /usr/ports/multimedia/mplayer # make N - O - T - E Take a careful look into the Makefile in order to learn how to tune mplayer towards you personal preferences! For example, make WITH_GTK1 builds MPlayer with GTK1-GUI support. If you want to use the GUI, you can either install /usr/ports/multimedia/mplayer-skins or download official skin collections from http://www.mplayerhq.hu/homepage/dload.html
ほとんどのユーザにとっては port のデフォルトオプションで十分でしょう。 しかしながら、XviD コーデックが必要なら、 WITH_XVID オプションをコマンドラインで指定しなければなりません。 また、デフォルトの DVD デバイスを WITH_DVD_DEVICE オプションで定義することもできます (デフォルトでは /dev/acd0 が使用されます)。
この文書を執筆している時点では、 MPlayer の port は HTML 文書、そして mplayer と mencoder という二つの実行可能なバイナリを構築します。 mencoder はビデオを再エンコーディングするためのツールです。
MPlayer のための HTML 文書は非常に有益です。この章で不足した ビデオハードウェアおよびインタフェースに関する情報があれば、 MPlayer の文書は非常に詳細な補足になります。 UNIX のビデオ対応情報を探しているのなら、時間を割いて MPlayer の文書を読むべきなのは 明らかです。
MPlayer を使用する人はすべて、 各自のホームディレクトリ内に .mplayer サブディレクトリを用意しなければなりません。 この必要となるサブディレクトリを作成するために、 次のコマンドを入力します。
% cd /usr/ports/multimedia/mplayer % make install-user
mplayer のコマンドオプションはマニュアルに記載されています。 さらにより詳細な説明について知りたいなら、HTML 文書をご覧ください。 この節では、一般的な使用法についてほんの少し説明します。
さまざまなビデオインタフェースの一つを用いて testfile.avi というファイルを再生するには、 -vo オプションを指定します。
% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi
ビデオ再生の相対的性能は多くの要因に依存し、 ハードウェアに応じて著しく変わると思われるので、 これらのオプションをすべて試してみる価値はあるでしょう。
DVD を再生するには、 testfile.avi を dvd://N -dvd-device DEVICE に置き換えてください。 <N>
には再生するタイトル番号を、 DEVICE は DVD-ROM のデバイスノードを指定します。
たとえば、/dev/dvd から 2
番目のタイトルを再生するには以下のようにします。
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
Note: デフォルトの DVD デバイスは、 MPlayer port の構築時に WITH_DVD_DEVICE で定義することができます。 デフォルトでは /dev/acd0 になります。 詳細はこの port の Makefile をご覧ください。
停止、休止、再生などをするにはキーの割り当てを調べてください。 mplayer -h を実行したり、 マニュアルを読めばわかります。
再生に関してさらに重要なオプションがあります。 全画面モードにする -fs -zoom オプションと、 性能を向上させる -framedrop オプションです。
mplayer に指定するコマンドラインが長くなりすぎないように、 .mplayer/config を作成してデフォルトのオプションを設定できます。
vo=xv fs=yes zoom=yes
最後に mplayer は DVD タイトルを .vob ファイルに抽出するのに使用できます。 DVD から 2 番目のタイトルをダンプするには次のようにします。
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
出力された out.vob ファイルは MPEG 形式で、 この節で説明される他のアプリケーションで編集できます。
mencoder を使う前に、 HTML 文書を読んでオプションに慣れておくのはよい考えです。 マニュアルもありますが、HTML 文書なしではあまり有用ではありません。 品質向上、低ビットレート、形式変換をする方法が無数にあります。 これらの要素の調節具合で、性能が良かったり悪かったりするなど、 結果に違いが出るかもしれません。 ここにいくつか例を示します。 はじめは単純なファイルのコピーです。
% mencoder input.avi -oac copy -ovc copy -o output.avi
コマンドラインオプションを不適切に組合せると、 mplayer
でさえ再生できない出力ファイルを作成してしまいます。
したがって、単にファイルを抽出したいときには、 mplayer に -dumpfile オプションをつけます。
input.avi を音声に MPEG3 エンコードを使用して MPEG4 コーデックに変換するには次のようにします (audio/lame が必要です)。
% mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
これは mplayer や xine で再生可能な出力ファイルを作成します。
DVD タイトルを直接再エンコードするためには、 上記のコマンドラインの input.avi を dvd://1 -dvd-device /dev/dvd に置き換えて、 root 権限で実行します。
はじめの作業結果に不満をもつと思われるので、
タイトルをファイルにダンプして、ファイルに対して作業することを おすすめします。
xine ビデオプレイヤは オールインワンのビデオソリューションであるだけでなく、 プラグインで拡張できる再利用可能な基本ライブラリと 実行可能なモジュールを提供する広範囲のプロジェクトです。 multimedia/xine の port と package の両方からインストールできます。
xine プレイヤは開発途上であり まだ非常に荒削りですが、通常の利用には十分安定しています。 実用上、xine を使用するには高速なビデオカードとともに高速な CPU があるか、 またはビデオカードが XVideo 拡張に対応していることが必要です。 GUI も利用できますがすこし扱いにくいです。
この文書を執筆している時点では、 xine と一緒に提供されている CSS エンコードされた DVD を再生する入力モジュールはありません。 このモジュールがあるサードパーティの構築物はいくつかありますが、 これらのどれも FreeBSD の Ports Collection には収録されていません。
xine は MPlayer と比べて 利用者にとって多くのことをしてくれますが、 と同時にきめの細かい制御ができません。なお、 xine ビデオプレイヤは、 XVideo インタフェース上で最良の性能を発揮します。
デフォルトでは、xine プレイヤは GUI 付きで起動するでしょう。 その後、メニューを使用して特定のファイルを開くことができます。
% xine
GUI なしでファイルを直ちに再生するには、 次のコマンドを実行します。
% xine -g -p mymovie.avi
transcode というソフトウェアは、 プレイヤではなくビデオおよびオーディオファイルを再エンコードするためのツール一式です。 transcode を使えば、 stdin/stdout インタフェースとともに コマンドラインツールを用いることによって、 ビデオファイルの統合や、壊れたファイルの修復ができます。
multimedia/transcode port では、数多くのビルドオプションを指定できますが、 以下のコマンドラインのように transcode を構築することをおすすめします。
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ WITH_MJPEG=yes -DWITH_XVID=yes
ほとんどのユーザにとっては、この設定で十分です。
transcode の能力を示す例として、DivX ファイルを PAL MPEG-1 (PAL VCD) ファイルに変換する使用例を示します。
% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa
作成された MPEG ファイル、 output_vcd.mpg は、 MPlayer を使って再生できます。 また、ファイルを CD-R メディアに書き込むことでビデオ CD も作成できます。 この場合には、multimedia/vcdimager および sysutils/cdrdao プログラムをインストールする必要があるでしょう。
transcode のマニュアルもありますが、 transcode wiki から、更なる情報や使用例を得てください。
FreeBSD 用のさまざまなビデオソフトウェアは急速に成長しています。 近い将来、ここにあげた問題の多くが解決している可能性は高いでしょう。 それまでの間、FreeBSD の A/V 能力を最大限発揮させたい人々は、 FAQ およびチュートリアルから得た知識を寄せ集めて、 わずかなアプリケーションを使用しなければならないでしょう。 この節は、読者に そのような付加的な情報へのポインタを提供するために存在します。
MPlayer の文書 は技術的に非常に有益です。 おそらく、UNIX ビデオの高水準な専門的知識を得たい人はすべて、 これらの文書を調べるべきです。 MPlayer メーリングリストを購読している人たちは、 文書を面倒がって読まない人には、それが誰であれ反感を持ちます。 そのため、彼らにバグ報告をするときには、マニュアルを読んでください。
xine HOWTO にはすべてのプレイヤに一般的な性能向上についての章が含まれています。
最後に、読者が試みるかもしれない 有望なアプリケーションをいくつかあげます。
Avifile. port が multimedia/avifile にあります。
Ogle. port が multimedia/ogle にあります。
multimedia/dvdauthor. DVD コンテンツをオーサリングするためのオープンソースパッケージです。
TV カードを使用することで、 TV 放送をコンピュータで見ることができます。 これらの多くは RCA コンポジットまたは S-video 入力端子を備えており、 FM ラジオチューナを装備したカードもあります。
FreeBSD は Brooktree Bt848/849/878/879 または Conexant CN-878/Fusion 878a をビデオキャプチャチップに採用した PCI TV カードに bktr(4) ドライバで対応しています。 対応しているチューナを搭載したボードかどうかを bktr(4) マニュアルページの一覧を参照して確認してください。
TV カードを使用するために bktr(4) ドライバを読み込む必要があります。 /boot/loader.conf ファイルに以下の行を追加してください。
bktr_load="YES"
あるいは、カーネルにドライバを静的に組み込むこともできます。 この場合、次の行をカーネルコンフィギュレーションファイルに追加します。
device bktr device iicbus device iicbb device smbus
カードコンポーネントは I2C バス経由で連結されているため、 bktr(4) ドライバに加えてこれらのデバイスドライバが必要になります。 編集したら新しいカーネルを構築し、インストールします。
システムにドライバを追加したら、計算機を再起動してください。 起動時に TV カードは以下のように認識されるでしょう。
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
もちろん、これらのメッセージはハードウェアに応じて異なります。 とはいえ、チューナが正しく検知されているかどうか確認するべきです。 sysctl(8) による MIB の設定や、 カーネルコンフィギュレーションファイルオプションで、 検知されたいくつかのパラメータを変更できます。 たとえば、チューナを Philips SECAM チューナとして検知されるようにするには、 カーネルコンフィギュレーションファイルに以下の行を追加します。
options OVERRIDE_TUNER=6
または、直接 sysctl(8) を使用して変更します。
# sysctl hw.bt848.tuner=6
利用可能なオプションの詳細については bktr(4) マニュアルページおよび /usr/src/sys/conf/NOTES ファイルを参照してください。
TV カードを使用するためには、以下のアプリケーションの一つをインストールする必要があります。
multimedia/fxtv はウィンドウ内に TV 映像を映します。 画像/音声/ビデオを取り込むこともできます。
multimedia/xawtv も TV アプリケーションです。 fxtv と同様の機能があります。
misc/alevt は文字放送 (ビデオテキスト/テレテキスト) のデコードと表示をします。
audio/xmradio は TV カードに搭載された FM ラジオチューナを使用するためのアプリケーションです。
audio/wmtune はラジオチューナのためのお手軽なデスクトップアプリケーションです。
他にも多くのアプリケーションが FreeBSD Ports Collection に収録されています。
TV カードに関する問題が起きたときには、 bktr(4) ドライバが本当にビデオキャプチャチップおよびチューナに 対応しているか、オプションが正しく設定されているかどうかをまず確認してください。 TV カードに関するサポートやさまざまな質問に関しては、 freebsd-multimedia メーリングリストに参加したり、 過去のアーカイブを検索してみてください。
FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) API によって実現されており、 FreeBSD Ports Collection でも提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。
FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 設定を始める前に、 SANE がスキャナに対応しているか確認してください。 SANE には スキャナについての情報とその状況がまとめられている 対応デバイスの一覧 があります。また、FreeBSD の uscanner(4) マニュアルページにも対応 USB スキャナの一覧が記載されています。
前述のように、FreeBSD はスキャナのインタフェースとして SCSI と USB の両方に対応しています。 スキャナのインタフェースによって、必要となるドライバが異なります。
GENERIC カーネルにはデフォルトで USB スキャナに対応するためのデバイスドライバが搭載されています。 カスタムカーネルを使用する際には、 以下の行がカーネルコンフィグレーションファイルにあることを 確認してください。
device usb device uhci device ohci device uscanner
マザーボードにどんな USB チップセットが実装されているかによって、 device uhci か device ohci のどちらかが必要となります。ただし、両方を カーネルコンフィグレーションファイルに記載しても害はありません。
使用しているカーネルが GENERIC カーネルではなく、 カーネルを再構築したくなければ、 kldload(8) コマンドを使用して uscanner(4) デバイスドライバモジュールを直接読み込むことができます。
# kldload uscanner
このモジュールをシステムを起動するたびに読み込みたければ、 以下の行を /boot/loader.conf ファイルに追加してください。
uscanner_load="YES"
適切なドライバを組み込んだカーネルで再起動するか、 必要となるモジュールを読み込んだ後、 USB スキャナをシステムに接続します。 すると、メッセージバッファ (dmesg(8)) にスキャナが認識されたことを示すメッセージが出力されます。
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
この例では、スキャナが /dev/uscanner0 デバイスノードを使用していることがわかります。
スキャナに付属しているインタフェースが SCSI であれば、 重要なのはどの SCSI ボードを使用すればよいか把握することです。 使用する SCSI チップセットによって、 カーネルコンフィグレーションファイルを調整する必要があります。 GENERIC カーネルは 一般に使用される SCSI コントローラのほとんどに対応しています。 NOTES ファイルを読んで、 適切な行をカーネルコンフィグレーションファイルに追加してください。 また、SCSI アダプタドライバに加えて、 以下の行をカーネルコンフィグレーションファイルに 記述する必要があります。
device scbus device pass
カーネルを適切にコンパイルしてインストールすると、 システムの起動時にデバイスがメッセージバッファに出力されるはずです。
pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers
システムを起動する際にスキャナの電源を入れてなければ、 camcontrol(8) コマンドを使用して SCSI バスをスキャンし、 以下のように手動でデバイスを検出させることもできます。
# camcontrol rescan all Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful
すると、スキャナは SCSI デバイスの一覧に現れるでしょう。
# camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
SCSI デバイスについての詳細は、scsi(4) および camcontrol(8) のマニュアルページをご覧ください。
SANE システムは、 二つの部分、すなわちバックエンド (graphics/sane-backends) とフロントエンド (graphics/sane-frontends) に分割されています。 バックエンドはスキャナそのものに対するアクセスを提供します。 SANE の 対応デバイスの一覧 には、どのバックエンドが画像スキャナに対応しているかが記載されています。 デバイスを使用するためには、正しいバックエンドを決定するのは必須です。 また、フロントエンドはグラフィカルなスキャニングインタフェース (xscanimage) を提供します。
はじめに、 graphics/sane-backends の port または package をインストールしましょう。 次に、sane-find-scanner コマンドを使用して、 SANE システムで使用するバックエンドを検出します。
# sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
この出力から、 スキャナインタフェースの種類と システムに接続されているスキャナが使用するデバイスノードがわかります。 ベンダ名や製品のモデル名は表示されないかも知れませんが、 重要ではありません。
Note: USB スキャナではファームウェアを読み込む必要がある場合があります。 これはバックエンドのマニュアルページで説明されています。 sane-find-scanner(1) と sane(7) のマニュアルページも読んでください。
スキャナがフロントエンドで認識されるか調べてみましょう。 デフォルトでは、SANE のバックエンドには scanimage(1)
と呼ばれるコマンドラインツールが付属します。 このコマンドを使用すると、
デバイスの一覧を表示したり画像を取得することができます。 -L
オプションを使うと、 スキャナデバイスの一覧が出力されます。
# scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
何も出力が得られなかったり、 スキャナが見つからなかったというメッセージが表示されたら、 scanimage(1) はスキャナを認識できなかったのでしょう。 このような場合は、バックエンドの設定ファイルを編集し、 使用するスキャナデバイスを定義する必要があります。 /usr/local/etc/sane.d/ ディレクトリには、 バックエンドが使用するすべての設定ファイルがあります。 このデバイスの認識による問題は、 特定の USB スキャナで発生するものです。
たとえば、 Section 7.6.2.1 で使用した USB スキャナを接続したシステムで sane-find-scanner コマンドを実行すると、以下のような情報が得られます。
# sane-find-scanner -q found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
スキャナは正しく検出されました。 USB インタフェースを使用し、 /dev/uscanner0 デバイスノードに接続されていることがわかります。 次に、スキャナが正しく認識されているかどうか確認してみましょう。
# scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).
スキャナが認識されなかったので、 /usr/local/etc/sane.d/epson.conf ファイルを編集する必要があります。 このスキャナのモデルは EPSON Perfection® 1650 なので、 epson バックエンドを使用すればいいことがわかります。 バックエンドの設定ファイルに書かれているコメントを必ず読んでください。 設定ファイルを変更するのは非常に簡単です。 使用しているスキャナには不適切なインタフェースをすべてコメントアウトし (今回の場合は、USB インタフェースを使用するので scsi という語で始まる行をすべてコメントアウトします)、 ファイルの末尾に使用するインタフェースとデバイスノードを追加します。 この例では、以下の行を追加しました。
usb /dev/uscanner0
詳細と使用すべき構文は、 バックエンドのマニュアルページはもちろんのこと、 バックエンドの設定ファイルに書かれているコメントも読んでください。 以上の設定で、スキャナが認識されたかどうかを確認できます。
# scanimage -L device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
USB スキャナが認識されました。 ブランドやモデルがスキャナに一致しなかったとしても、それほど重要ではありません。 着目すべきは `epson:/dev/uscanner0'という部分で、 バックエンド名とデバイスノードが正しく認識されていることがわかります。
scanimage -L コマンドを実行してスキャナが認識されたことがわかれば、設定は終了です。 デバイスはスキャンする準備ができました。
scanimage(1) コマンドを使用すると コマンドラインから画像を取得することができます。その一方で、 GUI を使用して画像を取得できると一層良いでしょう。 SANE は、簡素ですが役に立つグラフィカルなインタフェース xscanimage (graphics/sane-frontends) を提供しています。
Xsane (graphics/xsane) はもう一つのグラフィカルなスキャニングフロントエンドで、 人気があります。 Xsane には、さまざまなスキャニングモード (写真、FAX など)、 色補正、バッチスキャンなど先進的な機能があります。 これらのアプリケーションの両方とも GIMP のプラグインとして使用することができます。
前述の操作には、 すべて root 権限が必要となります。 しかしながら、他のユーザがスキャナに アクセスできるようにすることも可能です。 そのためには、スキャナが使用するデバイスノードへの 読み込み権限と書き込み権限をユーザに与えます。 一例として、USB スキャナが、グループ operator が所有する、/dev/uscanner0 デバイスノードを使用しているものとします。 ユーザ joe を グループ operator に加えると、 彼はスキャナを使用できるようになります。
# pw groupmod operator -m joe
詳細は pw(8) のマニュアルページをご覧ください。 また、初期設定では、operator グループに所属するメンバのみが /dev/uscanner0 デバイスノードを読み出すことができます。 このデバイスノードに書き込めるようにするには、 適切な許可属性 (0660 または 0664) を設定する必要があります。 まず、/etc/devfs.rules に次の行を追加してください。
[system=5] add path uscanner0 mode 660
次に、/etc/rc.conf に以下の行を追加して システムを再起動します。
devfs_system_ruleset="system"
/etc/devfs.rules で設定した内容についての詳細は、devfs(8) のマニュアルページをご覧ください。
Note: もちろん、ユーザをどんなグループ (特にグループ operator) に追加する時はいつでも、 セキュリティ上の理由から二度は検討を行うべきです。
カーネルは FreeBSD オペレーティングシステムの中核をなすもの です。カーネルは、メモリ管理、セキュリティ制御の強制、ネットワー ク、ディスクアクセスなどを担っています。FreeBSD はどんどん動的に 構成することができるようになっていますが、まだ、時にはカーネルコ ンフィグレーションをやり直して、再構築する必要があります。
この章では、以下のことを扱っています。
なぜカスタムカーネルの構築が必要になることがあるのか。
コンフィグレーションファイルの書き方や、既存のコンフィグ レーションファイルの置き換え。
カーネルコンフィグレーションファイルから新しいカーネルを構 築する方法。
新しいカーネルのインストール方法。
/dev 下に必要となる項目を作成する方法。
うまく行かないときの問題解決法。
伝統的に、FreeBSD のカーネルは “モノリシック” (monolithic) カーネルと呼ばれるものでした。 これは、カーネルが単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ新しいカーネルを構築して、 コンピュータを再起動して新しいカーネルを動かさなれければならなかった ということです。
今日では FreeBSD は、カーネルの機能のかなりが必要に応じて動 的にカーネルに組み込んだり外したりできるモジュールにおかれている モデルへと、急速に移行しています。こうしてカーネルは (ノート PC の PCMCIA カードのように) 突如使えるようになったハードウェアに対 応したり、カーネルが作成された時点では必要なかった新たな機能を取 り入れられるようになります。くだけた表現では、これは KLD と呼ば れます。
しかしながら、いまだにいくらかは静的にカーネルを構成する必要 があります。ある場合においては、機能がカーネルとあまりに密接に結 びついているため、動的に組み込むことができません。ほかには、単に まだ誰もその機能に対する組み込み可能なカーネルモジュールを書く時 間をとっていないだけということもあります。
システムに合わせたカーネルの構築はほとんどすべての Unix ユーザが 避けて通ることのできない最も重要な通過儀礼の1つです。 この作業は、多くの時間を必要としますが、あなたの FreeBSD システムに多くの利益をもたらします。 広範囲のハードウェアをサポートしなければならない GENERICカーネルとは異なり、 システムに合わせたカーネルは あなたの PC のハードウェアのみをサポートします。これは、 次にあげるような利益をもたらします。
素早く起動します。 カーネルはあなたのシステム上にあるハードウェアしか 検出を行わないので、 あなたのシステムの起動にかかる時間は劇的に短くなります。
メモリの消費量が減少します。 システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルは常に実メモリ上に存在しなければならないので、 これは重要なことです。 したがって、RAM が少ないシステムでは、 カーネルの再構築は大変重要です。
追加のハードウェアをサポートします。 システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。
まず、 カーネル再構築に必要なディレクトリをざっと見てみましょう。 ここではディレクトリはすべて /usr/src/sys 以下の相対位置で示します。 また、/sys からもアクセス可能です。 ここには、カーネルの各部分を構成するサブディレクトリが いくつもあります。しかし、私たちの目的で最も重要なのは arch/conf です。 ここで、あなたの システムに合わせてカーネルコンフィグレーションを編集します。 それから compileディレクトリ、 ここはカーネルが作られる 場所です。 arch は、i386, alpha, pc98(これは 日本で普及している PC のための開発ブランチです)のいずれかを表します。 各アーキテクチャのディレクトリ内部にあるファイルはすべて そのアーキテクチャでのみ使用され、残りのコードは FreeBSD が他のプラットフォームに移植される際に共有されます。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれ各々のサブディレクトリに分かれている、 という論理的な構成に注意してください。
Note: もし、あなたのシステムに/usr/src/sys 以下のディレクトリがなければ、 カーネルのソースが インストールされていません。 もっとも簡単な方法は (rootで) /stand/sysinstall を用いて以下のようにすることです。 設定 (Configure) を選んでから 配布ファイル (Distribution) を選択し、src の中の sys をインストールしてください。 sysinstall が嫌いで、“公式” FreeBSD CDROM を利用できるなら、 コマンドラインからソースコードをインストールすることもできます。
# mount /cdrom # mkdir -p /usr/src/sys # ln -s /usr/src/sys /sys # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
つぎに、 arch/confに移動して、 GENERIC コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください。たとえば次のようにします。
# cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL
慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSDマシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL と呼ぶことにします。
Tip: カーネルコンフィグレーションファイルを、直に /usr/src の下に置くのはよい考えとはいえま せん。なにか問題が起きたときに、 /usr/src を消してやり直したいと思うかもし れません。その後で、あなたがカスタマイズしたカーネルコンフィグ レーションファイルを消してしまったことに気づくのに時間はかから ないでしょう。
カーネルコンフィグレーションファイルは他の場所において、 i386 ディレクトリにシンボリックリンクを張 る方がよいでしょう。
たとえば、次のようにします。
# cd /usr/src/sys/i386/conf # mkdir /root/kernels # cp GENERIC /root/kernels/MYKERNEL # ln -s /root/kernels/MYKERNEL
Note: この作業は root 権限でおこなう必要があります。そうでなければ、 permission denied というエラーが出ます。
では、MYKERNEL をあなたの好きなエディタで編集してください。もし、 システムをインストールしたばかりならば、利用できるエディタは vi だけかもしれません。ここでは使い方の説明はしませんが、 参考図書 にあるような多くの本で詳しく説明 されていますので、 そちらを参照してください。FreeBSD にはより簡単なエディタとして ee があります。初心者の方であればこちらをエディタに選ぶとよいでしょう。 まずファイルの最初の方のコメント行を編集し、あなたのコンフィグ レーションに合せて変更した点などを記述して GENERIC と区別がつく ようにしておきましょう。
もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば、このファイルはとても親しみ やすいでしょう。しかし、DOSのようなその他の オペレーティングシステムしか知らない人から見れば、 GENERIC コンフィグレーションファイルはとても なじみにくいものかもしれません。そのような場合は、 コンフィグレーションファイル の節をゆっくりと注意深く読んでください。
Note: FreeBSD Project の最新のソースファイルと、あなたのソースツリーを同期させている 場合、アップデートを行う際には、必ず /usr/src/UPDATING ファイルをチェックしてください。 このファイルには、FreeBSD をアップデートする際の重要な問題がすべて書かれています。 /usr/src/UPDATING は常にあなたの FreeBSD ソースファイルのバージョンと同期していますので、 ハンドブックの情報よりも正確なものとなっています。
ここで、カーネルのソースコードをコンパイルしなくてはなりませ ん。手順は二つあり、どちらを使うかは、なぜカーネルを再構築するか と、動かしている FreeBSD のバージョンによって決まります。
カーネルのソースコードだけインストー ルしているなら、手順 1 にしたがってください。
4.0 より前の FreeBSD を使っていて、 make world を行って FreeBSD 4.0 以上にアップグレードしないなら、 手順 1 にしたがってください。
(IPFIREWALL オプションを追加するなど のように) ソースコードを更新せずに新しいカーネルを構築するな らどちらの手順を用いても構いません。
make world の一環としてカーネルの再構築を行っているなら、 手順 2 にしたがってください。
手順 1: “伝統的な” 方法によるカーネル構築
カーネルソースコードを生成するため、config(8) を実 行します。
# /usr/sbin/config MYKERNEL
カーネルを構築するためのディレクトリに移動します。
# cd ../../compile/MYKERNEL
カーネルをコンパイルします。
# make depend # make
新しいカーネルをインストールします。
# make install
手順 2: “新しい” 方法によるカーネル構築
/usr/src ディレクトリに移動します。
# cd /usr/src
カーネルをコンパイルします。
# make buildkernel KERNCONF=MYKERNEL
新しいカーネルをインストールします。
# make installkernel KERNCONF=MYKERNEL
Note: FreeBSD 4.2 とそれ以前の場合は、 KERNCONF= ではなく KERNEL= としなければなりません。 2001 年 2 月 2 日以降の 4.2-STABLE は KERNCONF= を認識します。
何らかの方法であなたのソースツリーをアップグレードして いない 場合 (CVSup, CTM, anoncvs などを実行していない場合)、 config, make depend, make, make install の手順を実行してください。
新しいカーネルはルートディレクトリに /kernelという 名前でコピーされ、 今までのカーネルは /kernel.old という名前へ変更されます。では、システムをシャットダウン、 リブートして新しいカーネルを使ってください。 うまく行かない場合は、この章の終りの 問題が起きた場合には を参照してください。この章の新しい カーネルが起動しない 場合のリカバリの方法を注意深く読んでおいてください。
Note: FreeBSD 4.X 以前のバージョンを使っていて、 (サウンドカードなど) 新しいデバイスを追加した場合は、 使う前に /dev ディレクトリにデバイスノードを追加しなければならないかもしれません。 詳しくは、この章で後ほど出てくる デバイスノードの作成 をご覧ください。
コンフィグレーション ファイルの一般的なフォーマット はとてもシンプルです。各行は1つのキーワードと1つ以上の 引数を含んでいます。見やすくするために、ほとんどのキーワードは 引数を1つしか書いてありません。 #に続くものはすべてコメントとして扱われ、 無視されます。ここでは、それぞれのキーワードについて だいたい GENERIC に出てくる順番で説明します。しかし、 お互いに関係のあるキーワードは、実際には GENERIC ファイル上に バラバラに現れていても、(ネットワーキングのように)1つにまとめ てあります。 おびただしい数の オプションの一覧が GENERICと同じディレクトリの LINT コンフィグ レーションファイルにあります。もし、ある行の目的や必要性に疑 問を持ったら最初に LINT をチェックしてください。
数字と二重引用符: FreeBSD 3.x と、それまでの全てのバージョンの FreeBSD における config(8) は、コンフィグレーションファイル中の テキストとして使われる数字を含む文字列が 全て二重引用符で括られていなければならないという制限があります。
この制限は (このハンドブックが対象としている) 4.X ブランチでは取り除かれました。 4.X 以前のシステムを使っている場合には、 サンプルとしてシステム上の /usr/src/sys/i386/conf/LINT と /usr/src/sys/i386/conf/GENERIC を参照してください。
以下は必要に応じてコメントを追加した GENERIC カーネルの コンフィグレーションファイルです。 この設定例は /usr/src/sys/i386/conf/GENERIC に極めて近いものになっているはずです。 その他に指定可能なカーネルオプションについては、 /usr/src/sys/i386/conf/LINT を参照してください。
# # GENERIC -- Generic kernel configuration file for FreeBSD/i386 # # このファイルについて更に情報が必要なら、ハンドブックのカーネル # コンフィグレーションファイルのセクションを参照して下さい。 # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # doc ディストリビューションをインストールした場合、ハンドブックは # ローカルマシンの /usr/share/doc/handbook でも見ることができます。 # 最新版は FreeBSD の WWW サーバ (http://www.FreeBSD.ORG/) を参照して # 下さい。 # # ./LINT コンフィギュレーションファイルには、デバイス行に関する大量の # オプションと詳細な説明があります。もしある行の目的又は必要性について # 疑問がある場合はまず LINT をチェックして下さい。 # # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $
以下は すべての カーネルの構築に 必須のキーワードです:
machine i386
マシンのアーキテクチャです。 これは i386, alpha, pc98 のいずれかでなければなりません。
cpu I386_CPU cpu I486_CPU cpu I586_CPU cpu I686_CPU
上記はあなたのシステムの CPU タイプを指定します。 複数の行を書いても構いません。 (例: I586_CPU とすべきか I686_CPU とすべきかはっきり分からない場合。 しかしながら、カスタムカーネルを作る場合、あなたの持つ CPU だけを指定するのがベストです。 もしあなたの CPU がどのタイプか分からない場合、 dmesg(8) を使って起動メッセージを 調べるとよいでしょう。
Alpha アーキテクチャの場合は、 cpu に異なった値を用います。
cpu EV4 cpu EV5
もしあなたが Alpha マシンを使っている場合、 上記の内のどれかを指定して下さい。
ident GENERIC
ここはカーネルの識別名を書きます。 あなたがカーネルに付けたい名前に書き換えて下さい (前記の例の MYKERNEL のように)。 ident に書いた名前はカーネルを起動する時に 表示されるので、 普段使っているカーネルと区別したいときは、 新しいカーネルに違う名前を付けると 良いでしょう(例: 実験的なカーネルを構築する場合)。
maxusers n
maxusers オプションは重要なシステムテーブルの サイズを決定します。 この数字はあなたのマシンを同時に使うと思われるユーザー数と おおよそ等しくするのが良いでしょう。
FreeBSD 4.5 からは、これを明示的に 0 に設定すると、システムが設定を自動調整します[5]。それより前のバージョンの FreeBSD を使っているか、自分で管理したい場合、特に X ウインドウシステムを使ったり、ソフトウエアをコンパイルするなら、 maxusers は最低 4 にして下さい。 その理由は、maxusers によって計算される最も 重要なテーブルがプロセスの最大数で、それは 20 + 16 * maxusers となります。 もし、maxusers を 1 にすると、 同時に 36 プロセスしか利用できなくなりますが、 システムは起動時に 18 ほどのプロセスを立ち上げ、 X ウインドウシステムは 15 ほどのプロセスを立ち上げるので、 オンラインマニュアルを読むような単純なタスクでさえ フィルタ、展開、表示に 9 個のプロセスを利用するために、プロセス数不足になります。 maxusers を 64 に設定すると、 1044 個のプロセスを同時に利用することができるので、 殆どのユーザには充分でしょう。 もしあなたが別のプログラムを立ち上げる時、 恐れられている proc table full エラーが 発生する場合や、ftp.FreeBSD.org のように多数のユーザにより 同時に利用されるサーバを動かしている場合には、 この数字を増やしてカーネルを再構築することができます。
Note: maxusers はあなたのマシンにログインする ユーザ数を制限するものでは ありません。 それは単に、あなたのシステムを使うであろうユーザの最大数や それぞれのユーザがどれくらいのプロセスを走らせるかに 合わせて各種テーブルの大きさを設定するだけです。 同時にリモートログインする最大ユーザ数を制限するキーワードは pseudo-device pty 16 です。
# Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13
npx0 はハードウェアコプロセッサか ソフトウエアエミュレータのどちらかである浮動小数点演算ユニットへの FreeBSD におけるインタフェースです。 これは任意選択ではありません。
# Pseudo devices - the number indicates how many units to allocate. pseudo-device loop # Network loopback
TCP/IP の汎用ループバックデバイスです。 localhost (すなわち 127.0.0.1) に対して telnet や FTP で接続すると、この疑似デバイスを通して戻ってきます。 これは必須です。
以下に続くすべては大体において追加設定項目です。 詳細は各項目の次に書かれている注意書きを参照して下さい。
#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols options MATH_EMULATE #Support for x87 emulation
この行では、あなたのコンピュータが浮動小数点演算コプロセッサを 持たない場合(CPU が 386 又は 486SX)、 カーネルにシミュレートさせるよう設定します。 あなたが 486DX, 又は (387 や 487 チップを別途搭載した) 386, 486SX 又は更に上位 (Pentium, Pentium II 他) を持っている場合はコメントアウトして下さい。
Note: FreeBSD の浮動小数点エミュレーションルーチンはあまり正確では ありません。 もしあなたが浮動小数点コプロセッサを持っておらず、 かつベストな演算精度が必要であれば、GNU の浮動小数点サポートを 利用する GPL_MATH_EMULATE を使ってみて下さい。 このオプションはライセンス上の理由によりデフォルトでは 含まれていません。
options INET #InterNETworking
ネットワークのサポート。 ネットワークに接続する予定がなくてもこのオプションは残して下さい。 殆どのプログラムは少なくともループバックネットワーク (あなたの PC の中でのネットワーク接続) を必要としますので、 基本的にこの行は必須です。
options INET6 #IPv6 communications protocols
このオプションは IPv6 通信プロトコルを利用可能にします。
options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!]
これは標準のハードドライブファイルシステムです。 ハードディスクから起動する場合は残して下さい。
options UFS_DIRHASH #Improve performance on big directories
このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化するコードを有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、メモリが貴重で ディスクアクセス速度がそれほど重要でない 小規模なシステムでは削除するとよいでしょう。
options SOFTUPDATES #Enable FFS Soft Updates support
このオプションは、カーネル内の Soft Updates 機能を有効にし、 ディスクへの高速な書き込みを支援します。 4.X ブランチではデフォルトで有効にされましたが、 有効になっていない可能性もあります。 mount(8) の出力を見て、有効になっているかどうか確認してください。 soft-updates オプションが見当たらなければ、 tunefs(8) か、新規のファイルシステムについては newfs(8) で有効にする必要があります。
options MFS #Memory Filesystem options MD_ROOT #MD is a potential root device
これはメモリ上にマップされたファイルシステムです。 これは基本的に一時ファイルの高速格納用の RAM ディスクであり、 あなたが有効に利用したい大量のスワップスペースを持っている 場合には有用でしょう。 多くのプログラムが一時データをここに保存することから、 MFS パーティションをマウントする最適な場所は /tmp ディレクトリです。 MFS RAM ディスクを /tmp にマウントするには 次の行を /etc/fstab に追加して下さい:
次に再起動するか、コマンド mount /tmp を実行して下さい。
options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required
ネットワークファイルシステム。 Unix ファイルサーバから TCP/IP を介してパーティションを マウントするのでない限り、これらの行をコメントアウトして下さい。
options MSDOSFS #MSDOS Filesystem
MS-DOS ファイルシステム。 起動時に DOS でフォーマットされたハードドライブを マウントするのでない限り、この行は安全にコメントアウトできます。 この機能は最初に DOS パーティションをマウントする時に自動的に ロードされます。 又、優秀な mtools (Ports コレクションにあります) を使ってもマウント、 アンマウントすることなしに DOS フロッピーにアクセスすることができます。 (MSDOSFS は必要としません)
options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required
CD-ROM 用の ISO 9660 ファイルシステム。 もしあなたが CD-ROM ドライブを持っていないか、 時々データ CD をマウントするだけならこの行をコメントアウトしても 大丈夫です (データ CD を最初にマウントする時、自動的にロードされます)。 音楽 CD はこのファイルシステムを必要としません。
options PROCFS #Process filesystem
プロセスファイルシステム。 これは /proc にマウントされる、 ファイルシステムの “ふりをする” もので、 ps(1) のようなプログラムに、どんなプロセスが走っているか に関するより多くの情報を提供させる事ができます。
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。
options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
この行は、カーネルがそれぞれの SCSI 機器を検出する前に 15 秒間待つようにします。 あなたが IDE ドライブしか持たないなら無視して結構です。 そうでないなら、起動時間を短くするため、おそらく待つ時間を短く、 5 秒くらいにしたいでしょう。 勿論、そうした場合に FreeBSD が SCSI 機器を認識しなくなった場合は 時間を元に戻す必要があります。
options UCONSOLE #Allow users to grab the console
ユーザにコンソールを所有することを許可します。 X のユーザには役に立ちます。 たとえば xterm -C と入力すれば、コンソール xterm を実行できます。ここにはあなたが受け取る write(1), talk(1) などのメッセージや、 カーネルからのコンソールメッセージが表示されます。
options USERCONFIG #boot -c editor
このオプションは起動メニューからコンフィグレーションエディタ を起動することができるようにします。
options VISUAL_USERCONFIG #visual boot -c editor
このオプションは起動メニューからビジュアルコンフィグレーション エディタを起動できるようにします。
Note: FreeBSD バージョン 5.0 以降では、新しく device.hints(5) を利用する方法が採用され、userconfig は使われなくなりました。 device.hints(5) に関する詳しい情報は Section 12.5 をご覧ください。
options KTRACE #ktrace(1) support
この行はデバッギングに役立つカーネルプロセスのトレースを 可能にします。
options SYSVSHM #SYSV-style shared memory
このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に 描画のスピードアップに利用します。 X を使っているなら、これを含めておいた方がいいでしょう。
options SYSVSEM #SYSV-style semaphores
System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。
options SYSVMSG #SYSV-style message queues
System V のメッセージのサポート。 これもカーネルサイズを数百バイト大きくするだけです。
Note: ipcs(1) コマンドを実行するとこれらの System V 機能を使っているプロセスのリストを表示します。
options P1003_1B #Posix P1003_1B real-time extensions options _KPOSIX_PRIORITY_SCHEDULING
リアルタイム拡張が 1993 POSIX に追加されました。 Ports コレクションの内のいくつかのアプリケーション (たとえば Star Office) はこれを使っています。
options ICMP_BANDLIM #Rate limit bad replies
このオプションは ICMP エラー応答のバンド幅制限を可能にします。 サービス不能パケットによる攻撃からマシンを保護するために必要です。
# To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O
上の行は両方とも SMP サポートのために必要です。
device isa
FreeBSD がサポートするすべての PC はこれらの内のひとつを 持っています。 あなたが IBM PS/2 (マイクロチャネルアーキテクチャ) マシンを持っている場合、FreeBSD は、現時点では限定的な対応を提供しています。 MCA の対応状況に関する詳細は、 /usr/src/sys/i386/conf/LINT をご覧ください。
device eisa
あなたが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべての デバイスの自動検出と設定を可能にします。
device pci
あなたが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを 可能にします。
# Floppy drives device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1
これはフロッピーディスクコントローラです。 fd0 は A: フロッピードライブ、fd1 は B: ドライブです。
device ata
このドライバはすべての ATA と ATAPI デバイスをサポートします。 最近のマシンでは device ata 行を 1 行書くだけで すべての PCI ATA/ATAPI デバイスを検出することができます。
device atadisk # ATA disk drives
ATA ディスクドライブには device ata と共にこの行が必要です。
device atapicd # ATAPI CDROM drives
ATAPI CDROM ドライブには device ata と共にこの行が必要です。
device atapifd # ATAPI floppy drives
ATAPI フロッピードライブには device ata と共にこの行が必要です。
device atapist # ATAPI tape drives
ATAPI テープドライブには device ata と共にこの行が必要です。
options ATA_STATIC_ID #Static device numbering
この行はコントローラ番号を (古いドライバのように) 静的に 割り当てます。そうでない場合、デバイス番号は動的に割り当てられます。
# ATA and ATAPI devices device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15
上の行は古い、PCI ではないシステムの場合の形式です。
# SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices device amd # AMD 53C974 (Teckram DC-390(T)) device dpt # DPT Smartcache - See LINT for options! device isp # Qlogic family device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets) device adv0 at isa? device adw device bt0 at isa? device aha0 at isa? device aic0 at isa?
SCSI コントローラです。 あなたのシステムにないデバイスはコメントアウトして下さい。 もし IDE しかないシステムならこれらすべてを削除できます。
# SCSI peripherals device scbus # SCSI bus (required) device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access)
SCSI 周辺機器です。 あなたが持っていないデバイスはコメントアウトして下さい。 もし IDE しか持っていないならこれらを完全に削除できます。
# RAID controllers device ida # Compaq Smart RAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family
サポートされる RAID コントローラです。 これらのどれも持っていない場合、すべてをコメントアウト又は 削除することができます。
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD
キーボードコントローラ (atkbdc) は AT キーボード及び PS/2 スタイルポインティングデバイスの I/O サービスを提供します。 キーボードドライバ (atkbd) と PS/2 ポインティングデバイスドライバ (psm) はこのコントローラを必要とします。
device atkbd0 at atkbdc? irq 1
atkbd ドライバ。 atkbdc コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。
device psm0 at atkbdc? irq 12
あなたのマウスが PS/2 マウスポートに接続するタイプなら このデバイスを使って下さい。
device vga0 at isa?
ビデオカードドライバです。
# splash screen/screen saver pseudo-device splash
起動時に画面がはじけます。 スクリーンセーバもこのデバイスを必要とします。
# syscons is the default console driver, resembling an SCO console device sc0 at isa?
sc0 はSCOに類似したデフォルトの コンソールドライバです。 殆どのフルスクリーンのプログラムは termcap のようなターミナルデータベールライブラリにアクセスするので、 sc0 を使うか VT220 互換のコンソールドライバである vt0 を使うかは重要ではありません。 ログイン時、このコンソールでフルスクリーンプログラムが動かないときは TERM 変数を scoansi に設定して下さい。
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std
これは VT220 互換のコンソールドライバで、 VT100/102 と後方互換性があります。 sc0 とハード的に互換性がないラップトップでも 問題なく動きます。 ここでもログイン時に TERM 変数を vt100 又は vt220 と設定して下さい。 このドライバは、sc0 デバイス用の termcap や terminfo のエントリが無い、ネットワーク上の多くの異なったマシンに 接続する際にも有用です -- vt100 は仮想的にすべてのプラットフォームで有効であるべきです。
# Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management
先進的な電源管理機能 (APM) のサポート。 ラップトップでは役に立つでしょう。
# PCCARD (PCMCIA) support device card device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable
PCMCIA サポート。ラップトップを使っているなら必要でしょう。
# Serial (COM) ports device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5 device sio3 at isa? disable port IO_COM4 irq 9
これらは MS-DOS/Windows の世界では COM1からCOM4 と呼ばれている 4 つのシリアルポートです。
Note: もしあなたが内蔵モデムを COM4 に、シリアルポートを COM2 に設定している場合、FreeBSD からアクセスするには、 (IRQ2=IRQ9 という、不明瞭な技術的理由により) モデムの IRQ を 2 に変更する必要があります。 もしマルチポートシリアルカードを持っていてこれらの設定の正しい 数値に関する情報がほしい場合はマニュアルページ sio(4) を参照して下さい。 ビデオカードのいくつかは (S3 チップベースのものは特に) IO アドレスを 0x*2e8 と言う形式で表現する一方、 多くの安価なシリアルカードは 16 ビットの IO アドレスを完全に デコードしないので、これらのカードを使った場合衝突が起こり、 事実上 COM4 ポートを使用不可能にします。
各々のシリアルポートは (共有割り込み番号をサポートする マルチポートカードを使っていない限り) 固有の IRQ を必要とします。 従って COM3 と COM4 用のデフォルト IRQ は利用できません。
# Parallel port device ppc0 at isa? irq 7
ISA バスパラレルポートインタフェースです。
device ppbus # Parallel port bus (required)
パラレルポートバスのサポートを提供します。
device lpt # Printer
パラレルポートプリンタのサポートです。
Note: 上の 3 つはすべてパラレルプリンタを利用可能にするために 必要です。
device plip # TCP/IP over parallel
パラレルネットワークインタフェース用のドライバです。
device ppi # Parallel port interface device
汎用I/O (“geek port”) + IEEE1284 I/O です。
#device vpo # Requires scbus and da
Iomega の Zip ドライブ用です。scbus と da サポートが必要です。 EPP 1.9モードを使うと最高の性能が得られます。
# PCI Ethernet NICs. device de # DEC/Intel DC21x4x (“Tulip”) device fxp # Intel EtherExpress PRO/100B (82557, 82558) device tx # SMC 9432TX (83c170 “EPIC”) device vx # 3Com 3c590, 3c595 (“Vortex”) device wx # Intel Gigabit Ethernet Card (“Wiseman”)
PCI ネットワークカードのドライバです。あなたのシステムに ないものはコメントアウトするか削除して下さい。
# PCI Ethernet NICs that use the common MII bus controller code. device miibus # MII bus support
MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、 すなわち MII に従うトランシーバや MII のようなトランシーバ制御 インタフェースを実装するもの、に必要となります。 カーネルコンフィギュレーションに device miibus を追加することで、汎用 miibus API のサポートと、 特定のドライバを必要としない場合に利用される汎用のものを含む すべての PHY ドライバが導入されます。
device dc # DEC/Intel 21143 and various workalikes device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (“Starfire”) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device ste # Sundance ST201 (D-Link DFE-550TX) device tl # Texas Instruments ThunderLAN device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (“Boomerang”, “Cyclone”)
MII バスコントローラコードを利用するドライバです。
# ISA Ethernet NICs. device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep # WaveLAN/IEEE 802.11 ワイヤレス NIC。 # 注: WaveLAN/IEEE は PCMCIA デバイスとしてしか実在しません。 # なので ISAア タッチメントは必要なく、リソースは常に PC カードコードに # より動的に割り当てられます。 device wi # Aironet 4500/4800 802.11 ワイヤレス NIC。 # 注: 下の宣言は ISA PnP モード (工場出荷時設定) のISAカード、PCMCIA # 及び PCI カードにのみ働きます。もし、ISA カードの I/O アドレスと IRQ # を手動で設定している場合は、ここでそれらのパラメータを指定しなく # てはいけません。 device an # これらの検出順序は現在 i386/isa/isa_compat.c により決められます。 device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 device fe0 at isa? port 0x300 device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300 device sn0 at isa? port 0x300 irq 10 # requires PCCARD (PCMCIA) support to be activated #device xe0 at isa?
ISA イーサネットドライバです。 どのカードがどのドライバによりサポートされているかは /usr/src/sys/i386/conf/LINT を参照して下さい。
pseudo-device ether # Ethernet support
ether はイーサネットカードを持っている場合に のみ必要です。汎用イーサネットプロトコルコードを含みます。
pseudo-device sl 1 # Kernel SLIP
sl は SLIP サポートを行います。 SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していて より高機能な PPP に殆ど取って代わられています。 sl に続く 数字 には同時に持てる SLIP セッション数を指定します。
pseudo-device ppp 1 # Kernel PPP
これはダイアルアップ接続用のカーネル PPP サポートです。 他にも tun を利用し、デマンドダイアリングのような 柔軟性と機能を提供するユーザーランドのアプリケーションとして 実装された PPP が存在します。ppp に続く 数字 には同時に持てる PPP セッション数を 指定します。
pseudo-device tun # Packet tunnel.
これはユーザーランド PPP ソフトウエアにより利用されます。 tun に続く 数字 には同時に持てる PPP セッション数を指定します。 詳細はこの本の PPP セクションを 参照して下さい。
pseudo-device pty # Pseudo-ttys (telnet etc)
これは “疑似ターミナル” 或いはシミュレートされた ログインポートです。 これは入ってくる telnet と rlogin セッション、 xterm やその他の Emacs のようなアプリケーションにより利用されます。 pty の後の 数字 は、 生成される pty の数を示します。もし同時にデフォルトの 16 より多くの xterm ウィンドウやリモートログインが 必要な場合、必要に応じてこの数字を増やして下さい。 最大は 256 です。
pseudo-device md # Memory “disks”
メモリディスク疑似デバイス。
pseudo-device gif
または
pseudo-device gif 4 # IPv6 and IPv4 tunneling
この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 FreeBSD 4.4 からは、gif デバイスは “auto-cloning (自動複製)” しますので、 (gif のあとに数値がこない) はじめの例を使ってください。 それより前のバージョンの FreeBSD では、数値が必要です。
pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。
# The `bpf' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf # Berkeley packet filter
これはバークレーパケットフィルタです。 この疑似デバイスはネットワークインタフェースを、イーサネットのような ブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 tcpdump(1) を使ってチェックをすることもできます。
Note: bpf 疑似デバイスは、dhclient(8) がデフォルトルータ (ゲートウェイ) の IP アドレスなどを取得する ためにも使われています。DHCP を使っているなら、これはコメント アウトしないでください。
# USB support #device uhci # UHCI PCI->USB interface #device ohci # OHCI PCI->USB interface #device usb # USB Bus (required) #device ugen # Generic #device uhid # “Human Interface Devices” #device ukbd # Keyboard #device ulpt # Printer #device umass # Disks/Mass storage - Requires scbus and da #device ums # Mouse # USB Ethernet, requires mii #device aue # ADMtek USB ethernet #device cue # CATC USB ethernet #device kue # Kawasaki LSI USB ethernet
様々なUSBデバイスのサポートです。
より詳細な情報と、FreeBSD によりサポートされる他のデバイスに ついては /usr/src/sys/i386/conf/LINT を参照して下さい。
Note: FreeBSD 5.0 以降を動かしているなら、 この節を飛ばして構いません。そのバージョンでは devfs(5) を用いて、ユーザに意識させずにデバイスノードを割り当てています。
カーネル内のほとんどすべてのデバイスは対応する “node” エントリが /dev ディレクトリにあります。これらのノードは普 通のファイルのように見えますが、実際にはプログラムがデバイスに アクセスするのに用いるカーネル内への特別なエントリです。 シェルスクリプトである /dev/MAKEDEVはオペレーティング システムを最初にインストールする時に実行され、サポートされてい る大部分のデバイスのノードを作ります。しかし、 すべての ノードが作られるわけではありませんので 新しいデバイスのサポートを加える時は対応するエントリがこのディ レクトリにあるかどうか確認してもしなければ、作ってください。 以下に例を示します。
IDE CD-ROMのサポートをカーネルに加えるとします。次の行 を加えます。
device acd0
これにしたがって、/devディレクトリに acd0 で始まるエントリをさがしてください。 1文字が後ろにつくかもしれません。 後ろについた文字が c であるか、先頭に r のつくエントリは “raw” デバイスを示します。 それらのファイルがないことが明らかになったとします。そこで /dev ディレクトリに移動して次のようにタイプします。
# sh MAKEDEV acd0
スクリプトの実行が終ったら /devに acd0c と racd0c エントリがあることを確認してください。これによ り正しく実行されたことがわかります。
サウンドカードの場合、以下のコマンドで対応する エントリが作成されます:
# sh MAKEDEV snd0
Note: サウンドカードのようなデバイスのノードを作る場合で、もし他 の人がマシンにアクセスするようであれば、そのデバイスを /etc/fbtab ファイルに追加して外部からのアクセスから 保護するのが望ましいでしょう。このファイルの詳細については fbtab(5) を参照してください。
GENERIC に含まれていないデバイスはエントリがありませんから、以上 の簡単な手順をおこなうことになります。
Note: すべての SCSI コントローラは同じ /dev の エントリを使用しますのでノードを作る必要はありません。 またネッ トワークカードと SLIP/PPP 疑似デバイスは /dev にはエント リがありませんのでこれらについても作る必要がありません。
カスタムカーネルを作る場合に起きるトラブルは、 次の 5 種類に分けられます。
カーネルコンフィグレーションファイルに設定を行なってから config(8) コマンドが失敗したのであれば、 おそらくファイルのどこかに単純な間違いがあります。 さいわい、config(8) はトラブルの起きた行番号を出力しますので vi で素早く見つけることができます。 例えば、次のように出力された場合
config: line 17: syntax error
vi のコマンドモードで 17G とタイプすれば、 問題のところへ飛ぶことができます。 GENERIC カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。
make コマンドが失敗した場合には、 カーネル設定で config(8) がとらえられなかったような間違いをしていることが多いようです。 もう一度コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 FreeBSD general questions メーリングリスト へあなたのカーネルコンフィグレーションファイルをつけてメールしてください。 誰かが素早く間違いを見つけてくれるでしょう。
カーネルが無事コンパイルできたのに、インストールに失敗 (make install または make installkernel に失敗) したら、最初に確認すべきことは、システムがセキュアレベル 1 以上で動いていないかどうかです (init(8) 参照)。 カーネルのインストール時には、カーネルから immutable (変更不可) フラグを外して、 新しい方に変更不可フラグを設定しようとします。セキュアレベル 1 以上では、システム内のどのファイルからも変更不可フラグを外せないため、 カーネルのインストールはセキュアレベル 0 以下で行わなければなりません。
新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 それは、FreeBSD のブートローダで起動したいカーネルを選択するだけです。 システムが 10 からカウントダウンしている時に、この機能が使えます。 Enter キー以外の任意のキーを押して、 unload と入力してから、 boot kernel.old か他の正常に起動するカーネルを入力してください。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。
問題のないカーネルで起動した後に あなたのコンフィグレー ションファイルを調べ、 再び構築を試みてください。 /var/log/messages ファイルにはすべての成功した 起動時のカーネルメッセージやその他の記録があり、これ は助けになる情報の一つでしょう。また、 dmesg(8) コマンドは現在の起動時のカーネルメッ セージを出力します。
Note: カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする 時に、 その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん。またできる限り早く動作しているカーネルを本来の kernelの位置に移動させてください。 そうしないと ps(1) のようなコマンドが正しく動きません。 make でインストールされたカーネルのファイルを (別のカーネルに戻すために) “アンロック” するための特別 のコマンドは
# chflags noschg /kernelです。これができないのなら、securelevel(8) を 0 より大きい値にしているのかもしれません。 /etc/rc.conf の kern_securelevel を -1 に変更して再起動してください。新し いカーネルに満足したら、前の設定に戻してよいでしょう。
また、 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように “ロック” するには 次のようにします。
# chflags schg /kernel
システムユーティリティと異る バージョンのカーネルをインストールした場合、例えば 4.x のカーネルを 3.x システム上にインストールするような場合、 ps(1) や vmstat(8) のような多くの システムステータスコマンドは動かなくなります。 libkvm を再コンパイルして、 これらのユーティリティを作りなおす必要があります。 これは、カーネルとそれ以外で異なるバージョンを組み合わせて オペレーティングシステムを使用することが推奨されない理由の 一つとなっています。
FreeBSD は古いインパクトプリンタから最新のレーザープリンタまで幅広いプリンタが利用でき、 実行しているアプリケーションから高品質な印刷出力が行えます。
FreeBSD はネットワーク上のプリンタサーバとして動作するように設定することもできます。 この機能は、他の FreeBSD コンピュータや、Windows や Mac OS ホストから印刷ジョブを受け取ることができます。 FreeBSD は印刷ジョブを 1 つずつ処理することを保証します。 また、どのユーザやマシンが最も多く印刷しているかの統計を取り、 どの印刷物が誰の物か表示する “バナー” ページの作成などを行うことができます。
この章を読めば以下のことがわかります。
FreeBSD プリントスプーラの設定方法。
入力ドキュメントをプリンタが扱える印刷フォーマットへ変換するなどといった、 特別な印刷ジョブを別に取り扱うための印刷フィルタのインストール方法。
印刷物へのヘッダやバナーの適用方法。
他のコンピュータに接続されたプリンタへの印刷方法。
ネットワークに直接接続されたプリンタへの印刷方法。
印刷ジョブの上限サイズや特定のユーザからの印刷拒否といった、 プリンタの制限の制御方法。
印刷の統計とプリンタの使用状況の取得方法。
印刷問題のトラブルシューティング方法。
この章を読み始める前に以下を済ませておいてください。
新しいカーネルの設定とインストール方法について理解すること (Chapter 8)。
FreeBSD でプリンタを使うために、それらを LPD スプーリングシステムとしても知られる Berkeley ラインプリンタスプーリングシステムで動作するように設定する必要があります。 これは FreeBSD での標準的なプリンタ制御システムです。 この章では、しばしば単に LPD と呼ばれる、 LPD スプーリングシステムを紹介し、 その設定方法について説明します。
あなたがすでに LPD やその他のプリンタスプーリングシステムに詳しいのなら、 スプーリングシステムの設定 まで読み飛ばしてもかまいません。
LPD はホストのプリンタに関するあらゆることを制御します。 ここで言う制御としては、次のことがあげられます。
ホストに接続されたプリンタ、 あるいはネットワーク上の他ホストに接続されたプリンタに対するアクセス制御を行ないます。
ファイルをプリントする要求に対して許可を与えます。 この要求は特にジョブと呼ばれています。
各々のプリンタのキューを管理することにより、 複数のユーザがあるプリンタに対して同時にアクセスすることを防ぎます。
ヘッダページ (バナーまたは バーストページとしても知られています) をプリントすることができます。 これにより、 プリントアウトの山の中から自分がプリントしたジョブを見つけやすくなります。
シリアルポートに接続したプリンタ用に通信パラメータを管理します。
ネットワーク経由で他のホスト上の LPD スプーラにジョブを送ることができます。
様々なプリンタ言語やプリンタの能力に応じてジョブの形式を整えるため、 特別なフィルタを起動することができます。
プリンタの使用に対して課金を行なうことができます。
設定ファイル (/etc/printcap) を通して、専用のフィルタプログラムを用いることにより、 多種多様なプリンタ機器に対して、上述の機能の全部または一部を LPD システムに行なわせることができます。
あなたのシステムを利用するのがあなた一人だけだとしたら、 アクセス制御もヘッダページもプリンタ利用に対する課金も必要ないのに、 なぜわざわざスプーラに煩わされなければならないのか疑問に思うかも知れません。 プリンタに対する直接アクセスを許可することもできるのですが、 とにかくスプーラを使用するべきです。その理由は、
LPD はジョブをバックグラウンドで処理します。 データがプリンタに送信されるまで待つ必要がなくなります。
LPD ではジョブをフィルタを通してプリントすることが簡単にできます。 これにより、印刷物のヘッダに時刻や日付を入れたり、 特別なファイル形式 (TeX の DVI ファイルなど) をプリンタが処理できる形式に変更することができ、 これらの作業を手動で行なう必要がなくなります。
プリント処理を行なうフリー、 または商用のプログラムのほとんどは、 システムのスプーラとやりとりするように作られています。 スプーリングシステムをセットアップすることで、 今後加えるかもしれない、あるいは、 すでに持っている別のソフトウェアをより簡単にサポートすることができるでしょう。
LPD スプーリングシステムを用いてプリンタを使用するためには、 プリンタ機器と LPD 用ソフトウェアの両方を準備する必要があります。 本文書では次の二段階のレベルに分けて説明をします。
プリンタを接続する方法、 プリンタにどのように通信するかを LPD に指示する方法や、 プレインテキストをプリンタで印字する方法については、 プリンタの簡単な設定をご覧ください。
様々な形式のファイルを印字する方法、 ヘッダページを印字する方法、 ネットワーク経由でプリンタに印字する方法、 プリンタを制御する方法、 プリンタの使用に対する課金を行なう方法についてはプリンタ設定上級編をご覧ください。
この節では、プリンタ機器やプリンタを使用するための LPD 用ソフトウェアを設定する方法について述べます。 この節の概要は次のとおりです。
プリンタ機器の設定では、 プリンタをコンピュータに接続するためのヒントがいくつか書かれています。
ソフトウェアの設定では、 LPD のスプーラ設定ファイル (/etc/printcap) の設定方法について書かれています。
データをプリンタに送るためにシリアルまたはパラレルインタフェースではなく、 ネットワークプロトコルを使用する場合は、 ネットワークにおけるデータストリームインタフェースを持つプリンタをご覧ください。
この節のタイトルは “プリンタ設定導入編” ですが、 実際の設定はかなり複雑です。 プリンタをコンピュータに接続し、 LPD スプーラを起動させることは一番困難な作業です。 ヘッダページを出力させたり課金したりするオプションの設定は、 一度プリンタがうまく動くようになればとても簡単です。
この節では、プリンタに PC を接続するための様々な方法について説明しています。 ここでは、ポートやケーブルの種類、 FreeBSD がプリンタとの通信に必要なカーネルコンフィグレーションについても言及しています。
もしプリンタが既に接続されていて、 他のオペレーティングシステム上でプリンタからの印字に成功している場合は、 ソフトウェアの設定まで読み飛ばすことが多分できるでしょう。
最近の PC 用のプリンタほとんどには次のインタフェースの一つもしくは両方がついています。
シリアルインタフェースでは、 プリンタにデータを送信するためにコンピュータにあるシリアルポートが使用されます。 シリアルインタフェースはコンピュータ業界で共通して使用されています。 そのケーブルは容易に手に入りますし、簡単に自作することもできます。 シリアルインタフェースの場合は時々、 特別なケーブルや何か複雑な通信方式選択の設定が必要になることがあります。
パラレルインタフェースではプリンタにデータを送信するために、 コンピュータにあるパラレルポートを使用します。 パラレルインタフェースは PC 業界では良く使われます。 ケーブルの入手は容易ですが、 自作するのはシリアルよりも困難です。 パラレルインタフェースには通常、通信方式の選択はなく、 設定は極めて単純です。
パラレルインタフェースは “セントロニクス” インタフェースとして知られています。 これは、プリンタ用のコネクタタイプとして採用された後に名付けられました。
シリアルインタフェースはパラレルインタフェースよりも普通はデータの伝送速度が遅くなります。 パラレルインタフェースでは、通常、 (コンピュータからプリンタへの) 単方向通信のみを行なうのに対して、 シリアルインタフェースは双方向通信を行ないます。 FreeBSD でも IEEE1284 準拠のケーブルを使えば、 最近のパラレルポート (EPP や ECP) とプリンタの多くで双方向通信を行なうことができます。
通常、プリンタで双方向通信が必要となるのは、プリンタが PostScript 言語に対応しているときだけです。 PostScript プリンタからの通信は非常に多くなることがあります。 PostScript ジョブは、実際にはプリンタに送信されるプログラムです。 印字作業を行う必要は必ずしありませんし、 プログラムの結果を直接コンピュータに返してもよいのです。 PostScript プリンタでは双方向通信を使って PostScript プログラムのエラーや紙づまりといった問題をコンピュータに報告します。 ユーザはそれらの情報を知りたいと思うかも知れません。 また、PostScript プリンタで課金作業をもっとも効率よく行なうためには、 双方向通信が必要となります。 この方法ではまず、プリンタの現在のページカウント (起動してから今まで何枚の紙を印字したか) の情報を得ます。 次に、ユーザのジョブを実行し、終了後、再びページカウントを得ます。 この二つの数を差によって、 課金対象となる紙の枚数を知ることができるのです。
プリンタをパラレルインタフェースを使って接続する場合は、 セントロニクスケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタやコンピュータに付属する説明書に書かれているはずです。
その際、 どのパラレルポートを使用したかを覚えておいてください。 FreeBSD では最初のポートは /dev/ppc0、 二番目 /dev/ppc1 であり、 三番目以降も同様に続きます。 プリンタのデバイス名にも同じ形式が使われており、 最初のパラレルポートに接続されたプリンタは /dev/lpt0 などとなります。
シリアルインタフェースを使ってプリンタを使う場合は、 適切なシリアルケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタ、コンピュータ、あるいは両方に付属する説 明書に書かれているはずです。
“適切なシリアルケーブル” が良くわからないときは、 次のどれかを試してみてください。
モデム 用ケーブルでは、 それぞれのピンは他方のコネクタの対応するピンと線でつながっています。 このタイプのケーブルは “DTE-DCE” 間ケーブルとしても知られています (訳注: 日本ではストレートケーブルという名前で売られています)。
ヌルモデム 用ケーブルでは、 あるピンは対応するピンとを接続していますが、 あるピン (たとえば、データ送信用とデータ受信用のピン) が交差して接続したり、 いくつかのピンは内部で短絡していたりします。 このタイプのケーブルは、 “DTE-DTE” 間ケーブルと呼ばれています (訳注: 日本ではクロスケーブルという名前で売られています)。
A シリアルプリンタ用ケーブルは、 ある特定のプリンタで必要とされるものです。 ヌルモデムケーブルと似ていますが、 内部で短絡させる代わりに、 ある信号を他方側に送るために使用しています。
この他に、 プリンタ用の通信パラメータを設定する必要があります。 通常、プリンタのフロントパネルや DIP スイッチによって制御します。 コンピュータとプリンタの双方で設定できる最高の通信速度 [bps] (ビット/秒、 ボーレートと示されているときもある) を選んでください。そして、データビット (7 または 8)、 パリティ (偶/奇/なし)、ストップビット (1 または 2) を選んでください。 そして、フローコントロールの有無 (制御なし、または XON/XOFF (“イン・バンド” または “ソフトウェア” フローコントロールとも呼ばれる)) を選びます。 以下に続くソフトウェアの設定のために、 ここでの設定を覚えておいてください。
本節では FreeBSD の LPD スプーリングシステムで印字をおこなうために 必要となるソフトウェアの設定について説明しています。
本節の概要は次のようになります。
プリンタで使用するポートのために、必要があれば、 カーネルの書き変えをおこないます。「カーネルの変更」で、 このためにしなくてはならないことを説明しています。
パラレルポートを使用している場合は、 パラレルポートのための通信モードを設定します。 詳細は、 「 パラレルポートの通信モードを設定する」 で説明しています。
オペレーティングシステムからプリンタにデータが送ら れているかをテストします。「プリンタとの通信状況を調べる」で、 どのようにテストするかの提案をいくつかおこなっています。
ファイル/etc/printcapを変更し、 LPD の設定をおこないます。 この節で、どのように変更するかを説明しています。
オペレーティングシステムのカーネルの コンパイルをおこなうことによって、 指定されたデバイスが機能するようになります。シリアル、 または、パラレルインタフェースをプリンタで使用する場合、 必要なデバイスがこの指定の中に含まれていなくてはなりません。 したがって、 必要なデバイスがカーネルに組み込まれていない場合、 追加のシリアル、または、パラレルポートをサポートするために、 カーネルの再コンパイルが必要となるかもしれません。
シリアルポートが現在使用しているカーネルで サポートされているかどうかを調べるためには、 次のように入力します。
# 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カーネルのコンフィグレーション」の節をご覧く ださい。パラレルポートをサポートさせる場合も、その節と、 あわせて、 この節に続く節もご覧ください。
Note: FreeBSD 5.0 には、必要に応じてデバイスノードを自動的に作成する devfs が採用されています。 devfs を有効にした FreeBSD を実行しているのなら、 この節を読み飛ばしても問題ありません。
カーネルがシリアル、または、パラレルポートを通じての通信をサポートしていたとしても、 システム上で動いているプログラムがデータの送受信をおこなうための ソフトウェアインタフェースがさらに必要になります。 そのインタフェースは、/dev ディレクトリにあるエントリに相当します。
/dev エントリにポートを加えるために
su(1) コマンドで root になります。 パスワードを聞かれたら、root 用のパスワードを入力します。
/dev ディレクトリに移動します。
# cd /dev
次のように入力します。
# ./MAKEDEV port
ここで、port は作成するポート名です。 1 番目のパラレルポートに接続されているプリンタには lpt0, 2 番目のパラレルポートに接続されているプリンタには lpt1 を使い、以下同様にしてください。 1 番目のシリアルポートには ttyd0, 2 番目のシリアルポートには ttyd1 を使い、 以下同様にしてください。
次を入力し、デバイスのエントリができたか確認します。
# ls -l port
パラレルインタフェースを使用している場合、FreeBSD では、 割り込み駆動型にするか、 プリンタとの通信の状況をカーネルに監視させるかのいずれかを選択できます。 FreeBSD 4.X と 5.X の汎用プリンタデバイスドライバ (lpt(4)) は ppbus(4) システムを利用しています。 これは ppc(4) ドライバを使ってパラレルポートのチップセットを制御します。
GENERIC カーネルでは割り込み駆動方式がデフォルトになっています。 この方式では、 オペレーティングシステムはプリンタがデータを受け付けられるかどうかを調べるために、 IRQ ラインを一つ使用します。
監視方式では、 オペレーティングシステムにプリンタがもっとデータを受け付けられるかどうかを繰り返し尋ねるように指示します。 そして、受け付けるという応答を受けたとき、 カーネルはさらなるデータを送信します。
割り込み駆動方式は一般的にいくらか高速になりますが、貴重な IRQ ラインを一つ消費します。 HP の新しいプリンタの一部には、明らかに何かしらのタイミングの問題 (まだ正確にはわかっていません) で割り込みモードでは正常に動作しないものがあると言われています。 これらのプリンタにはポーリングモードが必要になります。 どちらかうまく機能する方を使ってください。 一部のプリンタはどちらの方式でも動作しますが、 割り込みモードでは苦痛を感じるほど低速です。
通信モードを設定するためには 2 つの方法があります。 1 つはカーネルを変更することで、もう一つは lptcontrol(8) プログラムを使用する方法です。
カーネルを設定することによって、 通信モードを変更する。
カーネルコンフィグレーションファイルを変更します。 ppc0 のエントリを探してください。 2 番目のパラレルポートを設定するときは、代わりに ppc1 を使います。 以下、3 番目のポートは ppc2 となっていきます。
割り込み駆動方式にする場合は、FreeBSD 4.X では irq 指定を追加します。
device ppc0 at isa? irq N
ここで、N はパラレルポート用の IRQ 番号です。
FreeBSD 5.X では、/boot/device.hints ファイルの以下の行を編集して、 N を適切な IRQ 番号に置き換えてください。
hint.ppc.0.irq="N"
カーネルの設定ファイルには ppc(4) ドライバも入れなければなりません。
device ppc
監視方式を使用する場合は、 irq を追加してはいけません。
FreeBSD 4.X では、カーネルコンフィグレーションファイルで以下の行を使用してください。
device ppc0 at isa?
FreeBSD 5.X では、/boot/device.hints ファイルの以下の行を削除するだけです。
hint.ppc.0.irq="N"
FreeBSD 5.X では、 場合によってはこれだけではポートをポーリングモードにするには十分ではありません。 多くの場合これは acpi(4) ドライバと併せて動作します。 これはデバイスのプローブとアタッチを行うので、 プリンタポートへのアクセスモードを制御できます。 問題を修正するために acpi(4) の設定を確認してください。
ファイルをセーブし、config プログラムを起動し、 カーネルの構築、インストールをおこないます。そして、 リブートしてください。詳細は、「 FreeBSDカーネルのコンフィグレーション」を参照 してください。
lptcontrol(8) で通信モードを設定する場合
lptN をイベント駆動方式に設定する場合は、 次のように入力します。
# lptcontrol -i -d /dev/lptN
lptN を監視方式に設定する場合は、次のように入力します。
# lptcontrol -p -d /dev/lptN
これらのコマンドを /etc/rc.local ファイルに追加 しておくと、システムをブートする度に通信モードを設定する ことができます。詳細については、 lptcontrol(8) をご覧ください。
スプーリングシステムの設定に進む前に、オペレーティング システムがプリンタにデータを送ることに成功しているかどうか を確かめるべきでしょう。これにより、印字がうまくいかないと き、プリンタとの通信が問題なのか、スプーリングシステムが問 題なのかを分けて調べることがかなり容易になります。
プリンタをテストするためには、 プリンタに何かのテキストを送 信してみます。送信した文字をすぐに印字してくれるプリンタに は、lptest(1) コマンドを使うと有用です。このコマンドは印 字可能な 96 文字の ASCII 文字すべてを 96 行生成します。
PostScript (または他の言語に対応した) プリンタの場合 は、もっと巧妙なテストが必要になります。次のような、簡単な PostScript プログラムを使えば十分でしょう。
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Is this thing working?) show showpage
上の PostScript コードはファイルに保存し、 以降の節で例として示されているように利用することができます。
Note: このドキュメントでプリンタ用言語を参照するときは、 PostScript のような言語を仮定しており、Hewlett Packard の PCL は考慮していません。PCL は非常に機能的なの ですが、 プレインテキストにエスケープシーケンスを混ぜること ができます。PostScript ではプレインテキストを直接印字 することはできません。 このような種類のプリンタ言語に対しては、 特別な対応をおこなわなければなりません。
この節では、FreeBSD がパラレルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について説明し ています。
パラレルポートのプリンタをテストするために
su(1) コマンドで root になります。
プリンタにデータを送ります。
プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。
# lptest > /dev/lptN
ここで、