diff --git a/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
index 0497d22ac9..e2c29317e9 100644
--- a/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
@@ -1,634 +1,634 @@
参考図書
訳: &a.jp.nakai;, 1996 年 10 月 12 日.
FreeBSD オペレーティングシステムの個々の部分については
マニュアルページで定義のような説明がなされていますが,
それらにはどうやってその部分どうしをつなぎあわせて
オペレーティングシステム全体を円滑に動作させるかを
説明していないという欠点がよく指摘されます.
それを補うためには UNIX システム管理についてのよい本や,
すぐれた利用者向けのマニュアルが欠かせません.
-
+
FreeBSDのためだけの書籍 & 雑誌
非英語文化圏の 書籍 & 雑誌:
FreeBSD 入門與應用 (in Chinese).
FreeBSD入門キット 98版第二版. 宮嵜忠臣 著.
秀和システム. ISBN 4-87966-535-5 C3055 2900円.
FreeBSD入門キット AT互換機版 第二版. 宮嵜忠臣 著.
秀和システム. ISBN 4-87966-535-5 C3055 2900円.
ここまでできる FreeBSD パワーガイド.
霜山 滋 仲道 嘉夫 山中右次 著. 秀和システム.
ISBN 4-87966-637-8 2600円.
FreeBSD徹底入門 .
あさだたくや 天川修平 衛藤敏寿 浜田直樹 細川達己 三田吉郎 著.
翔泳社 .
ISBN 4-88135-473-6 3600円.
パーソナルUNIXスターターキットFreeBSD .
民田雅人 古場正行 増田佳泰 天池健 宮川晋 共著.
アスキー .
ISBN 4-7561-1733-3 3000円.
FreeBSD ハンドブック (日本語版).
アスキー .
ISBN 4-7561-1580-2 3800円.
FreeBSD mit Methode (ドイツ語版).
Computer und Literatur Verlag/Vertrieb Hanser 発行.
1998. ISBN 3-932311-31-0
FreeBSD インストール & 活用マニュアル ,
published by
毎日コミュニケーションズ .
英語の書籍 & 雑誌:
The Complete FreeBSD ,
published by
Walnut Creek CDROM .
-
+
利用者向けのガイド
Computer Systems Research Group, UC Berkeley.
4.4BSD User's Reference Manual .
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-075-9
Computer Systems Research Group, UC Berkeley.
4.4BSD User's Supplementary Documents .
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-076-7
UNIX in a Nutshell .
O'Reilly & Associates, Inc., 1990.
ISBN 093717520X
Mui, Linda.
What You Need To Know When You Can't Find Your UNIX
System Administrator .
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-104-6
Ohio State University has written
a
UNIX Introductory Course which is available online
in HTML and postscript format.
FreeBSD 友の会 jpman プロジェクト . FreeBSD User's
Reference Manual (日本語訳). 毎日コミュニケーションズ
, 1998. ISBN4-8399-0088-4 P3800E.
-
+
管理者向けのガイド
Albitz, Paul and Liu, Cricket. DNS and
BIND , 2nd Ed.
O'Reilly & Associates, Inc., 1997.
ISBN ISBN 1-56592-236-0
(訳注: 邦訳は以下のものが出版されています.
高田広章 / 小島育夫 監訳 , 小舘光正 訳.
DNS & BIND 改訂版 .
オライリー・ジャパン, 1998.
ISBN 4-900900-42-7)
Computer Systems Research Group, UC Berkeley.
4.4BSD System Manager's Manual .
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-080-5
Costales, Brian, et al.
Sendmail , 2nd Ed. O'Reilly &
Associates, Inc., 1997.
ISBN 1-56592-222-0
(訳注: 邦訳は以下のものが出版されています.
2分冊になっています.
原著の3章までが「システム管理」, 4章が「リファレンス」
に対応します.)
ただし2分冊となり,原著のリファレンスの部分に当たる Volume2
は 1998年3月の時点では出版されていません.
中村 素典 監訳, 鈴木 克彦 訳.
sendmail システム管理 (Volume1) .
オライリー・ジャパン, 1997.
ISBN 4-900900-40-0)
中村 素典 監訳, 鈴木 克彦 訳.
sendmail システム管理 (Volume2) .
オライリー・ジャパン, 1998.
ISBN 4-900900-41-9)
Frisch, Æleen. Essential System
Administration , 2nd Ed. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-127-5
(訳注: 邦訳は以下のものが出版されています.
谷川 哲司 監訳 黒岩 真吾 , 株式会社ユニテック
訳. UNIX システム管理入門 改訂版 .
オライリー・ジャパン, 1998.
ISBN 4-900900-14-1)
Hunt, Craig. TCP/IP Network Administration .
O'Reilly & Associates, Inc., 1992.
ISBN 0-937175-82-X
(訳注: 邦訳は以下のものが出版されています.
村井純 監訳.
TCP/IP ネットワーク管理 .
インターナショナル・トムソン・パブリッシング・ジャパン, 1994.
ISBN 4-900718-01-7)
Nemeth, Evi. UNIX System Administration
Handbook . 2nd Ed. Prentice Hall, 1995.
ISBN 0131510517
(訳注: 邦訳は以下のものが出版されています.
井上尚司監訳.
UNIX システム管理入門 .
ソフトバンク, 1992.
ISBN 4-89052-362-6
原本は第2版だが, 訳出は第1版のみ)
Stern, Hal Managing NFS and NIS
O'Reilly & Associates, Inc., 1991.
ISBN 0-937175-75-7
FreeBSD 友の会 jpman プロジェクト . FreeBSD System
Administrator's Manual (日本語訳).
毎日コミュニケーションズ ,
1998. ISBN4-8399-0109-0 P3300E.
プログラマ向けのガイド
Asente, Paul. X Window System
Toolkit . Digital Press.
ISBN 1-55558-051-3
Computer Systems Research Group, UC Berkeley.
4.4BSD Programmer's Reference Manual .
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-078-3
Computer Systems Research Group, UC Berkeley.
4.4BSD Programmer's Supplementary Documents .
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-079-1
Harbison, Samuel P. and Steele, Guy
L. Jr. C: A Reference Manual . 4rd ed. Prentice
Hall, 1995. ISBN 0-13-326224-3
(訳注: 邦訳は以下のものが出版されています.
斎藤信男監訳.
新・詳説C言語リファレンス
[H&Sリファレンス] .
ソフトバンク, 1994.
ISBN 4-89052-506-8
原本は第4版だが, 訳出は第3版のみ.)
Kernighan, Brian and Dennis M. Ritchie.
The C Programming Language. .
PTR Prentice Hall, 1988.
ISBN 0-13-110362-9
(訳注: 邦訳は以下のものが出版されています.
石田晴久 訳.
プログラミング言語 C 第2版(訳書訂正版)
共立出版, 1989.
ISBN 4-320-02692-6)
Lehey, Greg.
Porting UNIX Software .
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-126-7
Plauger, P. J. The Standard C
Library . Prentice Hall, 1992.
ISBN 0-13-131509-9
(訳注: 邦訳は以下のものが出版されています.
福富寛 / 門倉明彦 / 清水恵介 訳.
標準 C ライブラリ ANSI/ISO/JIS C規格 .
トッパン, 1995.
ISBN 4-8101-8541-9)
Stevens, W. Richard. Advanced
Programming in the UNIX Environment .
Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7
(訳注: 邦訳は以下のものが出版されています.
大木敦雄 訳.
詳解 UNIX プログラミング . トッパン, 1994.
ISBN 4-89052-524-6)
Stevens, W. Richard. UNIX Network
Programming . 2nd Ed. PTR Prentice Hall, 1998.
ISBN 0-13-949876-1
(訳注:
第 1 版の邦訳は以下のものが出版されています.
篠田陽一 訳.
UNIX ネットワークプログラミング .
トッパン,1992.
ISBN 4-8101-8509-5)
Wells, Bill. “Writing Serial Drivers for UNIX”.
Dr. Dobb's Journal . 19(15), December
1994. pp68-71, 97-99.
オペレーティングシステム内部
Andleigh, Prabhat K.
UNIX System Architecture .
Prentice-Hall, Inc., 1990.
ISBN 0-13-949843-5
Jolitz, William. “Porting UNIX to the
386”. Dr. Dobb's Journal . January
1991-July 1992.
Leffler, Samuel J., Marshall Kirk McKusick,
Michael J Karels and John Quarterman The Design and
Implementation of the 4.3BSD UNIX Operating
System . Reading, Mass. : Addison-Wesley, 1989.
ISBN 0-201-06196-1
(訳注: 邦訳は以下のものが出版されています.
中村明 / 相田仁 / 計宇生 / 小池汎平 訳.
UNIX 4.3BSDの設計と実装 . 丸善, 1991.
ISBN 4-621-03607-6)
Leffler, Samuel J., Marshall Kirk McKusick,
The Design and Implementation of the 4.3BSD
UNIX Operating System: Answer Book .
Reading, Mass. : Addison-Wesley, 1991.
ISBN 0-201-54629-9
(訳注: 邦訳は以下のものが出版されています.
相田仁 / 計宇生 / 小池汎平 訳.
UNIX 4.3BSDの設計と実装 .
アンサーブック, トッパン, 1991.
ISBN 4-8101-8039-5)
McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
and John Quarterman. The Design and
Implementation of the 4.4BSD Operating
System . Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-54979-4
Stevens, W. Richard. TCP/IP Illustrated,
Volume 1: The Protocols .
Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63346-9
Schimmel, Curt.
Unix Systems for Modern Architectures .
Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8
Stevens, W. Richard. TCP/IP Illustrated,
Volume 3: TCP for Transactions, HTTP, NNTP
and the UNIX Domain Protocols .
Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3
Vahalia, Uresh.
UNIX Internals -- The New Frontiers .
Prentice Hall, 1996.
ISBN 0-13-101908-2
Wright, Gary R. and W. Richard Stevens.
TCP/IP Illustrated, Volume 2:
The Implementation .
Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-63354-X
セキュリティの参考資料
Cheswick, William R. and Steven M. Bellovin.
Firewalls and Internet Security:
Repelling the Wily Hacker .
Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-63357-4
(訳注: 邦訳は以下のものが出版されています.
川副博 監訳. ファイアウォール .
ソフトバンク, 1995.
ISBN 4-89052-672-2)
Garfinkel, Simson and Gene Spafford.
Practical UNIX Security . 2nd Ed.
O'Reilly & Associates, Inc., 1996.
ISBN 1-56592-148-8
(訳注: 邦訳は以下のものが出版されています.
山口英監訳. UNIX セキュリティ .
アスキー, 1993.
ISBN 4-7561-0274-3
原本は第2版だが, 訳出は第1版のみ)
Garfinkel, Simson.
PGP Pretty Good Privacy
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-098-8
-
+
ハードウェアの参考資料
Anderson, Don and Tom Shanley.
Pentium Processor System Architecture .
2nd Ed. Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-40992-5
Ferraro, Richard F. Programmer's Guide
to the EGA, VGA, and Super VGA Cards .
3rd ed. Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-62490-7
Intel Corporation は, 自社の CPU
やチップセットに関する文書を自社の 開発者向け Web
サイト で公開しています. 文書のフォーマットは通常
PDF です.
Shanley, Tom. 80486 System
Architecture . 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
ISBN 0-201-40994-1
Shanley, Tom. ISA System
Architecture . 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
ISBN 0-201-40996-8
Shanley, Tom. PCI System
Architecture . 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
ISBN 0-201-40993-3
Van Gilluwe, Frank. The Undocumented PC .
Reading, Mass: Addison-Wesley Pub. Co., 1994.
ISBN 0-201-62277-7
-
+
UNIX の歴史
Lion, John Lion's Commentary on UNIX, 6th Ed.
With Source Code .
ITP Media Group, 1996.
ISBN 1573980137
Raymond, Eric s. The New Hacker's Dictionary,
3rd edition . MIT Press, 1996.
ISBN 0-262-68092-0
Also known as the
Jargon File
Saulus, Peter H. A quarter century of UNIX .
Addison-Wesley Publishing Company, Inc., 1994.
ISBN 0-201-54777-5
Simon Garfinkel, Daniel Weise, Steven Strassmann.
The UNIX-HATERS Handbook .
IDG Books Worldwide, Inc., 1994.
ISBN 1-56884-203-1
Don Libes, Sandy Ressler Life with UNIX
— special
edition. Prentice-Hall, Inc., 1989.
ISBN 0-13-536657-7
(訳注: 邦訳は以下のものが出版されています.
坂本文 監訳. Life with UNIX .
アスキー, 1990.
ISBN 4-7561-0783-4
邦訳がSpecial 版の訳出か否かは不明)
BSD 系 OS の系譜図 . 1997年.
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree
または, FreeBSD-current マシンの
ローカルファイル .
BSD リリース告知コレクション . 1997.
http://www.de.FreeBSD.ORG/de/ftp/releases/
Networked Computer Science Technical Reports Library
.
http://www.ncstrl.org/
Computer Systems Research group (CSRG) からの古い
BSD リリース集
http://www.mckusick.com/csrg/ :
この 4 枚 CD セットには, 1BSD から 4.4BSD までと 4.4BSD-Lite2
が含まれます (残念ながら 2.11BSD は含まれていません).
また 4 枚目の CD には, 最終ソースおよび SCCS
ファイルが含まれています.
-
+
雑誌とジャーナル
The C/C++ Users Journal . R&D Publications
Inc. ISSN 1075-2838
Sys Admin — The Journal for UNIX System
Administrators
Miller Freeman, Inc., ISSN 1061-2688
diff --git a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml
index 41e9544592..5aa0a13413 100644
--- a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml
@@ -1,3920 +1,3800 @@
- 開発の最前線: FreeBSD-current と FreeBSD-stable
+ 開発の最前線
+
+ 再構成, 再編成, 一部更新: &a.jim;
+ March 2000. 原作: &a.jkh;, &a.phk;, &a.jdp;, &a.nik;,
+ およびたくさんのフィードバック.
+
+
+ 概要
あるリリースから次のリリースまでの期間にも, FreeBSD の開発は
休みなく続けられています.
この開発の最前線に興味を持っている人のために,
手元のシステムを最新の開発ツリーに同期させておくための,
とても使いやすい仕掛けが何種類も用意されています. 注意:
開発の最前線は, 誰でもが扱えるという性質のものではありません!
もしもあなたが, 開発途中のシステムを追いかけようか,
それともリリース
バージョンのどれかを使い続けようかと迷っているのなら,
きっとこの章が参考になるでしょう.
+
-
- 最新のFreeBSDを追いかける
+
+ -CURRENT vs. -STABLE
- 原作: &a.jkh;.
+ FreeBSD には二つの開発ブランチがあります. -CURRENT と -STABLE です.
+ この章ではそれぞれについて少しだけ説明し, どのようにしてあなたの
+ システムを対応するツリーに対して常に最新の状態にに保つかについて
+ 記述します. まず -CURRENT を論じ, ついで -STABLE を論じます.
訳: &a.hanai; 6 November 1996.
-
- FreeBSD-current ってなに?
+
+ 最新のFreeBSDを追いかける
+
+ これを読むならば, 心に止めておいて欲しいことがあります.
+ -CURRENT とは FreeBSD の開発における “切断面”
+ であり, 故にあなたが FreeBSD を使い始めたばかりなら
+ あなたはこれがすることについて十分検討を重ねた方がいいでしょう.
- FreeBSD-current とは,文字通りに,日々変更されている
+
+ FreeBSD-current ってなに?
+
+ FreeBSD-CURRENT とは, 文字通りに, 日々変更されている
FreeBSD のソース
- のスナップショット以外の何ものでもありません.
+ のスナップショット以外の何ものでもありません.
中には現在開発途上のソフトウェア, 実験的な変更,
あるいは過渡的な機能などが含まれています. また,
この中に入っている機能がすべて次の公式リリースに
- 入るとはかぎりません. FreeBSD-current
+ 入るとはかぎりません. FreeBSD-CURRENT
をソースからほとんど毎日コンパイルしている人はたくさん
- いますが, 時期によっては FreeBSD-current
+ いますが, 時期によっては FreeBSD-CURRENT
はコンパイルさえできない状態になっていることもあります.
これらの問題は一般的には可能な限り素早く解決されますが,
- FreeBSD-current のソースが不幸をもたらすか, それとも非常に
+ FreeBSD-CURRENT のソースが不幸をもたらすか, それとも非常に
素晴らしい機能をもたらすかというのは文字通り,
ある与えられた 24 時間の間
のどの部分であなたがソースを手に入れたか,
による場合もあります.
-
+
-
- 誰が FreeBSD-current を必要としてるの?
+
+ 誰が FreeBSD-current を必要としてるの?
- FreeBSD-current は,
+ FreeBSD-CURRENT は,
主に次の三つの重要なグループを対象としています.
ソースツリーのある部分に関して活発に作業している
FreeBSD グループのメンバー. 彼らにとっては
“最新のもの” にしておくのが
- 絶対に必要なことなのです.
+ 絶対に必要なことなのです.
活発にテストをする FreeBSD グループのメンバー. 彼らは,
- FreeBSD-current を “健全である”
+ FreeBSD-CURRENT を “健全である”
ことを出来るだけ確認するために種々の問題と戦うのに
時間を費やすのを厭わない人々です. 彼らはまた,
様々な変更に関する提案や FreeBSD
の大まかな方向付けを行ないたいと思っている
人々でもあります.
単に, 様々な事に目を向け, 参考のために
- (例えば,動かすためではなく 読むため
+ (例えば, 動かすためではなく 読むため
に) 最新のソースを使いたいと思っている FreeBSD
(または他の) グループのまわりにいるメンバー.
これらの人々はまた,
時々コメントやコードを寄稿してくれます.
-
+
-
- FreeBSD-current
+
+ FreeBSD-CURRENT
に期待してはいけない ことは?
なにか新しくカッコイイモノがあると聞き, 自分の周囲では
一番にそれを持ちたいがためにリリース前のコードの断片を
追いかけること.
バグを修正するための素早い方法.
我々によって “公式にサポートされている”
- こと. 私たちは 3 つの “公式な” FreeBSD-current
+ こと. 私たちは 3 つの “公式な” FreeBSD-CURRENT
のグループの一つに実際に属する
人々を助けるのにベストを尽くしますが,
技術的なサポートを行なうには 単に「時間が足りない」のです.
これは我々が外の人を助けるの好まない,
ケチで意地悪い人間だと いうことではなく (もしそうなら
FreeBSD なんかやっていません), 文字通り我々は一日に 400
ものメッセージに答え かつ FreeBSD
の作業をすることなど出来ない! ということなのです. もし,
たくさんの質問に答えるか, それとも FreeBSD
を良くする作業を続けるかという選択が与えられた場合,
あなた方のほとんどは後者を支持する,
と私は確信しています.
-
-
-
- FreeBSD-current を使う
+
+
+ FreeBSD-CURRENT を使う
+
&a.current;と&a.cvsall;に加わって下さい.
これは単に良い考えであるというだけでなく,
必須の ことなのです. もし
FreeBSD-current
メーリングリストに入っていなければ,
様々な人がシステムの現在の状態について
述べているコメントを決して見ることはありませんし,
従って他の人が既に見つけて解決している多くの問題に戸惑っ
てあきらめてしまうでしょう. さらに言うと,
システムを正常に保つための
重要な情報を見逃してしまう可能性もあります.
&a.cvsall; メーリングリストでは,
それぞれの変更についての commit
ログを見ることができますし,
それに関して起こり得る副作用の情報を得ることができ,
もう一つの加わるに値するメーリングリストです.
これらのメーリングリストに入るには, &a.majordomo;
へ
subscribe freebsd-current
subscribe cvs-all
と書いたメールを送って下さい. オプションとして本文に
help と書けば, Majordomo
はあなたへ我々がサポ ートする様々なメーリングリストに参加
/ 脱退する方法に関する詳しい ヘルプを送ります.
ftp.FreeBSD.org
からのソースの入手. 以下の3つの方法で行なうこと
が出来ます.
下に述べられている CTM を用いる.
均一なレートの, 良質の TCP/IP
接続を持っていない人には,
これが一番いい方法でしょう.
cvsup を この supfile
を用いて使用する. これは 2 番目に推薦される方法です.
なぜなら, cvsup によって一度全体を入手し,
後は変更されたところだけを入手することが
出来るからです.
たくさんの人が自動的にソースを最新のもに保つために
cvsup を cron から起動しています.
これを行なうための非常に簡単な方法は, 単に
&prompt.root; pkg_add -f \
ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
とタイプすることです.
ftp を使う. FreeBSD-current
のソースツリーは常に
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/
に “公開” されています.
我々はまた全体を compress/tar して入手できる
wu-ftpd を使っています. 例えば,
usr.bin/lex
があったとすると,
ftp> cd usr.bin
ftp> get lex.tar
とすることにより, ディレクトリ全体(この場合,
usr.bin/lex以下全体) を tar
ファイルとして入手することができます.
以上のことをまとめると,
必要に応じて迅速なアクセスをする必要があり,
接続のバンド幅が問題ではなければ cvsup
か ftp を使いましょう. そうではなければ
CTM を使いましょう.
-
-
もしソースを,
眺めるだけでなく走らせるために入手しているのであれば,
一部だけ選ぶのではなく, current
の全体 を手に入れてください. なぜなら,
ソースの様々な部分が他の部分の更新に依存しており,
一部のみをコンパイルしようとすると,
ほぼ間違いなくトラブルを起こすからです.
-
-
current をコンパイルする前に
/usr/src にある Makefile
をよく読んでください. アップグレードの処理の一部として,
少なくとも一回は最初に make
world を行なうべきでしょう. &a.current; を読めば,
次のリリースへ向けて, 時々必要になる
他のブートストラップの方法に関して
常に最新情報を得ることが出来ます.
- アクティブになって下さい! もし FreeBSD-current
+ アクティブになって下さい! もし FreeBSD-CURRENT
を走らせているなら我々はそれに関するコメント,
特に拡張やバグ潰しに関する提案, を欲しています.
コードを伴う提案はもっとも歓迎されるものです!
+
-
-
+
FreeBSD の安定状態の持続
- 原作: &a.jkh;.
+ あなたが FreeBSD をプロダクション環境下で使っていて
+ -CURRENT 系列からの修正の最新版を得ていることを確実にしたいなら
+ -STABLE を使っていた方がいいでしょう. これは新しいリリースが
+ まとめられた時 -RELEASE がこれから分岐するツリーです.
+ たとえば, あなたが 3.4-RELEASE のコピーを持っていたとして,
+ それは単に CD-ROM にまとめられた -STABLE 系列の
+ “snapshot” に過ぎません. -RELEASE 以降に
+ -STABLE にマージされた差分を入手するには -STABLE 系列を
+ “追跡”する必要があります.
訳: &a.jp.iwasaki;.
-
- FreeBSD-stable ってなに?
+
+ FreeBSD-STABLE ってなに?
- FreeBSD-stable は,
+ FreeBSD-STABLE は,
次の本流のリリースを目指した新機能をあまり採り入
れない保守的な変更のための開発の支流です.
実験的またはテスト未完の変更はこの支流には取り入れられません
( 最新の FreeBSD を追いかける
参照).
-
+
-
- 誰が FreeBSD-stable を必要としているの?
+
+ 誰が FreeBSD-STABLE を必要としているの?
もしあなたが仕事で使用しているとか, なによりも FreeBSD
システムの安定性を最重要視するなら,
stable を追いかけることを考えるべきで
しょう. stable
の支流は前のリリースに関して効果的にバグフィックスされた
流れであるため, 最新のリリース (
&rel.current;-RELEASE 執筆時点)
をインストールしているのであれば, 特にそうです.
stable
ツリーが常に完全に互換性があり安定するように努力し
ていますが, たまに間違いがあることに注意してください (結局,
内容が吟味
されずに素早く送られた変更を含むソースがまだあるのです).
また, current を
stable
へ移行する前に完璧なテストフィックスに最善を尽くしますが,
私たちのテストはすべてのケースを十分に網羅して
いるとは限りません. もし何か stable
で不具合があるようでしたら,
私たちにすぐに 教えてください
(次の節参照).
-
+
-
- FreeBSD-stable を使う
+
+ FreeBSD-STABLE を使う
&a.stable; へ加わってください. このメーリングリスト
では, stable の構築に関連する事柄や,
その他の注意すべき点 に関する情報が流れています.
また開発者は議論の余地がある修正や変更を考えている場合に,
このメーリングリストで公表し, 提案された変更に
関して問題が生じるかどうかを返答する機会を
ユーザに与えます.
また, &a.cvsall; メーリングリストでは,
それぞれの変更がなされると
起こりうる副作用に関するすべての適切な情報と一緒に commit
log を読むことができます. subscribe
しておきたいもう一つのメーリングリストです.
メーリングリストに参加するには, &a.majordomo
へメッセージの本文に
次のように書いたメールを送ってください:
subscribe freebsd-stable
subscribe cvs-all
オプションとして本文に `help' と書けば, Majordomo
は私たちがサポートする様々なメーリングリストに参加 /
脱退する方法に関する詳しいヘルプを送付します.
- もし, あなたが新しいシステムを可能な限り -stable
- に近いものにインストールしようとする場合には,
+ もし, あなたが新しいシステムをインストールしようとしていて
+ それを可能な限り安定なものにしておきたいなら,
最新のブランチの snapshot を
- ftp://releng3.freebsd.org/pub/FreeBSD
+ url="ftp://releng4.freebsd.org/pub/FreeBSD">
+ ftp://releng4.freebsd.org/pub/FreeBSD
から取得し, これを一般のリリースのものと同様に
インストールしてください.
もし, 既に FreeBSD の以前のリリースが動いている場合で,
これをソースからアップグレードしようとするならば, ftp.FreeBSD.org より簡単に
これを行う事が出来ます. これには次の 3 つの方法があります.
CTM
機能を使用する. 転送レートが安定している TCP/IP
接続でない場合は, この方法が適しています.
cvsup を
この supfile を用いて使用する.
一度コレクション全体を入手してしまえば,
前回からの変更部分だけですむので, 2
番目に推奨される方法です.
多くの人が cron から cvsup を実行し,
自動的にソースコードを最新の状態に保っています.
これを簡単に扱うには次のようにタイプしてください.
&prompt.root; pkg_add -f \
ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
- ftp を使用する. FreeBSD-stable
+ ftp を使用する. FreeBSD-STABLE
用のソースツリーは
常に次のところで“公開”されています:
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/
私たちはまた, tar/compress
でツリー全体を入手できる wu-ftpd
を使用しています. 例えば :
usr.bin/lex
に対して:
ftp> cd usr.bin
ftp> get lex.tar
とすることにより, ディレクトリ全体を tar
ファイルとして入手することができます.
基本的には,
ソースに迅速でオンデマンドなアクセスが必要で,
接続のバンド幅が問題でなければ, cvsup
か ftp を使いましょう. そうで
ない場合は CTM
を使いましょう.
stable をコンパイルする前に,
/usr/src にある Makefile をよ
く読んでください.
少なくとも一回はアップグレードの処理の一部として最初に
make world
を実行するべきでしょう. &a.stable; を読めば,
次のリリースに移行する
に当たって時々必要となる既存システムからの
新システムの構築手順に
ついての最新情報が得られるでしょう.
+
- インターネットを通じたソースツリーの同期
-
- 原作: &a.jkh;.
+ あなたのソースを同期させる
訳: &a.jp.iwasaki;. 13 September 1997.
インターネット接続 (または電子メール) を使用して,
あなたの興味の対象によって FreeBSD
プロジェクトのソースのある一部分または全体の最新を
追いかける方法は色々あります.
私たちが提供している基本的なサービスは Anonymous CVS, CVSup と CTM
です:
Anonymous CVS と
CVSup は pull
同期モデルを採用しています.
CVSup の場合, ユーザ
(または cron スクリプト) が cvsup
起動し, どこかにある cvsupd
サーバとやりとりしてファイルを
最新状態にします.
届けられる更新情報はその時点の最新のものであり,
また必要な時にだけ取り寄せられます.
興味のある特定のファイルやディレクトリに
限定して更新することも簡単にできます.
クライアント側のソースツリーの状態・
設定ファイルの指定に従い, サーバによって更新情報が
素早く生成されます.
Anonymous CVS は,
このプログラムがリモートの CVS リポジトリから直接変更点を
pull できるようにした &man.cvs.1; への拡張であるという点で,
CVSup よりもずっと単純です.
CVSup
は効率の点ではるかにまさっていますが,
Anonymous CVS の方が簡単に利用できます.
一方, CTM
はあなたが持っているソースとマスタアーカイブ上に
あるそれとの対話的な比較をおこないませんし,
あるいは向こう側から変更点を pull したりもしません.
そのかわりに, 前回の実行時からの変更を認識するスクリプトが
マスタ CTM マシン上で一日に数回実行され,
すべての変更を compress して通し番号を振り,
さらに電子メールで転送できるようにエンコードします
(印字可能な ASCII
キャラクタのみです). 受信した後は,
これらの “CTM のデルタ” は自動
的にデコード, 検査してユーザのソースのコピーに変更を適用する
&man.ctm.rmail.1; によって処理可能となります.
この処理は CVSup や
Anonymous CVS よりずっと効率
的であり, pull モデルというよりむしろ
push モデルで
あるため, 私たちのサーバ資源の負荷は軽くなります.
もちろん他のトレードオフもあります. うっかりアーカイブ
の一部を消してしまっても, CVSup
は壊れた部分を検出して再構築してくれます.
CTM はこれをやってくれませんし,
Anonymous CVS
はおそらく他の何よりも深く混乱してしまうことが多いでしょう.
もしソースツリーの一部を消してしまったら, (最新の CVS
“ベースデルタ”から) 一からやり直し, CTM か anoncvs
を使って悪い部分を消去し, 再同期させることによって
すべてを再構築しなければなりません.
Anonymous CVS ,
CTM , CVSup
についての 詳しい情報については,
以下の節を参照してください:
Anonymous CVS
- 原作: &a.jkh;
訳: &a.jp.sugimura; . 19 July 1998.
導入
Anonymous CVS (もしくは, anoncvs
として知られています) は離れたところにある CVS
リポジトリと同期を取るために FreeBSD に付属している CVS
ユーティリティに含まれている機能です. 他にもありますが,
それは FreeBSD のユーザが, 特別な権限なしに FreeBSD
プロジェクトの公式な anoncvs サーバに読み取り専用で CVS
の操作をすることができるようにするためのものです.
それを使うには, 単に CVSROOT
環境変数を設定して適切な anoncvs サーバを指定し,
cvs login を使って
パスワード anoncvs
を入力して下さい.
そして次に, &man.cvs.1; コマンドを使うことで,
手元にあるリポジトリと同じようにアクセスでるようになります.
CVSup と
anoncvs
のサービスは本質的に同じ機能ではないか
ということも言われていますが,
ユーザが同期を取る方法を選ぶときに影響を与えるような
さまざまなトレードオフが存在します. 要約して言えば,
CVSup
はネットワーク資源の使い方においては非常に効率がよく,
またはるかに技術的に洗練されたものですが,
相当な手間がかかります. CVSup
を使うには,
特別なクライアントをまずインストールして設定しなくては 1bit
も取ってくることができず, またそのとき
CVSup では
collections
と呼んでいるかなり大きなかたまりだけからしか
取ってこれません.
それに対して anoncvs では,
CVS モジュールの名前を指定することで特定のプログラムの
(ls や grep のような)
個々のファイルから調べることができます. もちろん,
anoncvs は CVS
リポジトリの読み取り専用の操作に対してのみ適しているので,
もしあなたが FreeBSD プロジェクトのものと共有されたなにか
ローカルなリポジトリを作ってそこでの開発を
行おうというときには, CVSup
だけが唯一の手段となってしまいます.
Anonymous CVS を使う
&man.cvs.1; を設定して Anonymous CVS
リポジトリを使うには単に CVSROOT
環境変数を設定して FreeBSD プロジェクトの
anoncvs サーバを指定するだけのことです.
この文書を書いているときには,
次のサーバが利用できるようになっています.
USA :
:pserver:anoncvs@anoncvs.freebsd.org:/ncvs
(cvs login コマンドを使い,
プロンプトが表示されたらパスワード
anoncvs
を入力してください)
CVS はかつて存在した (もしくは,
時にはこれから存在するものも :)
ほとんどどんなバージョンの FreeBSD のソースを “check
out” することができますが, あなたは &man.cvs.1; の
リビジョン (-r ) のオプションや FreeBSD
プロジェクトのリポジトリの中で
それをどのように指定したらいいものかということを
よく知っておく必要があります.
タグには 2 種類あって,
リビジョンタグとブランチタグがあります.
リビジョンタグは特定の改訂版を指しており,
それはいつも同じものを意味しています. 一方ブランチタグは,
指定されたときの指定された開発の流れにおける
最も新しい改訂版を示しています.
ブランチタグは特定の改訂版を指していないために,
その意味はきょうと明日では違うものになっているでしょう.
- ユーザが興味を持つと思われるブランチタグの一覧です.
+ ユーザが興味を持つと思われるブランチタグの一覧です
+ ( ports コレクションに
+ 有効なタグはHEAD だけだという事を
+ 心に留めておいてください).
HEAD
- 主要部をなす流れ, すなわち FreeBSD-current
+ 主要部をなす流れ, すなわち FreeBSD-CURRENT
のための名前です. また,
どのリビジョンも
指定されなかったときにはこれになります.
RELENG_3
- FreeBSD-3.x の開発のための流れです.
- FreeBSD-stable としても知られています.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.X の開発のための流れです.
+ FreeBSD-STABLE としても知られています.
RELENG_2_2
- FreeBSD-2.2.x の開発のための流れです. 2.2-stable
+ FreeBSD-2.2.X の開発のための流れです. 2.2-STABLE
としても知られています. このブランチは大部分が
- すたれています.
- このタグは ports コレクションには無効です.
+ すたれています.
- ユーザが興味を持つであろうリビジョンタグの一覧です.
+ ユーザが興味を持つであろうリビジョンタグの一覧です.
+ これらのどれも ports コレクションには無効です.
+ ports コレクションは複数のリビジョンを持ちません
RELENG_3_4_0_RELEASE
- FreeBSD-3.4 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.4 です.
RELENG_3_3_0_RELEASE
- FreeBSD-3.3 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.3 です.
RELENG_3_2_0_RELEASE
- FreeBSD-3.2 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.2 です.
RELENG_3_1_0_RELEASE
- FreeBSD-3.1 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.1 です.
RELENG_3_0_0_RELEASE
- FreeBSD-3.0 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-3.0 です.
RELENG_2_2_8_RELEASE
- FreeBSD-2.2.8 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.8 です.
RELENG_2_2_7_RELEASE
- FreeBSD-2.2.7 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.7 です.
RELENG_2_2_6_RELEASE
- FreeBSD-2.2.6 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.6 です.
RELENG_2_2_5_RELEASE
- FreeBSD-2.2.5 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.5 です.
RELENG_2_2_2_RELEASE
- FreeBSD-2.2.2 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.2 です.
RELENG_2_2_1_RELEASE
- FreeBSD-2.2.1 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.1 です.
RELENG_2_2_0_RELEASE
- FreeBSD-2.2.0 です.
- このタグは ports コレクションには無効です.
+ FreeBSD-2.2.0 です.
ブランチタグを指定したときには,
普通はその開発の流れにおける
最も新しいバージョンのファイルを受け取ることができます.
もし以前のバージョンのものが欲しいときには, 日付を
-D date
- オプションを使って指定すればよいです.
+ オプションを使って指定すればよいです.
+ これ以上のことは &man.cvs.1; man page を見てください.
例
本当はなにかする前には &man.cvs.1;
のマニュアルページの全体を
ちゃんと読んでからのほうがいいのですが, Anonymous CVS
の使い方の本質的なところを簡単に例を挙げて説明します.
- -current (&man.ls.1;)
+ -CURRENT (&man.ls.1;)
をちょっと確認してから消してみます.
- &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
+
+&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
&prompt.user; cvs login
プロンプトが表示されたら, パスワード anoncvs
を入力します.
&prompt.user; cvs co ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logout
- &man.ls.1; のバージョンを 2.2-stable
+ &man.ls.1; のバージョンを 2.2-STABLE
ブランチから調べてみます.
- &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
+
+&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
&prompt.user; cvs login
プロンプトが表示されたら, パスワード anoncvs
を入力します.
&prompt.user; cvs co -rRELENG_2_2 ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logout
&man.ls.1; の変更点のリストを
(unidiff で) 作ってみます.
- &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
+
+&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
&prompt.user; cvs login
プロンプトが表示されたら, パスワード anoncvs
を入力します.
&prompt.user; cvs rdiff -u -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE ls
&prompt.user; cvs logout
他のどんなモジュールの名前が
使われているか検索してみます.
- &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
+
+&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/ncvs
&prompt.user; cvs login
プロンプトが表示されたら, パスワード anoncvs
を入力します.
&prompt.user; more modules/modules
&prompt.user; cvs release -d modules
&prompt.user; cvs logout
他の資料
次の資料は CVS を学ぶのに役に立つでしょう.
CVS チュートリアル . Cal Poly によります.
Cyclic
Software , 商用として CVS を維持しています.
CVSWeb
は FreeBSD Project の CVS のための web
インターフェースです.
CTM
- 原作: &a.phk;, 1997 年 10 月 19 日更新.
-
訳: &a.hanai;, 1997 年 9 月 13 日.
CTM
はリモートのディレクトリツリーを中央のツリーに同期させるための
手段です.
これはFreeBSDのソースツリーの配布を行なうために開発されまし
たが, 時が経つにつれて別の目的にも有用であることがわかるかも
しれません.
デルタを作り出す処理に関するドキュメントは現在ほとんど
ありません. 従って, もしあなたがCTM
を他のことに使いたいなら
&a.phk;にさらなる情報を問い合わせてください.
なぜCTM を使うの?
CTM を使うことにより FreeBSD
ソースツリーのローカルコピーを手にいれることができます.
ソースツリーが使えることの魅力は数多くあります. 完全な cvs
ツリーを追いかけるにしても, ひとつのブランチを追いかける
にしても CTM
は必要な情報を与えてくれます.
もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず
お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が
行なえないとしたら, あるいは単に変更が自動的に送られてきて
ほしいというのであれば CTM
はそんなあなたのために 作られたのです.
アクティブなブランチでは 1
日に最大三つまでのデルタを受け取る必要があります.
これが自動的に e-mail で送られてくるという方法を
ぜひ検討してみてください.
デルタのサイズは常にできるだけ小さく保たれています.
大抵の場合5KBよりも小さく,
たまに(10回に1回程度)10-50KBになり,
ときおり100KBかもっと大きくなるでしょう.
開発ソースから直接に得られたものを使うことについては,
あらかじめパッケージにされたリリースとは違い,
いろいろと注意することが あります. これは特に
“current” のソースを選んでいるときは重要です.
最新の FreeBSD
を追いかけるを読むことをお勧めします.
CTM を使うには何が必要?
二つのものが必要でしょう: CTM
プログラムとそれに与える (“current”
レベルを得るための)最初のデルタです.
CTM
プログラムはバージョン2.0のリリース以来FreeBSDの一部にな
りました. もしソースのコピーを持っているなら
/usr/src/usr.sbin/CTM にあります.
もしFreeBSDの2.0以前のバージョンなら,
最新のCTM のソースを直接
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/
から入手できます. CTM
に与える “デルタ” は二つの方法, FTPまたはe-mail,
で得ること ができます.
もしインターネットにFTPアクセスできるなら,
次のFTPサイト:
ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/
または, その ミラーサイト が
- CTM へのアクセスをサポートします.
- 適切なディレクトリに FTP して README
+ CTM へのアクセスをサポートします.
+
+ 適切なディレクトリに FTP して README
ファイルを入手し, そこからスタートしてください.
e-mail によってデルタを得たいという場合は:
CTM
配布メーリングリストのいずれかに参加するために &a.majordomo;
へ subscribe のメールを送ってください.
“ctm-cvs-cur” は完全な cvs ツリー
をサポートします. “ctm-src-cur”
は開発先端ブランチをサポートします “ctm-src-2_2”
は 2.2 リリースのブランチのサポートです.
(もし majordomo を使って参加する方法を知らないのであれば,
最初に help
という語を含むメッセージを送ってください. —
使い方の説明が送られてくるでしょう.)
メールで CTM
による更新ファイルを受け取り始めると, 中身を取り出して使用
するために ctm_rmail
プログラムを使うかもしれません. それを完全
に自動で行ないたいなら, /etc/aliases
から ctm_rmail プロ
グラムを直接使うこともできます.
さらに詳しいことはctm_rmail
manページを御覧ください.
CTM
デルタを得るためにどの方法を使うのであっても,
ctm-announce@FreeBSD.org
メーリングリストに参加するべきです.
このメーリングリストは将来的には
CTM システムの操作に関する
アナウンスがポストされる唯一の場になるでしょう.
メーリングリストに加わるためにはsubscribe
ctm-announce と書いた一行だけのメールを
&a.majordomo; へ送ってください.
はじめてCTM を使い始める
CTM
デルタを使い始めるためには, これは以降作られる全ての
- デルタの出発点を手にいれる必要があります.
- 最初にあなたが何をすでに持っているかをはっきりさせましょう.
+ デルタの出発点を手にいれる必要があります.
+
+ 最初にあなたが何をすでに持っているかをはっきりさせましょう.
すべての人は
“空”のディレクトリから始めなければなりません.
ツリーをサポートしてるあなたの
CTM を稼働するためには
指定した“空”
のデルタを使う必要があります. いくつかの分岐点
では, あなたの都合により CD
内に分配されている“スタータ”
デルタを使用できるようになっています. しかしながら, これは
頻繁に行われることではありません.
適切な出発点が決まれば, その出発点を
CTM が
維持するツリーへ変換するための “スタータ”
初期デルタを使う必要が あります.
移行デルタは番号の後ろに X
をつけたものがそうです
(たとえばsrc-cur.3210XEmpty.gz ).
X
の後ろは最初の開始ポイントに対応します.
Empty は 空のディレクトリです.
ルールとして Empty からの移行デルタは
100 デルタごとに 作られます. ところで,
これらは非常に大きいです!
XEmpty のデルタは 数十MBの
gzip
で圧縮されたデータというのが普通です.
一度スタートするためのベースデルタを得ると,
それに続く多数の全てのデルタも必要になるでしょう.
CTM を日常で使う
デルタを適用するためには, 単に
&prompt.root; cd /where/ever/you/want/the/stuff
&prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.*
とします.
CTM
はどれがgzip されているか理解します.
従って最初に gunzipしておく必要はありません.
ディスクの節約にもなります.
全体の処理に関して確信するまでは
CTM は(ソース)ツリーに対して
何もしません. また, デルタを確かめるためには
-c フラグを使うことができます.
このフラグがあると CTM
はツリーに対して実際には何も行ないません.
単にデルタの完全性を確認し,
現在のツリーに問題なく使用できるかを確認
するだけです.
CTM
には他にもオプションがあります. 詳細に関しては
マニュアルページを参照するかソースを見てください.
もし誰かが “ユーザ インターフェース”
の部分に関して助けてくれるなら私はとても嬉しいです.
なぜならどういうオプションが何を, どのように,
いつ行なうようにするべきか決めかねているからです.
以上でやることは本当に全部です.
新しいデルタを入手した時には,
ソースを最新のものにするためにそれを
CTM に通すだけです.
もしデルタを再ダウンロードするのが
骨の折れる作業であれば, デルタを 消さないでおいてください.
なにかおかしなことが起こった場合には置いておけば良かった
と思うかもしれません.
もしフロッピーディスクしか持っていない状況
であってもコピーを取るのに
fdwrite を使うことを考えてください.
ローカルの変更を保存する
開発者としてはソースツリー中のファイルを
使って実験したり変更したく なるものです.
CTM
はローカルの変更を制限つきでサポートします: ファイル
foo の存在をチェックする前に,
foo.ctm を参照しにいきます.
このファイルが存在する場合, CTM は foo
の代りにこれを処理します.
この動作はローカルの変更を保持する簡単な手段を
提供します: 単に変更したいファイルを拡張子
.ctm 付きのファイル名で
コピーするだけです. あとは自由にコードをハックでき,
.ctm ファイルの方は CTM
が最新状態に保ってくれます.
CTM
のその他の面白いオプション
更新で変更されるファイルを正確に知る
CTM
のソースリポジトリに対する変更のリストを
-l
オプションを使って決定することができます.
これは, 変更のログを保存したい,
変更されたファイルをなんらかの方法で 前・後処理したい,
または単にこだわりたい :-) 場合には,
役に立つでしょう.
更新前にバックアップを取る
CTM
の更新によって変更されるファイルすべてのバックアップを
取りたくなることがあります.
-B backup-file オプションを指定すると
CTM は
デルタで変更されるファイルすべてを
backup-file
としてバックアップするようになります.
更新で変更されるファイルを制限する
CTM
の更新の範囲を制限したり一連のデルタのから
ほんの数ファイルを抽出したくなることがあります.
-e と -x
オプションを用い正規表現を指定することで,
CTM
が処理するファイルのリストを制御することが
できます.
例えば, lib/libc/Makefile
の最新のコピーを保存してある CTM
デルタのコレクションから抽出するには,
以下のコマンドを実行します.
&prompt.root; cd /where/ever/you/want/to/extract/it/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*
CTM
デルタで指定されたファイルごとに, -e
そして -x
オプションがコマンドラインで指定された順序で適用されます.
すべての-e そして -x
オプションが適用された後に更新対象と選択された場合に限り,
CTM
はそのファイルを処理します.
CTM の将来計画
重要なもの
なんらかの CTM システムへの認証機構を用い, 不正な
CTM の更新の検出を可能とする.
CTM
へのオプションを整理する. さもないと混乱し,
直観に反したものになります.
-
- 残念なことに私は非常に忙しいです.
- 従ってこれを行なうどんな手助けでも歓迎します. その際,
- 自分が何をやりたいかを私に言うのを忘れずに.
その他
“DESに染まった” (例えば,
国外への持ち出しが規制された)ソースはまったく含まれません.
手に入るのは“国際”バージョンだけです.
もし興味のある人が多いようであれば,
我々はsec-cur シーケンスも
セットアップするつもりです. ports
コレクションに対するデルタのシーケンスもあります. しかし,
まだあまり興味は持たれていないようです.
もしこれに対するメーリング
リストが欲しい時も私に言ってください.
我々はセットアップすることを考えます.
-
-
- ありがとう!
-
-
- &a.bde;
-
- 鋭い記述とすばらしいコメントに対して.
-
-
-
- &a.sos;
-
- よく辛抱してくれました.
-
-
-
- Stephen McKay
-
- ctm_[rs]mail を書いてくれました.
- とても感謝して います.
-
-
-
- &a.jkh;
-
- 彼が頑固として譲らなかったため, 私もこの
- CTM をもっと良いものに
- しないわけにはいきませんでした.
- 彼の頑固さに感謝します.
-
-
-
- ユーザの人みんな
-
- 気に入ってくれることを願っています...
-
-
-
-
CVSup
- 原作: &a.jdp; .
-
訳: &a.jp.iwasaki;, 1997 年 2 月 27 日.
- CVSup の紹介
+ 紹介
CVSup は,
リモートのサーバホストにあるマスタ CVS リポジトリから
ソースツリーを配布し更新するための
ソフトウェアパッケージです. FreeBSD のソースは,
カリフォルニアにある中心的な開発マシンの CVS リポジトリの
中でメンテナンスしています. CVSup
を使用することで, FreeBSD ユーザは
簡単に自分のソースツリーを最新の状態に
しておくことができます.
CVSup は
pull
モデルとよばれる更新のモデルを採用しています. pull
モデルでは,
各クライアントが更新したい場合に更新したい時点で,
サーバに更新の問い合わせをおこないます.
サーバはクライアントからの
更新の要求を受け身の状態で待ちます. したがって,
すべての更新はクライアント主導でおこなわれます.
サーバは頼まれもしない更新情報を送るようなことはしません.
ユーザは CVSup
クライアントを手動で実行して更新をおこなうか,
cron
ジョブを設定して定期的に自動実行する必要があります.
用語 CVSup
のように大文字で表記しているものは, ソフトウェアパッケージ
全体を指します. 主な構成物は,
各ユーザマシンで実行するクライアントである
cvsup , FreeBSD
の各ミラーサイトで実行するサーバ cvsupd
です.
FreeBSD の文書やメーリングリストを読んだ際に,
sup についての言及を
見かけたかもしれません. sup は
CVSup の前に存在していたもので,
同様の目的で使われていました.
CVSup は sup
と同じように使用されており, 実際, sup
と互換性のあるコンフィグレーションファイルを使用します.
CVSup
の方がより高速で柔軟性もあるので, もはや
sup は FreeBSD
プロジェクトでは使用されていません.
- CVSup のインストール
+ インストール
CVSup をインストールする
最も簡単な方法は, FreeBSD
ports コレクション の
net/cvsup-bin をインストールすることです.
もしくは, net/cvsup でも構いません.
ただし, net/cvsup は
Modula-3 システムに依存していて, 構築にかかる時間,
- メモリ, ディスクスペースは比較的大きくなります.
+ メモリ, ディスクスペースは比較的大きくなります.
- もし, あなたに cvsup に関して全く知識がなく,
+ もし, あなたに cvsup に関して全く知識がなく,
自動で設定ファイルをセットアップして,
クリックするだけで転送を行なえるインターフェイスを提供してくれるような,
単一のパッケージをインストールしたいと考えているなら,
cvsupit パッケージを利用して下さい.
- これは pkg_add(1) するだけで良く,
+ これは &man.pkg.add.1; するだけで良く,
設定は, その際にメニュー形式で行なうことができるようになっています.
+
CVSup のコンフィグレーション
CVSup の動作は, supfile
と呼ばれるコンフィグレーションファイルで 制御します.
supfile のサンプルは, ディレクトリ /usr/share/examples/cvsup/
の下にあります.
supfile には以下の cvsup
に関する質問への答えを記述します:
どのファイルを受け取りたいのか?
どのバージョンのものが欲しいのか?
どこから入手したいのか?
自分のマシンのどこに置きたいのか?
どこに status ファイルを置きたいのか?
次のセクションで, これらの質問に順番に答えながら典型的な
supfile を組み立てていきます. 最初に
supfile の全体構造を説明します.
supfile はテキストファイルです.
コメントは # から行末までです.
空行とコメントだけの行は無視します.
残りの各行には,
ユーザが受け取りたいファイル群について記述します.
行の始めは,
サーバ側で定義した論理的なファイルのグループである
“コレクション”の名称です.
コレクションの名称を指定して, 欲しいファイル群を
サーバに伝えます. コレクション名の後には,
ホワイトスペースで区切られた 0 個以上のフィールドが続きます.
これらのフィールドが上記の質問に対する答えになります.
フィールドには 2 種類あります: flag フィールドと value
フィールドです. flag フィールドは delete
や compress のような
単独のキーワードから成ります. また, value
フィールドもキーワードで始まりますが,
キーワードの後にはホワイトスペースは入らず,
= と二つめの単語が続きます. 例えば,
release=cvs は value
フィールドです.
通常, supfile
には受け取りたいコレクションを一つ以上指定します.
supfile を組み立てる一つの方法として,
コレクション毎にすべての関係の
あるフィールドを明示的に指定する方法があります. しかし,
これでは supfile
のすべてのコレクションに対して
ほとんどのフィールドが同じになるため,
行が非常に長くなってしまい不便になります.
これらの問題を避けるため, CVSup
ではデフォルトを指定することのできる
メカニズムが提供されています. 特殊な擬似コレクション名
*default で始まる行は,
supfile 中の後続の
コレクションに対して使用する flag フィールドと value
フィールドのデフォルトを設定するために利用できます.
個々のコレクションで固有の値を指定すると,
デフォルト値を無効にできます. また *default
行を追加すると, supfile
の途中からデフォルト値の変更や追加が可能になります.
これまでの予備知識を基に,
FreeBSD-current
のメインのソースツリーを受け取って更新するための
supfile を組み立ててみましょう.
- どのファイルを受け取りたいのか?
-
+
+ どのファイルを受け取りたいのか?
CVSup
を通して入手できるファイルは “コレクション”
と呼ばれる名前の付けられたグループにまとめられています.
利用可能なコレクションについては
ここ で説明しています.
ここでは, FreeBSD システムのメインのソースツリー全体
を受け取るための設定例を紹介します.
輸出規制されている暗号化サポートの
コード以外のすべてを含む src-all
という単一の大きなコレクションがあります.
この例では私たちがアメリカ合衆国か
カナダにいるものと仮定します. その場合,
cvs-crypto という一つの付化的な
コレクションで暗号化コードを入手することができます.
supfile
を組み立てる最初のステップとして,
これらのコレクションを一行に一つづつ記述します:
src-all
cvs-crypto
- どのバージョンのものが欲しいのか?
-
+
+ どのバージョンのものが欲しいのか?
CVSup を使用すると,
かつて存在していたことのある, 事実上どのバージョンの
ソースでも受け取ることができます. これは cvsupd
サーバがすべてのバージョンを含む CVS
リポジトリに基づいて動作することにより,
実現されています.
tag= および
date= の value フィールドを使用して,
欲しいバージョンの 一つを指定します.
tag=
のフィールドの指定は正確に行うように十分注意
してください. いくつかのタグは特定のコレクションに
対してのみ有効です.
タグの綴りが違っていたり不適切なタグを指定すると,
CVSupはユーザが消し
たくないファイルまで削除してしまいます. 特に
ports-* のコレクション に対しては
tag=. だけ
を指定するようにしてください.
tag=
フィールドはリポジトリ中のシンボリックタグを指定します.
tag には revision tag と branch tag の二種類があります.
revision tag は特定のリビジョンを指します. これは,
毎日同じ状態に保つことになります. 一方 branch tag は,
ある時点での開発分流の最新のリビジョンを指します.
branch tag
は特定のリビジョンを指定している訳ではないので,
今日と明日では
異なるリビジョンを参照することになるかもしれません.
以下はユーザが興味を持っていると思われる branch tag
- です:
+ です. tag=. だけが ports コレクションには
+ 適切であることに注意してください.
tag=.
- メインの開発分流であり, FreeBSD-current
+ メインの開発分流であり, FreeBSD-CURRENT
として知られています.
注意: .
は句読点ではありません. tag の名称です.
このタグの指定は総ての
コレクションに対して有効です.
tag=RELENG_3
- FreeBSD-3.x 用の開発分流であり, FreeBSD-stable
- として知られています. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-3.X 用の開発分流であり, FreeBSD-STABLE
+ として知られています.
tag=RELENG_2_2
- FreeBSD-2.2.x 用の開発分流であり, 2.2-stable
- として知られています. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_0
-
- FreeBSD-2.1.x 用の開発分流です.
- この分流はほとんど利用されていません.
- このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.X 用の開発分流であり, 2.2-STABLE
+ として知られています.
以下はユーザが興味を持っていると思われる revision
- tag です:
+ tag です. 以下は ports コレクションには不適切であることに
+ 再度注意してください.
+
+
+ tag=RELENG_3_4_0_RELEASE
+
+
+ FreeBSD-3.4.
+
+
+
tag=RELENG_3_3_0_RELEASE
- FreeBSD-3.3. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-3.3.
tag=RELENG_3_2_0_RELEASE
- FreeBSD-3.2. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-3.2.
tag=RELENG_3_1_0_RELEASE
- FreeBSD-3.1. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-3.1.
tag=RELENG_3_0_0_RELEASE
- FreeBSD-3.0. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-3.0.
tag=RELENG_2_2_8_RELEASE
- FreeBSD-2.2.8. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.8.
tag=RELENG_2_2_7_RELEASE
- FreeBSD-2.2.7. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.7.
tag=RELENG_2_2_6_RELEASE
- FreeBSD-2.2.6. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.6.
tag=RELENG_2_2_5_RELEASE
- FreeBSD-2.2.5. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.5.
tag=RELENG_2_2_2_RELEASE
- FreeBSD-2.2.2. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.2.
tag=RELENG_2_2_1_RELEASE
- FreeBSD-2.2.1. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.1.
tag=RELENG_2_2_0_RELEASE
- FreeBSD-2.2.0. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_7_RELEASE
-
- FreeBSD-2.1.7. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_6_1_RELEASE
-
- FreeBSD-2.1.6.1. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_6_RELEASE
-
- FreeBSD-2.1.6. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_5_RELEASE
-
- FreeBSD-2.1.5. このタグの指定は ports-*
- のコレクションに対しては無効です.
-
-
-
- tag=RELENG_2_1_0_RELEASE
-
- FreeBSD-2.1.0. このタグの指定は ports-*
- のコレクションに対しては無効です.
+ FreeBSD-2.2.0.
tag
名を示した通りにタイプされているか十分注意してく
ださい. CVSup は tag
名が正しいかどうかを見分けることはできません. tag
が間違っていた場合,
たまたまファイルがまったく存在しない正しい tag が
指定されたものとしてCVSup
は動作します. その場合は, 現在あるソースが削
除されるでしょう.
branch tag を指定した際には,
通常はその開発分流の最新バージョンの
ファイルを受け取ります.
いくらか前のバージョンを受け取りたい場合は,
date= の value
フィールドを使って日付を指定することで,
これを実現することが できます. &man.cvsup.1;
のマニュアルページで,
その方法を説明しています.
例として, FreeBSD-current を受け取りたいとします.
次の行を supfile
の始めに追加します:
*default tag=.
tag= フィールドも
date=
フィールドも指定しなかった場合に
動き出す重要な特殊なケースがあります. そのケースでは,
特定のバージョンの ファイルを受け取るのではなく,
サーバの CVS リポジトリから実際の RCS
ファイルを直接受け取ります.
一般的に開発者はこの処理のモードが 好きなようです.
彼らのシステム上にリポジトリそのものの
コピーを維持することで,
リビジョン履歴を閲覧し過去のバージョンの
ファイルを検査できるようになります. しかし,
これには大きなディスクスペースが必要になります.
- どこから入手したいのか?
-
+
+ どこから入手したいのか?
更新情報をどこから入手するかを
cvsup に伝えるために
host= フィールドを使用します.
CVSup ミラーサイト
のどこからでも入手できますが,
ネット上での最寄りのサイトを選ぶべきでしょう.
この例では, 仮想上の FreeBSD 配布サイト
cvsup666.FreeBSD.org
を使用します:
*default host=cvsup666.FreeBSD.org
CVSup を実行する前にホスト名を
実在のものに変更する必要があります. どのように
cvsup を実行しても, この設定は
-h hostname
を
使用してコマンドラインで変更することができます.
- 自分のマシンのどこに置きたいのか?
-
+
+ 自分のマシンのどこに置きたいのか?
prefix= フィールドは,
cvsup
に受け取ったファイルをどこに置くかを 伝えます.
この例では, ソースファイルを直接メインのソースツリー
/usr/src に置きます.
src
ディレクトリはすでにファイルを受け取るために
選択したコレクションで暗黙に指定しているので,
これは正しい仕様となります:
*default prefix=/usr
- どこに status ファイルを置きたいのか?
-
+
+ どこに status ファイルを置きたいのか?
cvsup クライアントは “base”
ディレクトリと呼ばれる場所に, ある status
ファイルを維持しています.
すでに受け取った更新情報を追従し続けることで,
これらのファイルは CVSup
がより効果的に動作することを支援します. 標準の base
ディレクトリ /usr/local/etc/cvsup
を使用します:
*default base=/usr/local/etc/cvsup
supfile に指定がない場合は,
この設定をデフォルトで使用しますので,
実際には上の行は必要ありません.
base
ディレクトリが存在しない場合は作成しておきましょう. base
ディレクトリが存在しない場合, cvsup
クライアントは実行を拒否します.
その他もろもろの supfile
の設定:
通常 supfile
に入れておくべき行がもう一つあります:
*default release=cvs delete use-rel-suffix compress
release=cvs は, サーバがメインの
FreeBSD CVS リポジトリから
その情報を取得するように指示します.
ほとんどの場合はこのようにしておきますが,
ここでの説明の範疇をこえるような
状況では他の指定をすることも可能です.
delete は
CVSup
にファイルを削除することを許可します.
CVSup が
ソースツリーを完全に最新の状態に
保てるようにするためには, これは常に
指定しておくべきでしょう.
CVSup は,
これらの責任範囲のファイルだけを 慎重に削除します.
たまたま存在する他の余分なファイルについては,
まったく手をつけずに残しておきます.
use-rel-suffix は ...
神秘的なものです. これについて本当に知りたい人は,
&man.cvsup.1; のマニュアルページをご覧ください.
でなければ, 何も考えずに指定してみてください.
compress は通信チャネルで gzip
形式の圧縮の使用を有効にします.
ご使用のネットワーク接続が T1 speed 以上である場合,
この圧縮を使用しない方がよいかもしれません.
そうでない場合は十分に役に立ちます.
supfile の例のまとめ:
以下は supfile の例の全体です:
*default tag=.
*default host=cvsup666.FreeBSD.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix compress
src-all
cvs-crypto
CVSup の実行
さて, 更新の準備ができました.
これを実行するコマンドラインは実に簡単です:
&prompt.root; cvsup supfile
もちろん, ここでの
supfile
は作成したばかりの supfile のファイル名です. X11
環境で実行するものと仮定して, cvsup は
通常の操作に必要なボタンを持つ GUI ウィンドウを表示します.
“go” ボタンを押して,
実行を監視してください.
この例では実際の /usr/src
ツリーを更新しているので, cvsup
にファイルを更新するのに必要なパーミッションを与えるために,
ユーザ root で実行する必要があります.
コンフィグレーションファイルを作ったばかりで,
しかも以前にこのプログラムを実行したことがないので,
神経質になるのは無理もない話だと思います.
大切なファイルに触らずに試しに実行する簡単な方法があります.
どこか適当な場所に空のディレクトリを作成して,
コマンドラインの引数で指定するだけです:
&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/dest
指定したディレクトリは, すべての更新されるファイルの
更新先ディレクトリとして使用します.
CVSup は
/usr/src の下のファイルを検査しますが,
変更や削除はまったくおこないません. かわりに
/var/tmp/dest/usr/src
に更新されたすべてのファイルが置かれるようになります.
この方法で実行した場合は, CVSup
は base ディレクトリの status
ファイルを更新せずにそのままにします.
これらのファイルの新しいバージョンは指定されたディレクトリ
に書き込まれます. /usr/src
の読み取り許可がある限り, このような試し実行のためにユーザ
root になる必要はありません.
X11 を利用していないとか単に GUI が気に入らない場合は,
cvsup 起動時にコマンドラインに
二つほどオプションを追加する必要があります:
&prompt.root; cvsup -g -L 2 supfile
-g オプションは cvsup に GUI
を使用しないように伝えます. X11
を利用していない場合には自動的に指定されますが,
そうでない場合は 明示的に指定します.
-L 2 オプションは cvsup
にファイル更新中の詳細情報をプリントアウト
するように伝えます. 冗長性には -L 0 から
-L 2 までの三つのレベル があります.
デフォルトは 0 であり, エラーメッセージ以外はまったく出力
しません.
たくさんの他のオプション変数があります.
それらの簡単な一覧は cvsup -H
で表示されます.
より詳しい説明はマニュアルページをご覧ください.
動作している更新の方法に満足したら, &man.cron.8;
を使って cvsup を定期的に
実行させる準備をすることができます. cron から起動する際には,
明示的に cvsup が GUI
を使わないようにする必要があります.
CVSup ファイルコレクション
CVSup
経由で入手できるファイルコレクションは
階層的に組織化されています.
いくつか大きなコレクションがあり,
それらは小さなサブコレクションに 分割されています.
大きなコレクションは, そのサブコレクション毎に
受信することと同じことになります.
下の一覧ではコレクション間の階層関係を
字下げして表現します.
最も一般的に使用するコレクションは
src-all , cvs-crypto ,
そして ports-all です.
他のコレクションは特別な目的を持つ人達だけが使用しており,
ミラーサイトはそれらのすべてを
持っていないかもしれません.
- cvs-all release=cvs
+
+ cvs-all release=cvs
+
メインの FreeBSD CVS リポジトリであり,
輸出規制された暗号化コードは含まれていません.
distrib release=cvs
FreeBSD
の配布とミラーに関連するファイルです.
doc-all release=cvs
FreeBSD
ハンドブックおよびその他のドキュメントの
ソースです.
ports-all release=cvs
FreeBSD の ports コレクションです.
ports-archivers release=cvs
アーカイビングのツール.
ports-astro release=cvs
天文学関連の ports.
ports-audio release=cvs
サウンドサポート.
ports-base release=cvs
/usr/ports
のトップにあるその他のファイル.
ports-benchmarks release=cvs
ベンチマークプログラム.
ports-biology release=cvs
植物学関連のプログラム.
ports-cad release=cvs
CAD ツール.
ports-chinese release=cvs
中国語サポート.
ports-comms release=cvs
通信ソフトウェア.
ports-converters release=cvs
文字コードコンバータ.
ports-databases release=cvs
データベース.
ports-deskutils release=cvs
コンピュータが発明される前に
卓上で使われていたものたち.
ports-devel release=cvs
開発ユーティリティ.
ports-editors release=cvs
エディタ.
ports-emulators release=cvs
他の OS のエミュレータ.
ports-ftp release=cvs
FTP クライアントとサーバ.
ports-games release=cvs
ゲーム.
ports-german release=cvs
ドイツ語サポート.
ports-graphics release=cvs
グラフィックユーティリティ.
ports-irc
release=cvs
-
インターネットリレーチャット(IRC)用のユーティリティ
ports-japanese release=cvs
日本語サポート.
ports-java
release=cvs
-
Java ユーティリティ
ports-korean release=cvs
韓国語サポート.
ports-lang release=cvs
プログラミング言語.
ports-mail release=cvs
メールソフトウェア.
ports-math release=cvs
数値計算ソフトウェア.
ports-mbone release=cvs
MBone アプリケーション.
ports-misc release=cvs
色々なユーティリティ.
ports-net release=cvs
ネットワーキングソフトウェア.
ports-news release=cvs
USENET ニュースのソフトウェア.
ports-palm
release=cvs
3Com Palm(tm) シリーズ用ソフトウェア.
ports-print release=cvs
印刷ソフトウェア.
ports-russian release=cvs
ロシア語サポート.
ports-security release=cvs
セキュリティユーティリティ.
ports-shells release=cvs
コマンドラインシェル.
ports-sysutils release=cvs
システムユーティリティ.
ports-textproc release=cvs
文書処理ユーティリティ
(デスクトップパブリッシングは含まない).
ports-vietnamese release=cvs
ベトナム語サポート.
ports-www release=cvs
World Wide Web 関連のソフトウェア.
ports-x11 release=cvs
X window システムをサポートする ports.
ports-x11-clocks release=cvs
X11 上で動作する時計の数々.
ports-x11-fm release=cvs
X11 上で動作するファイラ.
ports-x11-fonts release=cvs
X11 のフォントとフォントユーティリティ.
ports-x11-toolkits release=cvs
X11 のツールキット.
ports-x11-servers
-
各種 X11 サーバ
ports-x11-wm release=cvs
X11 のウィンドウマネージャ.
src-all release=cvs
メインの FreeBSD ソース群であり,
輸出規制された暗号化コードは
含まれていません.
src-base release=cvs
/usr/src
のトップにあるその他のファイル.
src-bin release=cvs
シングルユーザモードで必要な
ユーザユーティリティ
(/usr/src/bin ).
src-contrib release=cvs
FreeBSD プロジェクト外部からの
ユーティリティおよびライブラリ,
比較的無修正
(/usr/src/contrib ).
src-etc release=cvs
システムコンフィグレーションファイル
(/usr/src/etc ).
src-games release=cvs
ゲーム
(/usr/src/games ).
src-gnu release=cvs
GNU Public License
下にあるユーティリティ
(/usr/src/gnu ).
src-include release=cvs
ヘッダファイル
(/usr/src/include ).
src-kerberos5
release=cvs
Kerberos5 セキュリティパッケージ
(/usr/src/kerberos5 ).
src-kerberosIV release=cvs
KerberosIV セキュリティパッケージ
(/usr/src/kerberosIV ).
src-lib release=cvs
ライブラリ
(/usr/src/lib ).
src-libexec release=cvs
システムプログラムであり,
通常は他のプログラムから実行される
(/usr/src/libexec ).
src-release release=cvs
FreeBSD の release
を構築するために必要なファイル
(/usr/src/release ).
src-sbin release=cvs
シングルユーザモード用の
システムユーティリティ
(/usr/src/sbin ).
src-share release=cvs
多様なシステム間で共有可能なファイル
(/usr/src/share ).
src-sys release=cvs
カーネル
(/usr/src/sys ).
src-tools release=cvs
FreeBSD の保守用の色々なツール
(/usr/src/tools ).
src-usrbin release=cvs
ユーザユーティリティ
(/usr/src/usr.bin ).
src-usrsbin release=cvs
システムユーティリティ
(/usr/src/usr.sbin ).
www release=cvs
World Wide Web のデータ用のソースです.
cvs-crypto release=cvs
輸出規制された暗号化コードです.
src-crypto release=cvs
輸出規制された FreeBSD
プロジェクト外部からのユーティリティおよび
ライブラリ, 比較的無修正
(/usr/src/crypto ).
src-eBones release=cvs
Kerberos および DES
(/usr/src/eBones ).
FreeBSD の現在のリリースでは使われていません.
src-secure release=cvs
DES (/usr/src/secure ).
src-sys-crypto release=cvs
カーネルの暗号化コード
(/usr/src/sys/crypto ).
distrib release=self
CVSup
サーバ自身のコンフィグレーションファイルです. CVSup
ミラーサイトが使用します.
gnats release=current
GNATS バグトラッキングデータベースです.
mail-archive release=current
FreeBSD 関連メーリングリストのアーカイブ.
www release=current
インストールされた World Wide Web のデータです.
WWW ミラーサイトが使用します.
詳細について
CVSup の FAQ や CVSup に関するその他の情報については
The CVSup Home Page をご覧ください.
CVSup のほとんどの FreeBSD
関連の議論は &a.hackers; でおこなわれています.
ソフトウェアの新しいバージョンは &a.announce; で
アナウンスされます.
質問とバグ報告はプログラムの作者,
cvsup-bugs@polstra.com へ
送ってください.
- make world によるシステムの再構築
-
- 寄稿: &a.nik;.
+ make world の利用
FreeBSD のどれか特定のバージョン (stable ,
current など)
について, ローカルのソースツリーを同期させたら,
そのソースツリーを使ってシステムを
再構築しなければなりません.
バックアップを作成する
システムを再構築する前に バックアップを
作成することの重要性は, いくら強調してもし過ぎると言うことはありません.
システム全体の再構築とは
(以降に書かれた手順に従っている限り)難しい作業ではありませんが,
どんなに注意していたとしても,
あなた自身, あるいはソースツリーで作業している他の人達に手違いがあった時には,
システムが起動しなくなってしまう状態になることがあるのです.
まず, バックアップがきちんと作成されていることを確認して下さい.
そして, fixit フロッピーを用意して下さい. 私は今までに,
一度もバックアップや fixit フロッピーのお世話になったことはありませんし,
これからもそうなるようなことはないと思っていますが,
どういう場合であっても用意しておいて損はないでしょう.
メーリングリストに参加する
もともと, -STABLE と -CURRENT のコードブランチは,
開発中のもの です.
FreeBSD の作業に貢献してくださっている人達も人間ですから,
時にはミスをすることだってあるでしょう.
そのような間違いは, 単に警告を示す見慣れない
診断メッセージをシステムが,表示するような,
全く害のないものであることもあれば, システムを起動できなくしたり,
ファイルシステムを破壊してしまうような,
恐ろしい結果を招くものかも知れません.
万が一, このような問題が生じた場合,
問題の詳細と, どのようなシステムが影響を受けるかについて書かれた
注意(heads up)
の記事が
適切なメーリングリストに投稿され, そして, その問題が解決されると,
問題解決(all clear)
のアナウンス記事が同様に
投稿されます.
-STABLE や -CURRENT ブランチを試したり, それらに
追随していくときに
FreeBSD-stable@FreeBSD.ORG や
FreeBSD-current@FreeBSD.ORG
を読まないというのは, 自ら災難を招くことになるでしょう.
訳注:
これらのメーリングリストは英語でやりとりされているため,
日本語での投稿は歓迎されません. 英語でのやりとりができない人は,
FreeBSD 友の会
の運営しているメーリングリストをあたってみるのがいいでしょう.
-
+
+ /usr/src/UPDATING を読む
+
+ 何を始めるにしろ, まず最初に
+ /usr/src/UPDATING (もしくはあなたがソースコードを
+ どこにコピーしたにせよそれに相当するファイル) を読みましょう.
+ このファイルにはあなたが遭遇するかも知れない問題に対する重要な情報を
+ 含んでいたり, あなたが特定のコマンドを実行しなければならなくなった時
+ その順序を指示したりするはずです.
+ UPDATING があなたが読んだ事柄と矛盾している時は
+ UPDATING が優先します.
+
+
+ UPDATING を読むということは, 前述の
+ 適切なメーリングリストを購読する代わりにはなりません.
+ 二つの要求は相補的なもので排他的なものではないのです.
+
+
+
/etc/make.conf の確認
まず, /etc/make.conf を調べて下さい.
ここには, ソースを再構築する際に使用される
最初の状態では, すべてがコメントアウトされています.
必要だと思う項目のコメントをはずして下さい.
(開発者でない)標準的なユーザならおそらく,
CFLAGS と NOPROFILE のコメントをはずすことを考えると思います.
もし, 浮動小数点演算ユニット(386DX, 486DX, Pentium と,
それより上のクラスのマシン)がある場合には, HAVE_FPU
の行のコメントをはずすことができます.
この定義は, FreeBSD 2.2.2 以降で廃止されました.
他の定義 (COPTFLAGS, NOPORTDOCS など) の定義行についても,
コメントを外す必要があるかどうか調べておきましょう.
/etc/group の更新
/etc ディレクトリには,
システム起動時に実行されるスクリプトだけでなく,
あなたのシステムの設定に関連する情報の大部分が
含まれています. そのディレクトリに含まれる
スクリプトは, FreeBSD のバージョンによって多少異なります.
また, 設定ファイルのなかには, 稼働中のシステムが日々利用している
ものもあります. 実際には, /etc/group
などがそれに該当します.
make world
のインストールの段階では,
特定のユーザ名, あるいはグループが存在していることを
要求する場面があります. システムのアップグレードを行なう際には,
それらのグループが削除, あるいは変更されて存在していない可能性が
考えられますが, そういった場合, システムのアップグレードを
行なっている間に, 問題が発生する原因になります.
この種の例でもっとも記憶に新しいのは,
ppp サブシステムがインストールされる時,
そのサブシステムが利用する
解決方法は, /usr/src/etc/group を調べ,
自分のシステムのグループ名リストと比較することです.
最新のファイルに含まれていて, あなたのファイルに含まれていない
グループ名があれば, あなたのファイルにそのグループ名をコピーして下さい.
同様に, 名前が異なるにも関わらず,
/etc/group と
/usr/src/etc/group で同じ GID を持っているグループ名があれば,
/etc/group に含まれる,
該当するすべてのグループ名を変更しておかなければなりません.
もし, あなたがもっと神経質な人なら, あなたが名前を変更したり,
削除してしまったグループが所有しているファイルを,
次のようにして調べることもできます.
&prompt.root; find / -group GID -print
これは GID (グループ名もしくは数字で示されたグループ ID)で
指定されたグループが所有するすべてのファイルを表示します.
コンパイルは, シングルユーザモードで行なった方が良いでしょう.
そうすることで多少速度が向上する, というちょっとした利点が
あるだけでなく, システムの再インストールは重要なシステムファイル,
標準コマンド, ライブラリ, インクルードファイルなどを操作します.
稼働中のシステムに(特に他のユーザがログインしている時に)そのような
変更を加えることは, トラブルを引き起こす原因となります.
自信家の方は, このステップを省略しても構いません.
FreeBSD 2.2.5-RELEASE 以降の場合
以下に詳しく述べられているように, 2.2.5-RELEASE 以降,
ビルド(システムの構築)とインストールの行程を分離して行なうことが可能になりました.
そのため, マルチユーザモードで新しいシステムのビルド を行ない,
その後, シングルユーザモードに移行してから
インストールを行なうことができます.
稼働中のシステムでシングルユーザモードに移行するには,
- スーパユーザ(root)権限で次のコマンドを実行します.
+ スーパユーザ(root)権限で次のコマンドを実行します.
&prompt.root;
-
-
あるいはシステムを再起動し, ブートプロンプトから
-s フラグを設定することで, シングルユーザモードで
システムを起動させることができます. 起動後, シェルプロンプトから
次のように実行して下さい.
&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -a
これはファイルシステムをチェックした後,
/ を読み書き可能にして再マウント,
/etc/fstab に指定されている,
それ以外の UFS ファイルシステムをすべてマウントしてから
スワップを有効にします.
/usr/obj の削除
システムが再構築される時, 構築されたものは(デフォルトで)
/usr/obj 以下のディレクトリに格納され,
そのディレクトリの下は /usr/src と同じ構造となります.
このディレクトリをあらかじめ削除しておくことにより,
make world
の行程にかかる時間を短縮させ,
依存問題に悩まされるようなトラブルを回避することができます.
/usr/obj 以下のファイルには,
変更不可(immutable)フラグ(詳細は
- chflags(1) 参照)がセットされているものがあります.
+ &man.chflags.1; 参照)がセットされているものがあります.
そのため, まず最初にそのフラグを変更しなければなりません.
&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *
全バージョンに共通すること
まず, カレントディレクトリを /usr/src に
- 変更しなければなりません. 次のように実行して下さい.
+ 変更しなければなりません. 次のように実行して下さい.
&prompt.root; cd /usr/src
- (もちろん, ソースコードが他のディレクトリにある場合には,
+ (もちろん, ソースコードが他のディレクトリにある場合には,
/usr/src ではなく,
ソースコードのあるディレクトリに移動して下さい).
make world を行なうには, &man.make.1; コマンドを使用します.
このコマンドは, Makefile というファイルから,
FreeBSD を構成するプログラムの再構築方法や,
どういう順番でそれらを構築すべきかといったような
指示を読み込みます.
コマンドラインの一般的な書式は, 次のとおりです.
&prompt.root; make - -DVARIABLE target
この例では, -x が
&man.make.1; に渡されるオプションになります.
どのようなオプションが利用できるかについては, マニュアルページを
参照して下さい.
-DVARIABLE は,
Makefile に渡される変数であり,
この変数は Makefile の動作をコントロールします.
また, /etc/make.conf で設定される変数も
同様です. これは変数を設定するもう一つの方法として用意されています.
&prompt.root; make -DNOPROFILE=true target
は, プロファイル版のライブラリを構築しないことを指定する
- もう一つの記法で, /etc/make.conf 中の
+ もう一つの記法で, /etc/make.conf 中の
NOPROFILE= true
# Avoid compiling profiled libraries
- の行に対応します.
-
+ の行に対応します.
target は, &man.make.1; に
どのように動作するのかを指示するためのものです.
各々の Makefile には, 数多くの異なる
ターゲット(target)
が定義されていて,
指定されたターゲットによって, 動作が決まります.
Makefile に書かれているターゲットには,
あなたが指定しても意味を持たないものも含まれます.
これらは, システムの再構築に必要な段階を, 多くの
さらに細かい段階に分割するため, 構築の過程で利用されるものです.
大抵の場合, &man.make.1; にパラメータを指定する必要はないでしょうから,
コマンドラインは次のようなものになるでしょう.
&prompt.root; make target
出力の保存
実行される &man.make.1; からの出力は, ファイルに保存すると良いでしょう.
もし, 何か障害が発生した場合, エラーメッセージのコピーに加え,
どの時点でそれが起こったのか, 完全なリストが手元に残ります.
何が悪かったのか, あなた自身がそれから理解することはできないかも
知れません. しかし, FreeBSD メーリングリストに投稿して,
誰か他の人からの助言を得るために利用することができます.
ファイルに保存する最も簡単な方法は, &man.script.1; コマンドを
使い, 引数に出力を保存したいファイル名を指定することです.
これを make world の直前に行ない, 再構築が終了してから
exit と入力すると, 出力を保存することができます.
&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make world
… compile, compile, compile …
&prompt.root; exit
Script done, …
出力を保存する場合, /tmp ディレクトリの中に
保存してはいけません .
このディレクトリは, 次の再起動で削除されてしまう可能性があります.
出力の保存には, (上の例のように)/var/tmp や
root のホームディレクトリが適しています.
FreeBSD-2.2.2 と, それ以前のバージョン
/usr/src/Makefile には,
システム全体を再構築しインストールを行なう
world ターゲットが含まれています.
それを, 次のように使って下さい.
&prompt.root; make world
FreeBSD-2.2.5 と, それ以降のバージョン
FreeBSD-2.2.5 から(実際には, -CURRENT ブランチで最初に作成され,
2.2.2 と 2.2.5 の間の時点で -STABLE に導入されたのですが),
world ターゲットは
buildworld と
installworld の二つに分割されました.
その名前が示すように, buildworld は
/usr/obj 以下に新しい完全な
ディレクトリツリーを構築し,
installworld は, そのツリーを
現在のマシンにインストールします.
これは, 二つの理由から非常に有用です.
まず第一に, 稼働中のシステムに全く影響を与えることなく,
安全にシステムの構築作業を行えることです.
構築作業は何にも依存せず独立して行なわれる
ため,
マルチユーザモードで稼働中のシステムでも, 何一つ
悪影響を与えずに buildworld を
実行することができます.
ただし, installworld は
シングルユーザモードで行なうことをおすすめします.
第二に, NFS マウントを利用することで,
ネットワーク上の複数のマシンをアップグレードすることが
可能な点があげられます. 例えば三台のマシン, マシン A, マシン B,
マシン C をアップグレードしたい場合には, まず
マシン A で make buildworld と
make installworld を実行します.
それから, マシン B とマシン C で /usr/src を
NFS マウントし, make installworld とすることで
構築済みのシステムを各マシンにインストールすることができるのです.
一方, world ターゲットも残されていますので,
FreeBSD-2.2.2 の場合として示されている方法と同じように,
このターゲットを利用することもできます.
make world は,
make buildworld に続けて
make installworld を実行します.
make buildworld と
make installworld のコマンドを分けて実行する場合には,
それぞれ同じ引数を &man.make.1; に渡さなければなりません.
-
- 次のように実行したとすると,
+ 次のように実行したとすると,
+
&prompt.root; make -DNOPROFILE=true buildworld
- 構築されたシステムは次のようにしてインストールする必要があります.
+ 構築されたシステムは次のようにしてインストールする必要があります.
+
&prompt.root; make -DNOPROFILE=true installworld
- そうしないと, make buildworld の段階で
+ そうしないと, make buildworld の段階で
構築されていない, プロファイル版ライブラリのインストールを
試みることになります.
(訳注: もちろん, それには失敗するのでエラーが発生します. )
-CURRENT と, それ以降
もし, -CURRENT を追跡しているなら, make コマンドに
-j オプションを渡すことができます.
このオプションにより, make は
同時に複数のプロセスを生成するようになります.
これは, 実際に複数の CPU を備えているマシンに対して
非常に有効に働きます. また, コンパイルプロセスの大部分は
CPU の処理ではなく入出力の処理に費やされるため,
単一の CPU を持つマシンでも同じように有効です.
単一の CPU を持つ典型的なマシンでは, 次のように実行します.
&prompt.root; make -j4 target
この時 &man.make.1; は, 最大 4 個までのプロセスを同時に実行します.
メーリングリストに投稿された経験的な報告によると,
4 個という指定が最も良いパフォーマンスを示すようです.
もし, 複数の CPU を備えたマシンで SMP 設定が行なわれたカーネルを
利用しているなら, 6 から 10 の間の値を設定し, 速度がどれくらい
向上するか確認してみて下さい.
注意して欲しいのですが, (この原稿を書いている時点では)この機能はまだ
実験段階です. そのため, ソースツリーへ変更が加えられたときに
これが正常に機能しなくなる可能性があります.
もし, このオプションを用いてシステムの構築に失敗した場合には,
障害を報告する前に, もう一度オプションを付けずに試してみて下さい.
システムの構築にかかる時間
すべてが順調に進んでいたとしても,
一時間半から丸一日程度の時間がかかります.
一般的に言って, 200MHz の P6(訳注: Intel PentiumPro のこと) で
32MB 以上のメモリを搭載し, 標準的な SCSI ディスクドライブを利用していた
とすると, make world の完了までに
およそ一時間半の時間がかかります. この構成よりも性能が低ければ,
それよりもさらに時間がかかるでしょう.
/etc の更新
システムの再構築は, いくつかのディレクトリ (
特に, /etc , や /var や
/usr ) において,
新規に導入されたり, 変更された設定ファイルによる
ファイルの更新は行なわれません.
これは, あなた自身の手や目, そして適切な
&man.diff.1; の使用をによって行なわなければなりません.
単にファイルを
/usr/src/etc から /etc に
コピーしただけでは正常に動作させることはできません.
これらのファイルには, インストールという
手順を踏まなければならないもの
が含まれています.
/usr/src/etc ディレクトリは
/etc
ディレクトリにそのまま置き換えられるような
コピーではない からです.
また, /etc にあるべきファイルのうちで
/usr/src/etc にないものもあります.
一番簡単な方法は, ファイルを新しいディレクトリにインストールしてから,
以前のものと異なっている部分を調べて更新作業を行なうことです.
既存の /etc をバックアップする
理論的に考えて, このディレクトリが自動的に
処理されることはありませんが, 念には念を入れておいて
損はありません. たとえば以下のようにして,
既存の /etc ディレクトリを
どこか安全な場所にコピーしておきましょう.
&prompt.root; cp -Rp /etc /etc.old
-R は再帰的なコピーを行ない,
-p はファイルの更新時間や所有者などを保存します.
また, 新しい /etc やその他のファイルを
インストールするための, 仮のディレクトリを作っておく必要があります.
私はいつもこの仮のディレクトリを
/var/tmp/root に置くことにしています.
同様に, 必要なサブディレクトリもこの下に置きます.
&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution
上の例は, 必要なディレクトリ構造をつくり, ファイルをインストールします.
/var/tmp/root 以下に作られる,
たくさんの空のディレクトリは削除する必要があります.
一番簡単なやり方は, 次のとおりです.
&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | /usr/bin/perl -lne \
'opendir(D,$_);@f=readdir(D);rmdir if $#f == 1;closedir(D);'
これは深さ優先探索で各ディレクトリを走査し,
含まれるファイルの数が 2 個(スクリプト中の
この段階の /var/tmp/root には,
本来 / 以下にあるべきファイルが
すべて含まれています.
各ファイルを順に見て, 既存のファイルと異なる部分を
調べて下さい.
/var/tmp/root 以下に
インストールされているファイルの中には,
/var/tmp/root/ と
/var/tmp/root/root/ の中にある
シェルスタートアップ ファイルだけですが,
他のものがあるかも知れません.
(これは, あなたがこれをどの時点で読んでいるかに依存するので,
もっとも簡単な方法は, 二つのファイルを比較するコマンド
&man.diff.1; を使うことです.
&prompt.root; diff /etc/shells /var/tmp/root/etc/shells
これは, あなたの
/etc/shells ファイルと
新しい /etc/shells ファイルの
異なる部分を表示します.
これらを, あなたが書き換えたものに変更点をマージするか,
それとも既存のファイルを新しいもので上書きするかを
判断する材料にして下さい.
新しい root ディレクトリ
(/var/tmp/root ) の名前に
タイムスタンプを付けておくと,
異なるバージョン間の比較を楽に行なうことができます.
頻繁にシステムの再構築を行なうということは,
/etc の更新もまた, 頻繁に行う必要がある
ということです. これはちょっと手間のかかる作業です.
この作業は, あなたが /etc にマージした,
新しく変更されたファイルの最新のセットのコピーを保存しておくことで
素早く行なうことができます.
下の手順は, それを実現するための一つの方法です.
普通に make world します. /etc や
他のディレクトリを更新したくなったときは, ターゲット
ディレクトリに, そのときの日付に基づく名前をつけてください.
たとえば 1998 年 2 月 14 日 だとすれば, 以下のようにします.
&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distribution
上に説明されているように,
このディレクトリから変更点をマージします.
その作業が終了しても,
/var/tmp/root-19980214 を
削除してはいけません .
最新版のソースをダウンロードして再構築したら,
ステップ 1 にしたがって下さい. 今度は,
/var/tmp/root-19980221
(更新作業が一週間おきだった場合)
のような名前の, 新しいディレクトリをつくることになるでしょう.
この段階で &man.diff.1; を使用し,
二つのディレクトリを比較する再帰的 diff を作成することで,
一週間の間に行なわれたソースへの変更による相違点を調べます.
&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221
これによって報告される相違点は, 大抵の場合,
/var/tmp/root-19980221/etc と
/etc との場合に比べて
非常に少ないものになります.
相違点が少ないため, 変更点を既存の /etc
ディレクトリにマージすることは, 比較的容易になります.
ここまで終了したら, /var/tmp/root-* の
二つのうち, 古い方のディレクトリは削除して構いません.
&prompt.root; rm -rf /var/tmp/root-19980214
この工程を, /etc へ変更点をマージする
必要があるたび, 毎回繰り返します.
ディレクトリ名の生成を自動化するには, &man.date.1;
を利用することができます.
&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`
/dev の更新
DEVFS
もし, DEVFS を利用しているなら, この作業はおそらく必要ないでしょう.
安全のため, これはいくつかの段階に分けて行ないます.
/var/tmp/root/dev/MAKEDEV を
/dev にコピーします.
&prompt.root; cp /var/tmp/root/dev/MAKEDEV /dev
ここで, /dev のファイル一覧を記録しておきます.
この一覧は, 各ファイルの許可属性, 所有者, メジャー番号, マイナー番号が
含まれている必要がありますが, タイムスタンプは含まれていてはいけません.
これを行なう簡単な方法は, &man.awk.1; を使って,
いくつかの情報を取り除くことです.
&prompt.root; cd /dev
&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out
デバイスファイルをつくり直します.
&prompt.root;
もう一度, ディレクトリのファイル一覧を記録します.
今回は /var/tmp/dev2.out です.
この段階で, この二つのファイル一覧を調べて
作成に失敗したデバイスを探して下さい.
違いは一つもないはずなのですが, 安全のために一応チェックして下さい.
&prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.out
次のようなコマンドを使用し, ディスクスライスエントリを
再作成することで, ディスクスライスの矛盾を検出することができます.
&prompt.root; sh MAKEDEV sd0s1
適当な組み合わせは, 環境によって異なります.
/stand の更新
この段階は, 完全な更新を行なう場合にだけ必要な内容を含んでいます.
悪影響はありませんので, 省略しても構いません.
完全な更新を行なうために,
/stand にあるファイルも同じように
更新したいと考えるかも知れません.
これらのファイルは, /stand/sysinstall という
バイナリファイルへのハードリンクです. このバイナリファイルは,
他のファイルシステム(特に /usr )が
マウントされていない場合にも動作できるよう,
静的にリンクされていなければなりません.
&prompt.root; cd /usr/src/release/sysinstall
&prompt.root; make all install
1998 年 4 月 2 日以前のソースの場合
もし, 1998 年 4 月 2 日より古いソースコードを使っているか,
Makefile のバージョンが 1.68
以降(FreeBSD-CURRENT および FreeBSD-3.X の場合),
1.48.2.21 以降(FreeBSD-2.2.X の場合)でなければ,
次のように NOSHARED=yes
オプションを追加する必要があります.
&prompt.root; make NOSHARED=yes all install
新しいカーネルのコンパイルとインストール
新しいシステムにおけるアドバンテージを完全に得るために,
カーネルの再コンパイルをすべきです.
再コンパイルは, ある種のメモリ構造が変更された時には必須です.
その場合, &man.ps.1; や &man.top.1; のようなプログラムは,
カーネルとソースコードのバージョンが一致しないと
正常に動作しないでしょう.
新しい kernel をコンパイルするには,
FreeBSD ハンドブックの指示にしたがってください.
過去に自分で設定したカーネルを構築している場合には,
LINT コンフィグレーションファイルを注意深く調べて,
利用できる新しいオプションがあるかどうか確かめて下さい.
この文書の以前の版では,
カーネルの再構築の前に再起動することを推奨していました.
これは以下の点で誤りです.
&man.ps.1;, や &man.ifconfig.8;,
&man.sysctl.8; といったコマンドが動作しなくなる恐れがあります.
そうなると, マシンがネットワークに接続できなくなってしまいます.
&man.mount.8; のような基本的なユーティリティが機能しなくなり,
/ や /usr 等を
マウントできなくなってしまうかも知れません.
これは, -STABLE の候補を追いかけている場合には
あまり発生することはありませんが,
-CURRENT を追いかけていて,
大規模なマージが行なわれている間には良く起こります.
ローダブルカーネルモジュール (FreeBSD-3.X 以前は
LKM と呼ばれていましたが, FreeBSD-3.X 以降は KLD
と呼んでいます)は world
の一部として
構築されるため, 古いカーネルがクラッシュする可能性があります.
これらの理由から, どんな場合においても,
再起動する前に新しいカーネルを再構築し, インストールすることが
最も良い手順になります.
新しいカーネルは, make world
(あるいは make installworld ) が完了した後で
構築しなければなりません. もし, そうしない場合には
(おそらく, あなたはシステムを更新する前にカーネルが構築されることを
確認したいのでしょう) 問題が起こるかも知れません. それは,
カーネルソースに対して &man.config.8; コマンドが古いことが原因です.
その場合には, 新しいバージョンの &man.config.8;
でカーネルを構築することができます.
&prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
これは, いつもうまく行くとは限りませんので,
新しいをカーネルをコンパイルする前に
make world (あるいは make
installworld )を完了させることが推奨されています.
これで, 作業はおしまいです.
すべてがあるべき正しい場所に存在することをチェックしたら,
システムを再起動します. これは, 単に
&man.fastboot.8; を実行するだけです.
&prompt.root; fastboot
作業の完了
ここまで来れば, FreeBSD システムのアップグレードは成功です.
おめでとうございます.
さて, この時点で, 今までの間違った操作による小さな問題に
気付くことがあるかも知れません.
たとえば, 私はかつて /etc/magic
をアップグレードの途中で削除し, そのまま
/etc
にマージしてしまったことがあります.
その結果, file
コマンドは動作しなくなってしまったのです.
すぐに思いついたのは, これを修復するには
&prompt.root; cd /usr/src/usr.bin/file
&prompt.root;
だけで十分ではないか, ということでした.
変更が行なわれたら, その度にシステムの再構築が必要になるのでしょうか?
それは変更の性質によるので, なんとも言えません.
例えば, CVSup を実行したとき, 最後に実行したときから比べて
次にあげるようなファイルが更新されていたとします.
src/games/cribbage/instr.c
src/games/sail/pl_main.c
src/release/sysinstall/config.c
src/release/sysinstall/media.c
src/share/mk/bsd.port.mk
このときには, 改めてシステムを再構築する必要はありません.
わたしなら, 適切なサブディレクトリに移って
make all install を行うと思います.
しかし, もし何らかの大きな変更が行なわれているとき, 例えば
src/lib/libc/stdlib が変更されている場合には,
システムを再構築するか, もしくはそのうち,
少なくとも静的にリンクされているもの(と, わたしが追加した
他のプログラムのうち, 静的にリンクされたもの)を
作り直すことでしょう.
結局のところ, どの時点で現在のシステムをアップグレードするかは
あなたが決めることです.
2 週間ごとにシステムを再構築し, その 2 週間の変更を取り込めば
幸せかもしれませんし,
変更のあった部分だけ再構築し, 依存関係を確かめたいと考えるかも知れません.
もちろん, それらはどのくらいの頻度でアップグレードしたいか,
そして -STABLE か -CURRENT のどちらを追いかけているのかによります.
signal 12(もしくは他のシグナル番号)のエラーがたくさん出て
コンパイルが失敗します. 何が起こっているんでしょうか?
これは通常, ハードウェアに問題があることを示しています.
システムの再構築は, ハードウェアに対する負荷耐久試験を行なうための
有効な手段の一つで, メモリに関係する問題がよく報告されます.
その大部分は, コンパイラが奇妙なシグナルを受け取り,
不可解な異常終了となることで発見されます.
本当にこの問題によるものかどうかは, 再構築をもう一度実行し,
異なる段階で異常終了が発生するか, ということから確認できます.
この場合には, マシンの部品を交換して, どの部分が悪いのかを
調べてみることくらいしかできることはありません.
終了したら /usr/obj を削除しても
かまいませんか?
それはあなたが次の機会に,
システムの再構築をどう行なうつもりなのかによります.
/usr/obj には,
コンパイルの段階で生成された
すべてのオブジェクトファイルが含まれています.
通常 /usr/obj
を保存しておいても, あまり意味はありません.
削除すれば, 大きなディスクスペースを
(現在はだいたい 150MB あります) 解放することができます.
しかし, もしあなたが何を行なおうとしているのか理解しているなら,
この段階を省略して
もし, このような危険を承知した上でシステムの再構築を行なう場合には,
次のように変数 NOCLEAN を定義して構築します.
&prompt.root; make -DNOCLEAN world
構築を中断した場合, その構築を途中から再開することはできますか?
それは, あなたが問題に気付く前に,
どれだけの作業を終えているかによって変わります.
一般的に (そしてこれは確実でしっかりした
規則ではありませんが),
make world
の過程では,
基本的なツール ( &man.gcc.1;, や &man.make.1; のようなもの)
や, システムライブラリの新しいコピーが作成されます.
その後まず, これらのツールやライブラリはインストールされてから
自分自身の再構築に使われ, もう一度, インストールされます.
全体のシステム (ここでは &man.ls.1; や &man.grep.1; といった
標準的なユーザプログラムを含みます) は,
その新しいシステムファイルを用いて作り直されることになります.
もし, 再構築が最終段階に入っていること
が(記録しておいた出力を見たりすることで)わかっていたら,
(全く悪影響を与えることなく)次のようにすることができます,
… fix the problem …
&prompt.root; cd /usr/src
&prompt.root; make -DNOCLEAN all
これは, 前回の make world
の作業をやり直しません.
次のメッセージ
--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
が make world
の出力にある場合には,
上のようにしてもほとんど悪影響が現れることはありません.
もしこのメッセージがないとか, よく分からないという場合には,
安全を確保し, 後悔するようなことがないよう,
システムの再構築を最初からやり直しましょう.
あるマシンを
すべてのコンパイル作業をあるマシンで行ない,
構築されたものを他のマシンにネットワークを経由で
make install
することができるかどうかは,
よく FreeBSD メーリングリストで尋ねられます.
これはわたしが行った作業ではありませんので,
下に書かれている提案は, 他の人々から頂いたか,
Makefile から推論したものです.
取るべき適切な方法については,
利用している FreeBSD のバージョンに依存します.
アップグレードしたマシンでは, この作業を行った後に
/etc や /dev の
更新を行わなくてはなりません.
2.1.7 とそれより古いものについて, Antonio Bemfica は
次に示すような方法を教えてくれました.
Date: Thu, 20 Feb 1997 14:05:01 -0400 (AST)
From: Antonio Bemfica <bemfica@militzer.me.tuns.ca>
-To: freebsd-questions@freebsd.org
+To: freebsd-questions@FreeBSD.org
Message-ID: <Pine.BSI.3.94.970220135725.245C-100000@militzer.me.tuns.ca>
Josef Karthauser は質問しました:
> どなたかネットワークを通してマシンをアップグレードするよい方法は知りませんか
まず, メインとなるマシンで make world などをします.
そして次のように, リモートのマシンから / や /usr をマウントします:
main_machine% mount remote_machine:/ /mnt
main_machine% mount remote_machine:/usr /mnt/usr
そして, /mnt をインストール先に指定して 'make install' とします:
main_machine% make install DESTDIR=/mnt
これをネットワーク上の他のマシンについても繰り返してください.
わたしの場合には, これでうまくいきました.
Antonio
この仕組みは (わたしの知る限り) NFS サーバ上の
/usr/src が書き込み可能である場合にのみ
きちんと動作します. FreeBSD-2.1.7 とそれ以前では,
この作業に install ターゲットを使います.
FreeBSD-2.1.7 と FreeBSD-2.2.0 の間で
reinstall
ターゲットが導入されました.
上にあげた FreeBSD-2.1.7 向けの方法に加え,
install
の代わりに reinstall
を
使うことができます.
この方法では, NFS サーバ上の /usr/src
ディレクトリへの書き込み権限は必要
ありません .
Makefile の 1.68 から 1.107 の間のバージョンには,
このターゲットに関するバグがありました.
それは NFS サーバへの書き込み権限が
必要になる というもので,
このバグは FreeBSD-2.2.0 がリリースされる前に修正されました.
この時期の -STABLE が動いている古いサーバでは,
問題になるかも知れません.
FreeBSD-2.2.5 以降のバージョンでは,
buildworld
と
installworld
ターゲットが利用できます.
これらを使ってソースツリーを一つのマシンで構築し,
/usr/src と
/usr/obj をリモートマシンで
NFS マウントして, そこからインストールすることができます.
どのようにすれば make world を高速化できますか?
シングルユーザモードで動かしてください.
/usr/src と
/usr/obj ディレクトリを,
異なるディスク上の別のファイルシステムに置いてください.
また可能ならば, 異なるディスクコントローラに接続された
ディスクを使って下さい.
さらに高速化するには, これらのファイルシステムを
ccd
(連結ディスクドライバ) デバイスを
使って, 別々なディスク上に置いてください.
プロファイル版の作成を無効化して下さい.
(/etc/make.conf で
NOPROFILE=true
をセットします)
普通, それが必要になることはありません.
また, /etc/make.conf の中の
CFLAGS
を,
-O -pipe
のように指定しましょう.
-O2
の最適化はさらに多くの時間を必要とし,
しかも -O
と -O2
の
最適化には, ほtんど差はありません.
-pipe
を指定することで,
コンパイラはテンポラリファイルの代わりにパイプを利用します.
その結果, (メモリの利用は増えますが)ディスクアクセスが減ります.
(もしあなたが十分に最近のバージョンの FreeBSD を使っているなら)
複数のプロセスを並列に実行させるため,
make に -j<n> オプションを指定してください.
これはプロセッサが単一か複数かによらず,
どちらも同様に恩恵を得ることができます.
/usr/src のある
ファイルシステムを, noatime
オプションを付けてマウント(もしくは再マウント)してください.
これは, そのファイルシステムにおいて,
最後にアクセスされた時刻の書き込みを抑制します.
おそらく, この情報が必要になることはないでしょう.
noatime
が利用可能なのは,
FreeBSD-2.2.0 以降です.
&prompt.root; mount -u -o noatime /usr/src
上の例は,
/usr/src 自身が独立したファイルシステムで
あることを想定しています.
もしそうでないときには (例えば /usr の
一部である場合には),
/usr/src ではなく
適切なマウントポイントを指定する必要があります.
/usr/obj のあるファイルシステムを,
async
オプションをつけてマウント (もしくは
再マウント) してください. これによって,
ディスクへの書き込みが非同期になります.
つまり, 書き込み命令はすぐに完了するのに対し,
実際にデータがディスクに書き込まれるのは, その数秒後になります.
これによって, 書き込み処理の一括化が可能になるため,
劇的なパフォーマンスの向上が期待できます.
このオプションを指定すると, ファイルシステムは
壊れやすくなってしまうことに注意してください.
このオプションを付けていて, 突然電源が落ちた場合には,
再起動後にファイルシステムが復旧不能になる可能性が
非常に高くなります.
もし, /usr/obj 自身が独立した
ファイルシステムであるならば, これは問題になりません.
しかし, 同じファイルシステムに, 他の貴重なデータを置いているときには,
このオプションを有効にする前に,
バックアップをきちんと取っておきましょう.
&prompt.root; mount -u -o async /usr/obj
もし /usr/obj 自身が
ファイルシステムでない場合には, 適切なマウントポイントを指すように,
上の例の名前を置き換えて下さい.
-
-
- 貢献してくれた人々
-
-
- 次にあげられているのは, 何らかの形でこの文書に貢献された方々です.
- それは, 変更点や改良点, 間違いの指摘を直接教えてくださったり,
- わたしがそのまま参考資料とさせていただいた, FreeBSD メーリングリストに
- 投稿されたメッセージなどによるものです. ここに, みなさんへの感謝の意を表します.
-
-
-
-
- Antonio Bemfica,
- bemfica@militzer.me.tuns.ca
-
-
-
- Sue Blake, sue@welearn.com.au
-
-
-
- Brian Haskin, haskin@ptway.com
-
-
-
- Kees Jan Koster, kjk1@ukc.ac.uk
-
-
-
- A Joseph Kosy, koshy@india.hp.com
-
-
-
- Greg Lehey, grog@lemis.com
-
-
-
- Wes Peters, softweyr@xmission.com
-
-
-
- Joseph Stein, joes@wstein.com
-
-
-
- Studded, studded@dal.net
-
-
-
- Axel Thimm,
- Axel.Thimm@physik.fu-berlin.de
-
-
-
- Matthew Thyer,
- Matthew.Thyer@dsto.defence.gov.au
-
-
-
diff --git a/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
index 958ffb261b..d9381c72ba 100644
--- a/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
@@ -1,789 +1,789 @@
PGP 公開鍵
原作: 不明.
訳: &a.jp.kiroh;.
署名を検証したり, コアチームメンバやオフィサに暗号メー
ルを送りたい場合のために, PGPの公開鍵を添付します.
-
+
オフィサ
FreeBSD Security Officer
security-officer@FreeBSD.org
FreeBSD Security Officer <security-officer@FreeBSD.org>
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----
&a.imp;
Warner Losh <imp@village.org>
aka <imp@FreeBSD.org>
Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----
-
+
コアチームメンバ
&a.asami;
Satoshi Asami <asami@cs.berkeley.edu>
aka <asami@FreeBSD.org>
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----
&a.jmb;
Jonathan M. Bresler <jmb@FreeBSD.org>
f16 Key fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----
&a.ache;
Andrey A. Chernov <ache@FreeBSD.org>
aka <ache@nagual.pp.ru>
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----
&a.jkh;
Jordan K. Hubbard <jkh@FreeBSD.org>
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
BiMRuaw=
=C/Jw
-----END PGP PUBLIC KEY BLOCK-----
&a.phk;
Poul-Henning Kamp <phk@FreeBSD.org>
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
e3jh8w62JsLBWry/YMWRMnI=
=A1Tu
-----END PGP PUBLIC KEY BLOCK-----
&a.rich;
Rich Murphey <rich@FreeBSD.org>
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----
&a.jdp;
John D. Polstra <jdp@polstra.com>
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----
&a.peter;
Peter Wemm <peter@FreeBSD.org>
aka <peter@spinner.dialix.com>
aka <peter@haywire.dialix.com>
aka <peter@perth.dialix.oz.au>
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----
&a.joerg;
Type Bits/KeyID Date User ID
pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
Joerg Wunsch <joerg_wunsch@interface-business.de>
Joerg Wunsch <j@uriah.heep.sax.de>
Joerg Wunsch <j@interface-business.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=97h7
-----END PGP PUBLIC KEY BLOCK-----
-
+
開発者
&a.joe;
Type Bits/KeyID Date User ID
pub 768/7EBDECB1 1996/12/19 Josef L. Karthauser <joe@pavilion.net>
joe@tao.org.uk
joe@uk.freebsd.org
joe@FreeBSD.org
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQBtAzK5TJQAAAEDAKlRtbnhuBNWwq+hkYyubUzCYZu60ZFtwdkCgyBurSzTmfMG
1ylVOdwzpgFL8JHRAGhzugRvZqRiCrCl+CvYaeW2+ee3Yw+brl6YEqLMxy0ap2kD
NbpZ7LIO7AMffr3ssQAFEbQmSm9zZWYgTC4gS2FydGhhdXNlciA8am9lQHBhdmls
aW9uLm5ldD6JAJUDBRA3DNxYDu2852ZqdCEBAXrwBACTRn6uz+uFHxi9nj8qdg14
m3SvBJ58i82IdyhuD5m04/Rgc3Bwk1VDY2eKHuILcgDInd94EePpHTxMvjblfImn
No9yqKYQw+V2zbsa8idTVDb5eNWGdRmVndjY95ZVKuhhIlwqLJELvKKbYZjjSabl
ijn+lvEEl+gO4avcQZnOjIkAlQMFEDRSgYdv0qcS0gZ4vQEBq/cD+gJsogBSFwYl
otle1JGgq1lkIq46uJWS8h61QL9+wnKQ3l19VElXK3/s/HUqBZagKyrF7QSs1dhg
T/RKSr/kdG0dPhLhqESgzii9CS6MgHM8CnmP7oDP78i1yAkVL9bJ/a22Il+YZNlt
r+XOn9EivaFojjHFQy5a+7e/HEXbgtwMiQD2AwUQMxRrf6ZKZnTBjNYdAQENIgcH
RcYYGiOYT0FAqSvAlHPunpPhO+9TBKD5FP307YtUTHdI19Y+LgFT599ond3wfArR
K3ue6D1G6//kbemfLZVxOJ+PRpJ0jIqZQ//7mKAI3VGu4vGO0EGQLkzIfwiVaCwa
8jZh5406CaqE7DkXVypvcVkL3hdqD8o16qht8Y23rjrEUgRYIIWUGftCAHWMZEq3
NqU/nqzgIv72PMEC3jBjdPld84GOiX9e3XjOSur6uLMRj87e9qce73sYUsGb2/cf
ypx8Hy/FN/FVUKbW4/ddHOeW75vBGgtIwY0R+eDW1wWXiQB1AwUQMrlMlA7sAx9+
veyxAQFftQL/T64Xc63YXllDIVGw0ZQtM0cdolYzP5OAu2Pvb0iWiJia6SkxePJo
FyNuWEO0obBpeP/QuapnceYUBNiheT4gRccEO1+VjFRuAiZb7+Huwh4FXrRbhJte
3FmOE07jacQ9tA5qb2VAdGFvLm9yZy51a4kAdQMFEDgPy5gO7AMffr3ssQEBYGsC
/iIslOxLXMgz9BSw1ndflqYOImPtn4OQJAG+eyZInVKfZDhyEHtO6ID7zRNx+0wh
fAgEU760e8V5rEFea9U0/qY7QneanDRGI+rP81V/fnP3wdZBCGXDNMCM6ofcuTP6
MbQSam9lQHVrLmZyZWVic2Qub3JniQB1AwUQOA/Lgg7sAx9+veyxAQHeXgL8DJQ1
xeeFLQOrg4vI5nfQOjPJqaZ4xpPv1k5wIjPRElGj7QACZVX5L/bEzhK+7fggSXxB
b4cmEhiDOIFOBR6HWL/RnMimoGtC53OHKRrA43/eqB/saCbTfN4+KAypw1WatA9q
b2VARnJlZUJTRC5vcmeJAHUDBRA4D8tRDuwDH3697LEBAZU6Av0e8n+hesovDEkn
ox3JKhC1L33jXu0nOQZ/2Yz6jY1icghgy/L2KO57+T2YBV6DGpk4IlY9jZJRRKti
KCHSMahng7whIHNSugWqzLNanK+YPfXC2CsUI02w1srjFcDurBg=
=O/Rl
-----END PGP PUBLIC KEY BLOCK-----
&a.cpiazza;
Type Bits/KeyID Date User ID
pub 2048/FB722BE5 1996/04/07 Chris Piazza <cpiazza@jaxon.net>
Chris Piazza <cpiazza@home.net>
Chris Piazza <cpiazza@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQENAzFnIKcAAAEIANA6TShD9jrbc0IODhZooybcqM04h94IOaX5HPcYo/5FHSFB
ezBuea19iBB/spGQUfpDAuGuqsz1DCCtL0OBz1cn4r74OMqrY4bQHKunCF8hUL8H
hRVn33B5KmljTHo8jFQAV/8QwvU6OUaLgM4CoZsMdrgfSaAxGNGu+RAK2xbm9KX7
BykXX+MIYRbJHpxA+25o8OZTOEC0Sa3kg94F9lT+iL1zB5s3dTPrQPzOFZCD0PdK
ByEnGt+GoFNV1j7nO26vNa0fQZTSL+bNmnO54NPE0u8gtaqhGqRN+EHbo90eJ487
XqDOI0b+XHK98y2T1lEGYmjuSLmA9xHAr/tyK+UABRG0IENocmlzIFBpYXp6YSA8
Y3BpYXp6YUBqYXhvbi5uZXQ+iQEVAwUQOD+czfcRwK/7civlAQGdqggAnDjRfVCG
QLCCncva1yLPQY2OUBz4SW4NfR4RSPbmDTs+kDJpqAN4/w76LwOry3B6Hp4MnrZP
Iv0DDzePM+5hs535wDNcU6KQwbZEyv7e9Q+dpWW6vj8hEynZYp5Vcb0VbejU9NJf
rHuSIx0cIKfztxM11csTYqPHGZcHUPy3w7BtB03ATioWt0/Ybj3vtLj36JHI1csk
yzgeHJrQ17yvcoNGno2Aqrdbf+PJ7lO/Wiy+40r6jyJmt9o5neT1kOgVvXGVOp7R
dbOQXGAZay2nxRcQALrRD7VF/ugpJke2MykL0GebFYmSOVWRjVkmLlXl/AXLS/Vw
FJ0MTMDOOq7MCbQfQ2hyaXMgUGlhenphIDxjcGlhenphQGhvbWUubmV0PokBFQMF
EDg/nOT3EcCv+3Ir5QEBc8sIAKz1sxByTTiwj8+FKKb1lFYgxXYfqUzp1dl31eFy
fTXv6thrGvBzmBtMRLVOymvBBy7VP3cLN7rtyyS3jKR+UdDZcJBKM1bF5lBCWF7T
DmpvHR79Od79pgWTiU7bkHM7LBXOEhahO9Q6SAIaIhw85LfVRV/oh2ZB+PocvyLe
iJhKehe6W+ao0ZSUDm5tlG8wrgvjKEkEAOHh/pCCxFh2zQmUwyxFljy8/OooTE37
tBaTTaVx98dQUtm59u8ITFpbmPX5mIlKu8H9R3oY1Ur6DPtHV7OTVewTBCjuatyw
FwbGcP7DLEAmmYhICwtYQOa62+ORNh2/v/GHTt+ZxHFGHuW0IkNocmlzIFBpYXp6
YSA8Y3BpYXp6YUBGcmVlQlNELm9yZz6JARUDBRA3a0Oi9xHAr/tyK+UBARC7B/9+
CaKMlF11O8TpP3FfWUpwMwdMynaebd3Xx3U01DleHqnqfy8PwhZY9jwcvgggaXSN
7FUUzRocsTTEbFj7hZHAYRfNH+KcXr3EmB5b82M10NHeqWIFF8vcpEwM6lvFIbne
Mve1eVw4S2Vl0yHQJvoVUqAvlFpN3dgFOg69qBPe6qWsaNDPN+dwUorWckV613EP
Gbxp9cs2j3awBnENjP16jkmEKuQPcAnl6l6XgP1X27PKICkPUTLO+CKfRq15Qs9p
evhyqAaUMNU/GYMqs5sceDQq1PUpmE1syGCZUQmvYfXfRmujHdZnDRDl+afN4UoH
hrCuygxmOl22RDH3aEXi
=JxBt
-----END PGP PUBLIC KEY BLOCK-----
&a.guido;
Guido van Rooij <guido@gvr.win.tue.nl>
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
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
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----
&a.brian;
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers <brian@awfulhak.org>
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers <brian@uk.OpenBSD.org>
Brian Somers <brian@uk.FreeBSD.org>
Brian Somers <brian@OpenBSD.org>
Brian Somers <brian@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=Tq7h
-----END PGP PUBLIC KEY BLOCK-----
&a.gsutter;
Type Bits KeyID Created Expires Algorithm Use
sec+ 1024 0x40AE3052 1998-07-18 ---------- DSS Sign & Encrypt
f20 Fingerprint20 = 61D4 6A28 F282 482E 1D82 D077 E31E 323D 40AE 3052
uid Gregory S. Sutter <gsutter@pobox.com>
uid Gregory S. Sutter <gsutter@zer0.org>
uid Gregory S. Sutter <gsutter@daemonnews.org>
uid Gregory S. Sutter <gsutter@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
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
AW4VTHVXOY6g
=Zu9y
-----END PGP PUBLIC KEY BLOCK-----
&a.wosch;
Type Bits/KeyID Date User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/ja_JP.eucJP/books/handbook/printing/chapter.sgml b/ja_JP.eucJP/books/handbook/printing/chapter.sgml
index 6b7ae25953..adafdc3517 100644
--- a/ja_JP.eucJP/books/handbook/printing/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/printing/chapter.sgml
@@ -1,5454 +1,5398 @@
プリンタの利用
- 原作: &a.kelly;, 1995 年 9 月 30 日
+ 原作: &a.kelly;, 1995 年 9 月 30 日.
+ 改訂: &a.jim;, 2000 年 3 月
訳: &a.jp.kimura;, 1996 年 9 月 3 日
+
+ 概要
+
FreeBSD でプリンタを使用するためには, バークレイラインプリンタ
スプーリングシステム (LPDスプーリングシステムとしても知られて
います) が機能するようにプリンタをセットアップする必要がありま す.
本節では, LPDスプーリングシステム (大抵の場合, 単にLPDと呼 ばれる)
について紹介します.
もし, LPDや他のプリンタスプーリングシステムについて既に詳しい
知識をお持ちの方は, 「
スプーリングシステムのセットアップ」から読み始めて
も結構です.
+
- スプーラは何をするか
+ はじめに
LPDはあるホストのプリンタに関する制御の一切をおこないます.
こ こで言う制御としては, 次のことが挙げられます.
ホストに接続されたプリンタ, あるいはネットワーク
上の他ホストに接続されたプリンタに対するアクセスを制御しま
す.
ファイルをプリントする要求に対して許可を与えます.
この要求は特に ジョブ
と呼ばれています.
各々のプリンタの キュー
を管理することにより,
複数のユーザがあるプリンタに対して同時にアクセスすることを
防ぎます.
ヘッダページ
(バナー または
バースト ページとしても知られています)
をプリントすることができます. これにより,
プリントアウトの山の中から自分がプリントしたジョ
ブを見つけ易くなります.
シリアルポートに接続したプリンタ用に通信パラ
メータを管理します.
ネットワーク経由で他のホスト上の, 別のLPDスプーラにジョ
ブを送ることができます.
様々なプリンタ言語やプリンタの能力に応じてジョブの
形式を整えるため,
特別なフィルタを起動することができます.
プリンタの使用に対して
課金をおこなうことができます.
設定ファイルを通して, また, 特別なフィルタプログラムを供給
することにより, 多種多様なプリンタ機器に対して, 上述の機能の
全部または一部をLPDシステムにおこなわせることができます.
-
-
+
どうしてスプーラを使うべきなのか
あなたのシステムを利用するのがあなた一人だけだとしたら, ア
クセス制御もヘッダページも
プリンタ利用に対する課金も必要ないのに,
なぜわざわざスプーラに煩わされなければならないのか疑問に思うか
もしれません.
プリンタに対する直接アクセスを許可することもできるので すが,
とにかくスプーラを使用するべきです. その理由は,
LPDはジョブをバックグラウンドで処理します. データが
プリンタに送信されるまで待つ必要はありません.
LPDではジョブをフィルタを通してプリントすることが簡
単にできます. これにより, 印刷物のヘッダに時刻や日付を入れ
たり, 特別なファイル形式 (TeX の DVI ファイルなど) をプリン
タが処理できる形式に変更することができます. これらの作業を
手動でおこなう必要がなくなります.
プリント処理をおこなうフリーのまたは商用のプログラムの
ほとんどは, システムのスプーラとやりとりするように作られて
います. スプーリングシステムをセットアップすることで, 今後
加えるかもしれない, あるいは, 既に持っている別のソフトウエ
アをより簡単にサポートすることができるでしょう.
+
- スプーリングシステムのセットアップ
+ 基本的なセットアップ
LPDスプーリングシステムを用いてプリンタを使用するためには,
プリンタ機器とLPD用ソフトウェアの両方を準備する必要があります.
本ドキュメントでは次の2段階のレベルに分けて説明をします.
プリンタを接続する方法, プリンタにどの
ように通信するかをLPDに指示する方法や, プレインテキスト
をプリンタで印字する方法については, 「
プリンタの簡単な設定」をご覧ください.
様々な形式のファイルを印字する方法, ヘッダページを
印字する方法, ネットワーク経由でプリンタに印字する方法,
プリンタを制御する方法, プリンタの使用に対する課金をおこなう
方法については「
プリンタ設定上級編」をご覧ください.
-
-
+
プリンタ設定導入編
この節では, プリンタ機器やプリンタを使用するためのLPD用ソフ
トウェアを設定する方法について述べます. この節の概要は次の通り
です.
「
プリンタ機器の設定」では,
プリンタをコンピュータに接
続するためのヒントがいくつか書かれています.
「
ソフトウェアの設定」では, LPDのスプーラ設定ファイル
/etc/printcap
の設定方法について書かれています.
データをプリンタに送るためにシリアルまたは
パラレルインタフェー スではなく,
ネットワークプロトコルを使用する場合は, 「
ネットワークにおけるデータストリームの
インタフェースを持つプリンタ」をご覧くださ い.
この節のタイトルは“プリンタ設定導入編”ですが,
実際の設定は かなり複雑です. プリンタをコンピュータに接続し,
LPDスプーラを 起動させることは一番困難な作業です.
ヘッダページを出力させたり, 課金したりするオプションの設定は,
一度プリンタがうまく動くよう になれば, とても簡単です.
-
+
プリンタ機器の設定
この節では, プリンタにPCを接続するための様々な方法について
説明しています. ここでは, ポートやケーブルの種類, FreeBSDが
プリンタとの通信に必要なカーネルコンフィグレーションについて
も言及しています.
もし, プリンタが既に接続されていて,
他のオペレーティングシステ
ム上でプリンタからの印字に成功している場合は, 「
ソフトウェアの設定」まで読み飛
ばすことが多分できるでしょう.
-
+
ポートとケーブル
最近のPC用のプリンタほとんどには次のインタフェースの一つ
もしくは両方がついています.
シリアル インタフェースでは,
プリンタにデータを
送信するためにコンピュータにあるシリアルポートが使用され
ます. シリアルインタフェースはコンピュータ業界で共通し
て使用されています. そのケーブルは容易に手に入り, また,
簡単に自作することもできます.
シリアルインタフェースには,
特別なケーブルが必要なことがときどきあり, また, 何か複
雑な通信方式選択の設定が必要になることがあります.
パラレル インタフェースでは,
プリンタにデータを
送信するためにコンピュータにあるパラレルポートを使用しま
す. パラレルインタフェースはPC業界では共通して使われてい
ます. ケーブルの入手は容易ですが, 自作するのはシリアルよ
りも難しいです. パラレルインタフェースには通常,
通信方式の選 択はなく, このため,
設定が極めて単純になっています.
パラレルインタフェースは
“セントロニクス”インタフェー
スとして知られています. これは, プリンタ用のコネクタタ
イプとして採用された後に名付けられました.
シリアルインタフェースはパラレルインタフェースより
も普通はデータの伝送速度が遅くなります.
パラレルインタフェースで は, 通常,
(コンピュータからプリンタへの) 単方向通信のみをおこな
うのに対して,
シリアルインタフェースは双方向通信をおこないます.
最近のパラレルポートの多くはプリンタ側からデータを受けとる
こともできますが, コンピュータ側にデータを送り返すことが必
要となるプリンタはほとんどありません. さらに, FreeBSDでは
双方向のパラレル通信をまだサポートしていません.
通常, プリンタで双方向通信が必要となるのは, プリンタが
PostScript 言語に対応しているときだけです. PostScript プリ
ンタは非常に冗長に動作させることができます. 事実, PostScript
によるジョブでは, プログラムを本当にプリンタ に送信します.
このことは, 印字作業を必ずしもする必要がない ことを意味し,
また, プログラムの結果をコンピュータに直接返
されるかもしれません. PostScript プリンタでは, 双方向
通信を使って, PostScript プログラムのエ
ラーや紙づまりといった問題をコンピュータに報告します. ユー
ザはそれらの情報を知りたいと思うかもしれません. さらに,
PostScript プリンタで課金作業をもっとも効率よくおこなうため
には双方向通信が必要となります. この方法では, まず, プ
リンタの現在のページカウント (起動してから今まで何枚の紙を
印字したか) の情報を得ます. 次に, ユーザのジョブをおこない,
終 了後, 再びページカウントを得ます. この2数を差によって, 課
金対象となる紙の枚数を知ることができます.
+
- それでは,
- どちらのインタフェースを使うべきなのでしょうか.
-
-
-
- 双方向通信が必要なら, シリアルポートを使ってくださ
- い.
- FreeBSDではパラレルポート上での双方向通信はまだサポー
- トされていません.
-
-
-
- 双方向通信の必要がなく, パラレルかシリアルかの選
- 択ができる場合はパラレルインタフェースを使うのが好ましい
- です. これにより, シリアルポートを他の周辺機器 (端末やモ
- デムのなど) のために残しておくことができます. また, パラ
- レルインタフェースの方がほとんどの場合高速であり, 設定も
- より簡単になっています.
-
-
-
- 結局のところは
- 動いてくれるものを使えばよいのです.
-
-
-
-
-
+
パラレルポート
プリンタをパラレルインタフェースを使って接続する場合は,
セントロニクスケーブルでプリンタと
コンピュータをつないでくださ い. 詳しい説明はプリンタ,
コンピュータ, あるいは両方に付属す
る説明書に書かれているはずです.
その際,
どのパラレルポートを使用したかを覚えておいてください.
FreeBSDでは最初のポートは /dev/lpt0 ,
2番目は /dev/lpt1 であ り,
3番目以降も同様に続きます.
-
+
-
+
シリアルポート
シリアルインタフェースを使ってプリンタを使う場合は, 適切
なシリアルケーブルでプリンタ
とコンピュータを接続してください. 詳しい説明はプリンタ,
コンピュータ, あるいは両方に付属する説
明書に書かれているはずです.
“適切なシリアルケーブル”
がよくわからないときは, 次のどれか
を試してみてください.
モデム 用ケーブルでは,
それぞれのピンは他方の
コネクタの対応するピンと線でつながっています. このタイプ
のケーブルは, “DTE-DCE”
間ケーブルとしても知られています. (訳注:
日本ではストレートケーブルという名前で売られています)
ヌルモデム 用ケーブルでは,
あるピンは対応するピ ント接続していますが, あるピン
(例えば, データ送信用とデー タ受信用のピン)
が交差して接続したり, いくつかのピンは内部
で短絡していたりします. このタイプのケーブルは,
“DTE-DTE” 間ケーブルと呼ばれています.
(訳注:日本ではクロスケーブル
という名前で売られています)
A シリアルプリンタ 用ケーブルは,
ある特定のプ リンタで必要とされ,
ヌルモデムケーブルと似ていますが, 内
部で短絡させる代わりに, ある信号を他方側に送るために使用
しています.
この他に,
プリンタ用の通信パラメータを設定する必要がありま す. 通常,
プリンタのフロントパネルやDIPスイッチによって制 御します.
コンピュータとプリンタの双方で設定できる最高の通 信速度[bps]
(ビット/秒.
ボーレート と示されているときも ある)
を選んでください. そして, データビット (7または8), パリ ティ
(偶/奇/なし), ストップビット (1または2) を選んでください.
そして, フローコントロールの有無 (制御なし, または
XON/XOFF(“イン・バンド” または
“ソフトウェア”フローコ ントロールとも呼ばれる))
を選びます. 以下に続くソフトウェア の設定のために,
ここでの設定を覚えておいてください.
-
-
+
+
-
+
ソフトウェアの設定
本節では FreeBSD の LPD
スプーリングシステムで印字をおこなうために
必要となるソフトウェアの設定について説明しています.
本節の概要は次のようになります.
プリンタで使用するポートのために, 必要があれば, カー
ネルの書き変えをおこないます. 「 カーネルの変更」で,
このためにしなくてはなら ないことを説明しています.
パラレルポートを使用している場合は, パラレルポートの
ための通信モードの設定します. 詳細は, 「
パラレルポートの通信モードを設定する
」で説明しています.
オペレーティングシステムからプリンタにデータが送ら
れているかをテストします. 「
プリンタとの通信状況を調べる」で, どのように
テストするかの提案をいくつかおこなっています.
ファイル/etc/printcap を変更し,
- LPDの設定を おこないます. 「 /etc/printcap
- ファイル」で, どのように変更するかを
+ LPDの設定を おこないます. この節で, どのように変更するかを
説明しています.
-
+
カーネルの変更
オペレーティングシステムのカーネルの
コンパイルをおこなうこと によって,
指定されたのデバイスが機能するようになります. シリ アル,
または, パラレルインタフェースをプリンタで使用する場合,
必要なデバイスがこの指定の中に含まれていなくてはなりません.
したがって,
必要なデバイスがカーネルに組み込まれていない場合, 追
加のシリアル, または, パラレルポートをサポートするために,
カー ネルの再コンパイルが必要となるかもしれません.
シリアルポートが現在使用しているカーネルで
サポートされている かどうかを調べるためには,
次のように入力します.
&prompt.root; dmesg | grep sioN
ここで, N
はシリアルポートの番号を示し, この番号は0から 始まります.
次のような出力があった場合, カーネルはそのポー
トをサポートしています.
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
パラレルポートが現在使用しているカーネルで
サポートされている かどうかを調べるためには,
次のように入力します.
&prompt.root; dmesg | grep lptN
ここで, N
はパラレルポートの番号を示し, この番号は0から 始まります.
次のような出力があった場合, カーネルはそのポー
トをサポートしています.
lpt0 at 0x378-0x37f on isa
上記の出力が得られない場合, プリンタを使うため,
オペレーティ ングシステムにパラレル, または,
シリアルポートを認識し, 使用 できるようにするためには
カーネルを変更する必要があります.
シリアルポートをサポートさせるには, 「
FreeBSDカーネルのコンフィグレーション」の節をご覧く
ださい. パラレルポートをサポートさせる場合も, その節と,
あ わせて ,
この節に続く節もご覧ください.
+
+
-
+
ポート用エントリを /dev
に追加する
カーネルがシリアル, または, パラレルポートを通じての通
信をサポートしていたとしても, システム上で動いているプログ
ラムがデータの送受信をおこなうための
ソフトウェアインタフェース がさらに必要になります.
そのインタフェースは, /dev
ディレクトリにあるエントリに相当します.
/dev
エントリにポートを加えるために
&man.su.1; コマンドで root になります. suコマンド
でパスワードを聞かれたら, ルート用のパスワードを入力し
ます.
/dev
ディレクトリに移動します.
&prompt.root; cd /dev
次のように入力します.
&prompt.root; ./MAKEDEV port
ここで, port は,
作成するポート名です. 1番目 のパラレルポートのときは
lpt0 に, 2番目のときは
lpt1 になり, 以降同様になります.
1番目のシリア ルポートのときは,
ttyd0 に, 2番目のときは
ttyd1 になり,
これも以降同様となります.
次を入力し, デバイスのエントリができたか確認し
ます.
&prompt.root; ls -l port
-
パラレルポートの通信モードを設定する
パラレルインタフェースを使用している場合, FreeBSDでは,
割り込み駆動型にするか,
プリンタとの通信の状況をカーネルに監
視させるかのいずれかを選択できます.
GENERIC
カーネルでは割り込み駆動 方式が,
デフォルトになっています. この方式では,
オペレーティングシ
ステムはプリンタがデータを受け付けられるかどうかを調べ
るために, IRQ ラインを一つ使用します.
監視 方式では,
オペレーティングシステムにプ
リンタがもっとデータを受け付けられるかどうかを繰り返し
尋ねるように指示します. そして, 受け付けるという応答を
受けたとき,
カーネルはさらなるデータを送信します.
割り込み駆動方式は, いくらか高速になりますが, 貴重な
IRQ ラインを一つ消費します.
うまく機能するものをお使いください.
通信モードを設定するためには2つの方法があります.
1つはカー
ネルを変更することで, もう一つは
&man.lptcontrol.8; プログラムを使用する方法です.
カーネルを設定することによって,
通信モードを変更する.
カーネルコンフィグレーションファイルを変更しま す.
lpt0
のエントリを探すか追加してください. 2番目
のパラレルポートを設定するときは, 代わりに
lpt1 を使います. 以下,
3番目のポートは lpt2 となってい
きます.
イベント駆動方式にする場合は,
irq 指 定を追加します.
device lpt0 at isa? port? tty irq N vector lptintr
ここで, N
はパラレルポート用の IRQ 番号で す.
監視方式を使用する場合は,
irq を追加 してはいけません.
device lpt0 at isa? port? tty vector lptintr
ファイルをセーブし, config プログラムを起動 し,
カーネルの構築, インストールをおこないます. そして, リ
ブートしてください. 詳細は, 「
FreeBSDカーネルのコンフィグレーション」を参照
してください.
&man.lptcontrol.8;
で通信モードを設定する場合
lptN
をイベント駆動方式に設定する場合は,
次のように入力します.
&prompt.root; lptcontrol -i -u N
lptN
を監視方式に設定する場合は, 次のように入力します.
&prompt.root; lptcontrol -p -u N
これらのコマンドを /etc/rc.local
ファイルに追加
しておくと, システムをブートする度に通信モードを設定する
ことができます. 詳細については,
&man.lptcontrol.8; をご覧ください.
プリンタとの通信状況を調べる
スプーリングシステムの設定に進む前に, オペレーティング
システムがプリンタにデータを送ることに成功しているかどうか
を確かめるべきでしょう. これにより, 印字がうまくいかないと
き, プリンタとの通信が問題なのか, スプーリングシステムが問
題なのかを分けて調べることがかなり容易になります.
プリンタをテストするためには,
プリンタに何かのテキストを送
信してみます. 送信した文字をすぐに印字してくれるプリンタに
は, &man.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 のような言語を仮定しており, Hewlett Packard
の PCL は考慮していません. PCL は非常に機能的なの
ですが,
プレインテキストにエスケープシーケンスを混ぜること
ができます. PostScript ではプレインテキストを直接印字
することはできません.
このような種類のプリンタ言語に対して は,
特別な対応をおこなわなければなりません.
パラレルポートのプリンタとの接続を調べる
この節では, FreeBSDがパラレルポートに接続されたプリ
ンタと通信できているかどうかを調べる方法について説明し
ています.
パラレルポートのプリンタをテストするために
&man.su.1; コマンドで root になります.
プリンタにデータを送ります.
プリンタがプレインテキストを印字できる場合,
&man.lptest.1; コマンドを使います.
次のように入力してください.
&prompt.root; lptest > /dev/lptN
ここで, N
はパラレルポートの番号で, 番号は
0から始まります.
プリンタが PostScript か他のプリンタ
言語を使用している場合, そのプリンタに簡単なプロ
グラムを送信してください. 次のように入力します.
&prompt.root; cat > /dev/lptN
そして, 一行一行,
プログラムを慎重に 入力して
下さい. RETUREN または ENTER キーを入力してしま
うと, その行は編集できなくなります. プログラムの
入力が終わったら, CONTROL+Dか, あなたが設定して
いるファイル終了のキーを押してください.
もしくは, プログラムを入力したファイルがある
場合は, 次のように入力してください.
&prompt.root; cat file > /dev/lptN
ここで, file
はプログラムが格納されていて,
プリンタに送信するファイルの名前です.
これで何かがプリントされることでしょう.
印字されたテキ
ストがおかしくても心配しなくても構いません. それについ
ては, 後で修正します.
シリアルポートのプリンタとの接続を調べる
この節では, FreeBSDがシリアルポートに接続されたプリ
ンタと通信できているかどうかを調べる方法について述べられ
ています.
-
+
シリアルポートのプリンタをテストするために
+
&man.su.1; コマンドで root になります.
/etc/remote
ファイルを編集します. 次の エントリを加えてください.
printer:dv=/dev/port :br#bps-rate :pa=parity
ここで, port
シリアルポート (ttyd0 ,
ttyd1 など) のデバイスエントリで,
bps-rate は
プリンタとの通信の転送速度[bit/秒],
parity はプリ
ンタとの通信で必要とされるパリティ
(even , odd ,
none ,
zero のいずれか) を表わしていま
す.
次の例は,
プリンタをシリアルケーブルでパリティなし, 転送速度
19200bpsで第3番目のシリアルポートに接続した場
合です.
printer:dv=/dev/ttyd2:br#19200:pa=none
&man.tip.1; コマンドでプリンタと接続します. 次のよ
うに入力してください.
&prompt.root; tip printer
これがうまくいかなかった場合は,
/etc/remote を 編集して,
/dev/ttydN
の代わりに
/dev/cuaaN
を試してみてください.
プリンタにデータを送ります.
プリンタがプレインテキストを印字できる場合,
&man.lptest.1; コマンドを使います.
次のように入力してください.
~ $lptest
プリンタが PostScript か他のプリンタ
言語を使用している場合, そのプリンタに簡単なプロ
グラムを入力します. 一行一行,
プログラムを慎
重に 入力してください.
バックスペースキーや他の編 集用のキーは,
プリンタの制御コードに割り当てられ
ているかもしれません. プログラムが終了したことを
プリンタに伝えるための特別なファイル終了キーを入
力する必要があるかもしれません. PostScript
プリンタの場合, CONTROL+Dを入力します.
もしくは, プログラムを入力したファイルがある
場合は, 次のように入力してください.
~ >file
ここで, file
はプログラムが格納されている
ファイル名です.
&man.tip.1; コマンドでファイルを送
信した後は, ファイル終了を表わすキーを入力する必要
があります.
これで何かがプリントされることでしょう.
印字されたテキ
ストがおかしくても心配しなくても構いません. それについ
ては, 後で修正します.
スプーラに許可を与える:
/etc/printcap ファイル
ここまでで, プリンタはコンピュータに接続され, (必要なら)
プリンタと通信できるようにカーネルを変更し, 簡単なデータをプ
リンタに送信することができているはずです. これで, LPDにプリ
ンタへのアクセスを
制御させる設定をおこなう準備が整いました.
LPDの設定は /etc/printcap
を編集することでおこないます.
LPDスプーリングシステムはスプーラが使われる毎にこのファイル
を参照します. そのため, ファイルを更新するとすぐにその変更が
反映されます.
&man.printcap.5; ファイルの書式は簡単です.
/etc/printcap
の編集はお好みのテキストエディタをお
使いください. このファイルの書式は,
/usr/share/misc/termcap や
/etc/remote
といった他のケイパビリティファイルと一致しています.
この書式
のついての詳細な情報については
&man.cgetent.3; をご覧ください.
スプーラの単純な設定法は,
次のステップでおこないます.
プリンタに名前 (と簡単な別名2〜3個) を付け, それを
/etc/printcap ファイルに記述します.
これについ ては, 「
プリンタに名前を付ける」
を参照してください.
sh の項目を追加することで,
ヘッダページの出 力を禁止します (デフォルトは許可).
これについては, 「
ヘッダページの印字を禁止する」
を参照してください.
スプール用のディレクトリを作成し, その位置を
sd 項目で指定します. これについては,
「
スプーリングディレクトリの作成」
を参照してください.
プリンタを使用するために /dev
エントリを 設定し, /etc/printcap の
lp 項目でそのエ ントリを指定します.
これについては, 「
プリンタデバイスの特定」 を参照してください.
プリンタをシリアルポートに接続した場合は,
fs , fc ,
xs , xc
の項目を設定する必要があります. こちらについては,
「
スプーラのための通信パラメータの設定」
を参照してください.
プレインテキスト用の入力フィルタのインストールを
おこないます. 「
テキストフィルタのインストール」
を参照してください.
&man.lpr.1; コマンドで何かを印字することで設定のテス
トをおこないます.
印字してみよう と
トラブルシューティング を参照してください.
PostScript プリンタのような, プリンタ言語を
使用しているプリンタには, プレインテキストを直接印字させる
ことができません. 上にアウトラインを示し, 以下の節で説明す
る簡単な設定方法の説明では, そのようなプリンタを設置してい
る場合は, プリンタが認識できるファイルだけを印字の対象とし
ているという仮定をしています.
多くの場合,
利用者はシステムに設置されているプリンタすべてでプ
レインテキストが印字できることを期待しています. 印字作業を
おこなうためにLPDのインタフェースを利用するプログラムでも,
通 常, そのような仮定を置きます.
プリンタ言語を使用するプリン タを設置しており,
そのプリンタ言語で記述されたジョブと,
これに加えて ,
プレインテキストのジョブも印字できるよ うにしたいならば,
上で示した簡単な設定方法に加えて, さら
なる設定をおこなうことを強くお勧めします. すなわち,
原始的なプ レインテキストから PostScript (もしくは,
他のプリンタ 言語)
に変換するプログラムをインストールしてください. 「
プレインテキストのジョブを PostScript
プリンタで印字する」
で, そ れをどのようにおこなえばよいのかが
説明されています.
- 日本語を印字したい場合は, プリンタ言語を使用し
+ 訳注:
+ 日本語を印字したい場合は, プリンタ言語を使用し
ていない「日本語プリンタ」についても,
プリンタ固有のエスケー プシーケンスを送る必要があります.
また, 漢字コードをプリン
タが設定しているものに変換したりする必要があり, 各プリンタ
毎に, 日本語用のフィルタが必要になります.
プリンタに名前を付ける
最初の (簡単な) ステップで, プリンタの名前を考えます.
プ リンタには別名をいくつか付けることもできるので,
機能的な名前
でも風変わりな名前でもどちらを選んでもまったく
問題はありません.
少なくとも1つのプリンタには,
/etc/printcap の中 で,
lp という別名を持たせるべきでしょう.
この名前は デフォルトのプリンタ名になっています.
ユーザが環境変数 PRINTER を設定しておらず,
かつ, LPDコマンドのコマンドラインでプリ
ンタの名前が指定されていない場合, lp
がデフォルトのプリ ンタ名となり,
そのプリンタに出力されます.
それから, これは共通の慣習ですが,
プリンタの最後の別名には,
メーカーやモデル名を含むプリンタの完全な名称をつけることに
なっています.
名前と別名のいくつかを決めたら,
/etc/printcap ファ イルに設定します.
プリンタ名は一番左のカラムから書き始めま す.
別名はそれぞれ縦棒によって区切られ, 最後の別名の後ろに
コロンを置きます.
次の例では, 2台のプリンタ (Diablo 630 ラインプリンタと
Panasonic KX-P4455 PostScript レーザライタプリンタ) が定義
されている /etc/printcap
のスケルトンを記しています.
#
# /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
この例では, 最初のプリンタに rattan
という名前と別名 として, line ,
diablo , lp そして
Diablo 630 Line Printer
が付けられています. 別名とし て lp
があるので, このプリンタはデフォルトのプリンタとなっ
ています. 2番目は bamboo と名付けられ,
別名として, ps と
PS , S ,
panasonic , Panasonic KX-P4455
PostScript v51.4 が付けられていま す.
スプーリングディレクトリの作成
スプーラの簡単な設定の次のステップでは,
スプーリン
グディレクトリ を作成します.
プリンタに送られるジョブ は,
その印字が終了するまでこのディレクトリに置かれます. また,
他のたくさんのスプーラもこのディレクトリにファイ
ルを置きます.
様々な事情によりスプーリングディレクトリは, 通常, 慣例
として /var/spool の下に置きます.
また, スプーリングディレクトリの内容はバックアップをす
る必要はありません.
&man.mkdir.1; によってディレクトリを
作るだけでスプーリングディレクトリの復旧は完了します.
スプーリングディレクトリの名前は, これも慣例ですが, 次
のようにプリンタの名前と同じにします.
&prompt.root; mkdir /var/spool/printer-name
しかしながら, ネットワーク上に使用可能なプリンタがたく
さんあるならば, LPDで印字するための専用のディレクトリに
スプーリングディレクトリを置きたいと思うかもしれません.
例に出てきたプリンタ rattan と
bamboo につい て, この方式を採用すると,
次のようになります.
&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bamboo
各ユーザが印字するジョブのプライバシを守りた
いと考えているならば, スプーリングディレクトリを保護し
て, これを誰からでもアクセスできないようにしたいと思う
かもしれません. スプーリングディレクトリは, deamon ユー
ザと daemon グループに所有され, 読み込み, 書き込み, 検
索可能であり, 他からはアクセスできないようにするべきで
す. 例題のプリンタに対して, 次のようにすることにしましょ
う.
&prompt.root; chown daemon.daemon /var/spool/lpd/rattan
&prompt.root; chown daemon.daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bamboo
最後に, /etc/printcap ファイルで,
これらのディ レクトリの位置を LPD に伝える必要があります.
スプーリ ングディレクトリのパス名は sd
項目で指定します.
#
# /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:
+ :sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:
+ :sh:sd=/var/spool/lpd/bamboo:
プリンタ名が最初のカラムから始まっており, そのプリンタ
に関して記述される他のエントリは TAB で字下げされてい
ること, 各行がバックスラッシュで終わっていることに注意
してください.
sd
によりスプーリングディレクトリが指定されていな い場合,
スプーリングシステムは /var/spool/lpd
デフォルト値として使用します.
プリンタデバイスの特定
「 ポート用エントリを /dev
に追加する」では, FreeBSD でプリン
タとの通信に使用される /dev
ディレクトリ内の エントリを特定します. そして, LPD
にその情報を伝えま す. 印字するジョブを受け取ると,
スプーリングシステムは,
(プリンタにデータを渡す義務がある) フィルタプログラムに
代わって指定されたデバイスをオープンします.
/etc/printcap ファイルで
lp 項目を使って
/dev エントリを記入します.
ここでの例では, rattan
は1番目のシリアルポートに, bamboo
は6番目のシリアルポートに接続されているこ とにしましょう.
このとき, /etc/printcap には
次のようになります.
#
# /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:\
- :lp=/dev/ttyd5:
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:
/etc/printcap でプリンタの
lp 項目が指定 されていない場合は, LPD
はデフォルトとして /dev/lp
を使用します. /dev/lp は, 現在の
FreeBSD には存在していません.
設置したプリンタがパラレルポートに
接続されている場合は,
「
テキストフィルタのインストール」
まで読み飛ばしてください.
そうでない場合は, 次節の説明に続いてください.
スプーラのための通信パラメータの設定
シリアルポートにプリンタを接続した場合, プリンタにデー
タを送信するフィルタプログラムに代わり, 通信速度やパリ
ティ, その他のシリアル通信パラメータを設定することがで
きます. このことによる利点は,
/etc/printcap
を編集するだけで, 様々な
通信パラメータを試してみることができます. フィルタプロ
グラムを再コンパイルする必要はありません.
スプーリングシステムで, シリアル通信の設定が異
なっているかもしれない複数のプリンタに同じフィルタプロ
グラムを使うことが可能になります.
次の /etc/printcap の項目で,
lp で指定
されたデバイスのシリアル通信
パラメータを制御できます.
br#bps-rate
デバイスの通信速度を
bps-rate に設定します.
ここ で, bps-rate は 50,
75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400,
4800, 9600, 19200, 38400[bit/秒]
のいずれかです.
fc#clear-bits
デバイスをオープンした後で,
sgttyb 構造体の
clear-bits
フラグビットをクリアします.
fs#set-bits
sgttyb 構造体の
clear-bits
フラグビットをセッ トします.
xc#clear-bits
デバイスをオープンした後で, ローカルモードビット
clear-bits
をクリアします.
xs#set-bits
ローカルモードビット
set-bits
をセットします.
fc , fs ,
xc , そして xs
のビットに関 する詳しい情報については,
/usr/include/sys/ioctl_compat.h
を参照してく ださい.
項目 lp で指定されたデバイスを LPD
がオープンする とき, LPD は sgttyb
構造体のフラグビットを読み出 します. そして, 項目
fc の全ビットをクリアします. 次に,
項目 fs のビットをセットし,
その結果を設定 します.
ローカルモードビットに関しても同様におこなわれます.
例題のプリンタで6番目のシリアルポートに接続されたプリ
ンタの設定を追加してみましょう. 通信速度は38400bpsに設
定します. フラグビットとして, TANDEM, ANYP, LITOUT,
FLUSHO, PASS8 をセットします. ローカルモードビットでは,
LITOUT と PASS8 フラグをセットします.
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:\
- :lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:
テキストフィルタのインストール
ここまでで,
プリンタにジョブを送るために使うテキストフィ ルタを LPD
に設定する準備が整いました. テキストフィ
ルタ とは,
入力フィルタ としても知られていますが,
印字するジョブがあるときに LPD が起動するプログラムで す.
LPD がプリンタのためにテキストフィルタを起動する とき, LPD
はフィルタの標準入力からプリントするジョブ を入力し,
フィルタの標準出力に項目 lp で指定され
たプリンタデバイスを接続します. フィルタは, 標準入力か
らジョブを読み込み, プリンタのための必要な変換をおこなった
後, その結果を標準出力に出力する, これにより印字がなさ
れることを期待されています. テキストフィルタについての
更に詳しい情報については, 「
フィルタはどのように機能しているか」
をご覧ください.
ここでの簡単なプリンタ設定では,
プリンタにジョブを送るため, /bin/cat
を実行するだけの簡単なシェルスクリプ トで間に合います.
FreeBSD に標準で付属している lpf
というフィルタでは, バックスペース文字を使っ
た下線引きの動作をおこなう文字ストリームをうまく扱うことが
できないプリンタのための代替処理をおこなってくれます.
もちろん,
他のどんなフィルタプログラムを使っても構いません.
フィルタ lpf については, 「 テキストフィルタ
lpf」で詳しく説明します.
最初に, 簡単なテキストフィルタであるシェルスクリプト
/usr/local/libexec/if-simple
を作ってみましょ う.
次のテキストをお好みのテキストエディタでファイルに
書き込んでください.
#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout. Ignores all filter arguments.
/bin/cat && exit 0
exit 2
そして, このファイルを実行可能にします.
&prompt.root; chmod 555 /usr/local/libexec/if-simple
LPD
にこのテキストフィルタを使うことを設定するためには,
/etc/printcap に
if 項目を使って指定しま す. これまでの
/etc/printcap の例のプリンタ 2台に,
このフィルタを加えてみましょう.
#
# /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\
- :if=/usr/local/libexec/if-simple:
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\
+ :if=/usr/local/libexec/if-simple:
+
+ LPD を起動します
+
+ &man.lpd.8; は lpd_enable 変数に従って
+ /etc/rc から実行されます. この変数の
+ デフォルト値は NO です. まだ
+ そうしていなかったならば
+
+ lpd_enable="YES"
+
+ の行を /etc/rc.conf に追加して
+ 計算機を再起動するか, そのまま &man.lpd.8; を
+ 起動してください.
+
+ &prompt.root; lpd
+
+
印字してみよう
簡単な LPD 設定も終わりにたどり着きました. 残念ながら,
設定はこれでおしまいというわけではありません. なぜなら,
さらに, 設定をテストし, すべての問題点を解決しなくては
ならないからです. 設定をテストするために, 何かを印字し
てみましょう. LPD システムで印字をするためには,
&man.lpr.1; コマンドを使います. このコマンドは, 印字する
ためのジョブを投入する働きをします.
&man.lpr.1; コマンドを
「
プリンタとの通信状況を調べる」で紹介した,
あるテスト用のテキストを生成してくれる
&man.lptest.1; プログラムと一緒に使うこともできます.
簡単な LPD
設定をテストするために:
次のように入力してください.
&prompt.root; lptest 20 5 | lpr -Pprinter-name
ここで, printer-name
は /etc/printcap
で指定したプリンタ名 (もしくはその別名) です. デフォルト
のプリンタを使用する場合は,
-P 引数を付けないで
&man.lpr.1; を打ち込んでください. もう一度述べますが, ポス
トスクリプトを期待しているプリンタをテストするならば,
&man.lptest.1; を使う代わりに PostScript で書かれたプ
ログラムをプリンタに送ってください. プログラムを送るた
めには, プログラムをファイルに格納して, lpr
file
と打ち込みます.
PostScript プリンタの場合, 送信したプログラムによ
る結果が得られるでしょう.
&man.lptest.1; を使った場合は,
以下のような結果が見られるでしょう.
!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678
更にプリンタをテストしたい場合は, (言語ベースのプリン
タのための) もっと大きなプログラムを送信するか, 引数を
変えて
&man.lptest.1; を実行します. 例えば, lptest
80 60 で それぞれ80文字の行を60
行生成します.
プリンタがうまく動かなかった場合は, 次の節, 「
トラブルシューティング」をご覧ください.
+
+
+
-
- トラブルシューティング
-
- &man.lptest.1; を使った簡単なテストをおこなった結果,
- 正しい出
- 力を得られずに, 以下に示すような出力が得られるかもしれ
- ません.
+
+ プリンタ設定上級編
-
- しばらくしたら出力される, または,
- 紙の全体が出て こない
-
- プリンタは上で示されたような印字を
- おこなったのですが, しばら くして止まってしまい,
- 動かなくなってしまいました. 印字
- された結果をプリンタから取り出すためには,
- プリンタにある PRINT REMAINING ボタン, また は, FORM
- FEED ボタンを押す必要があるようです.
+ この節では, 特殊な形式のファイルを印字するためのフィルタ,
+ ヘッ ダページ, ネットワーク越しのプリンタへの印字, そして,
+ プリンタ 使用の制限や課金について説明しています.
- この場合は,
- おそらくジョブはプリントをする前に更にデー
- タが送られてこないか待ち続けているのでしょう.
- この問題を解決するためには, プリンタに FORM FEED
- 文字 (あるいは特定の必要な文字コード) を
- 送るテキストフィルタを使ってください.
- プリンタ内部に残っ
- たデータをプリンタにすぐに印字させるには, 普通は,
- これ で十分です.
- 次のジョブが前のジョブの最終ページの中央の
- どこかから印字を開始させないためにも,
- 紙の途中で印字の
- ジョブが終了したかどうかを確認するのは有益です.
+
+ フィルタ
- シェルスクリプト
- /usr/local/libexec/if-simple
- を次のように変更して, プリンタへジョブを送信した後に
- FROM FEED 文字を印字させるようにします.
+ LPD では, ネットワークプロトコル, キュー, アクセス制御, そ
+ して, 印字のためのその他の側面について扱いますが,
+ 実際の 作業のほとんどは
+ フィルタ によっておこなわれています.
+ フィルタ は, プリンタと通信し,
+ プリンタのデバイス依存性や特殊な要求を扱 うプログラムです.
+ 簡単なプリンタ設定では, プレインテキストのた
+ めのフィルタをインストールしました. このプレインテキストフィル
+ タは, ほとんどのプリンタで機能する極めて単純なものでした.
+ (「
+ テキストフィルタのインストール」を参照)
-
-#!/bin/sh
-#
-# if-simple - Simple text input filter for lpd
-# Installed in /usr/local/libexec/if-simple
-#
-# Simply copies stdin to stdout. Ignores all filter arguments.
-# Writes a form feed character (\f) after printing job.
+ しかしながら, 形式変換やプリンタ課金, 特定のプリンタの癖,
+ など をうまく利用するためには,
+ フィルタがどのように機能するかという
+ ことを理解しておくべきです. これらの側面を扱うためには, 最終的
+ には, フィルタの責任であるからです. そして, これは悪い情報です
+ が, ほとんどの場合において,
+ あなた自身 がフィルタを供給す
+ る必要があるということです. また都合のよいことには,
+ たくさんのフィルタが 一般的に利用できるということです.
+ もしフィルタがなかったとし ても, 普通は,
+ フィルタを作るのは簡単です.
-/bin/cat && printf "\f" && exit 0
-exit 2
-
-
+ FreeBSD にも, プレインテキストを印字させることができる
+ /usr/libexec/lpr/lpf
+ というフィルタが1つ付いています.
+ (このフィルタはファイルに含まれるバックスペースやタブを扱いま
+ す. また, 課金をすることもできますが, できることはこれだけしか
+ ありません.) いくつかのフィルタとフィルタの構成要素が FreeBSD
+ の ポート集にもあります.
- “階段効果”が現れた
-
- 次のような印字結果が得られた.
+ この節で述べることは次の通りです.
-
-!"#$%&'()*+,-./01234
- "#$%&'()*+,-./012345
- #$%&'()*+,-./0123456
+
+
+ 「
+ フィルタはどのように機能しているか」では,
+ 印字の過程におけ るフィルタの役割を概説します.
+ この節を読むことで, LPD がフィルタを使うときに,
+ “見えないところで”何が起こっている
+ かが理解できるでしょう. このことを知っておくと, プリン
+ タそれぞれに様々なフィルタをインストールしたときに遭遇
+ するかもしれない問題を予期したり, デバッグするときに役
+ 立つでしょう.
+
- あなたは「階段効果」
- の新たなる犠牲者になってしま いました. この原因は,
- 改行を表わすべき文字がなんであるか
- の解釈が混乱していることにあります. UNIX
- スタイルのオ ペレーティングシステムでは, 改行文字は
- ASCII コード10 の line feed (LF)
- の1文字が使われています. MS-DOS や OS/2などは ASCII
- コード10の LF と , ASCII コード
- 13の文字 (carriage return または CR)
- をペアで使います. (訳注:Machintosh では CR
- のみで表現されています). 大抵のプリンタでは,
- 改行を表わすために MS-DOS の慣習にしたが
- います.
+
+ LPD では, すべてのプリンタからデフォルトでプレインテ
+ キストを印字できることを期待しています. このことは, プ
+ レインテキストを直接印字できない PostScript (また
+ は他の言語用の) プリンタでは問題を引き起こします. 「
+ プレインテキストのジョブを PostScript
+ プリンタで印字する」 で,
+ この問題を克服する方法について述べます. PostScript
+ プリンタをお持ちの方は, この節をお読みになること
+ をお薦めします.
+
- FreeBSD で印字する場合, 印字したテキストは LF
- 文字だけ が使われていました. プリンタでは LF
- 文字を見つけると, 紙を1行分送り出しました. しかし,
- 次の文字を印字するた
- めの紙の水平方向の位置は維持されました. すなわち, CR
- 文字が意味することは,
- 次の文字を印字する位置を紙の左端
- に動かすことです.
+
+ PostScript は様々なプログラムのための有名な出
+ 力形式です. ある人たちは (著者自身を含めて) PostScript
+ のコードさえも直接書いてしまいます. しかし, PostScript
+ プリンタは高価です. 「 非 PostScript プリンタで
+ PostScript をシミュレートする」では, PostScript
+ データを非 PostScript
+ プリンタ に受けつけさせ, 印字させるために,
+ どのようにしてプリンタ用のテキストフィルタをさらに変更
+ すればよいのか, ということについて述べます. PostScript
+ プリンタを持っていない方は, この節をお読みになる
+ ことをお薦めします.
+
- FreeBSD
- がプリンタに動作をして欲しいと思っている動作を
- 以下に示します.
+
+ 「
+ 変換フィルタ」では, 図形や組版データといっ
+ た特定のファイル形式を, プリンタが理解できる形式へ変換
+ する作業を自動的におこなわせる方法について述べます. この節
+ を読むと, troff のデータを印字するには lpr
+ -t , または, TeX DVI を印字するには
+ lpr -d , ラスタイ
+ メージデータを印字するには lpr -v ,
+ などといったよ
+ うにユーザが入力することができるようにプリンタの設定を
+ おこなうことができます. この節もお読みになることをお薦めし
+ ます.
+
-
-
-
-
- プリンタが CR を受け取ったとき
- CR 動作 (復帰) をおこなう
-
+
+ 「 出力フィルタ」
+ では, あまり使われない LPD の機能のすべて, すなわち,
+ 出力フィルタに関することが記述されています. ヘッダページ
+ (「
+ ヘッダページ」参照) を印字させていない場合は,
+ 多分, この節は飛ばしても構わないでしょう.
+
-
- プリンタが LF を受け取ったとき
- CR + LF 動作 (復帰, 改行) をおこなう
-
-
-
-
+
+ 「 テキストフィルタ
+ lpf」では, lpf
+ についての説明が, ほぼ完全におこなわれています. これは
+ FreeBSD に付属するラ インプリンタ (または,
+ ラインプリンタのように動作するレー ザプリンタ) のための,
+ 単純なテキストフィルタです. プレ
+ インテキストを印字したことに対して課金をおこなう方法が至急
+ 必要な場合, もしくは, バックスペース文字を印字しようと
+ すると煙を発するプリンタを持っている場合は, 絶対に
+ lpf を検討するべきです.
+
+
- このように動作させるための方法が
- いくつかあります.
+
+ フィルタはどのように機能しているか
-
-
- これらの文字の解釈を変えるために, プリンタ
- の設定スイッチかコントロールパネルを操作する方
- 法. どのようにして設定をするかはプリンタのマニュ
- アルを参照してください.
+ 既に言及したように, フィルタとは, プリンタにデータを送る
+ 際に, デバイスに依存した部分を取り扱うために LPD
+ によって起動 される実行プログラムです.
-
- FreeBSD 以外のオペレーティン
- グシステムを切り替えて使う場合, CR と LF 文字
- の解釈をそのオペレーティングシステムで使われて
- いるようにプリンタを
- 再設定 する必要がある
- かもしれません. 以下に示す解決方法のいずれかを
- 選ぶのがよいかもしれませんね.
-
-
+ LPD がジョブ中のファイルを印字しようとするとき, LPD
+ はフィル タプログラムを起動します. このとき,
+ フィルタの標準入力を印字す るファイルに,
+ 標準出力をプリンタに, そして, 標準エラー出力をエ
+ ラーログファイル (/etc/printcap 内の
+ lf 項目で指 定されたファイル, または,
+ 指定されていない場合は, デフォルトと して
+ /dev/console ) にセットします.
-
- 自動的に LF を CR+LF に変換してくれる
- FreeBSD 用のシリアルドライバを入手する方法. も
- ちろん, このドライバはプリンタ専用に接続される
- シリアルポート
- のみ で動作します. この機能
- を許可するためには,
- /etc/printcap ファ
- イルで対象プリンタの fs
- 項目で CRMOD ビッ トをセットします.
-
+ LPD が起動するフィルタと, その引数が何であるかは,
+ /etc/printcap
+ ファイルの内容と, ジョブの起動時に
+ ユーザが指定した
+ &man.lpr.1; コマンドの引数に依存しています. 例え
+ ば, ユーザが lpr -t と入力した場合は,
+ LPD は出力先のプリ
+ ンタ用の tf 項目で指定されている troff
+ 用のフィルタを起動
+ させるでしょう.
+ ユーザがプレインテキストの印字を指示したときは,
+ if で指定されたフィルタが
+ 起動されるでしょう (このことはほ
+ とんどの場合にあてはまります.
+ 詳細については, 「
+ 出力フィルタ」をご覧ください).
-
- LF
- 文字の扱いを一時的に変更するためのエ
- スケープコード をプリンタに送る方法.
- プリンタ
- がサポートしているかもしれないエスケープコード
- については, プリンタのマニュアルを参照してくだ
- さい. 適切なエスケープコードが見つかったら, 最
- 初にそのコードを送り, 次にプリントジョブを送信
- するようにテキストフィルタを変更してください.
-
+ /etc/printcap
+ で指定可能なフィルタは次の3種類がありま す.
- 次に, Hewlett Packard 社の PCL
- エスケープコー
- ドに対応しているプリンタのためのテキストフィル
- タの例を示します. このフィルタでは, プリンタ に
- LF 文字を LF と CR の2文字として扱わせます.
- その後に, プリンタにジョブを送ります. 最後に,
- ジョブの最終ページの紙を排出するため, FROM FEED
- 文字を送ります. このフィルタは Hewlett Packard
- 社のほとんどすべてのプリンタで機能するは
- ずです.
+
+
+
+
+ テキストフィルタ
+ (LPD のドキュメントでは紛ら
+ わしいことに
+ 入力フィルタ と呼んでいますが) は一般の
+ テキストの印字を扱います. これはデフォルトのフィルタと
+ 考えてください. LPD では, すべてのプリンタに対して, デフォ
+ ルトでプレインテキストが印字できることを期待しています.
+ さらに, バックスペースやタブを正しく扱い, また, 他の特
+ 殊な文字が入力されてもプリンタに混乱を来さないようにす
+ るのはテキストフィルタの仕事であると考えています.
-
-#!/bin/sh
-#
-# hpif - Simple text input filter for lpd for HP-PCL based printers
-# Installed in /usr/local/libexec/hpif
-#
-# Simply copies stdin to stdout. Ignores all filter arguments.
-# Tells printer to treat LF as CR+LF. Ejects the page when done.
+ プリンタの使用に対して課金をしなくてはならない環境にあ
+ るときは, テキストフィルタが印字したページ数を数える作
+ 業もしなくてはなりません. この作業は, 通常, 印字した行
+ 数を数え, これをプリンタが1ページ当たりに印字できる行
+ 数と比較することでおこなわれます.
-printf "\033&k2G" && cat && printf "\f" && exit 0
-exit 2
+ テキストフィルタは, 次のような引数を付けて起動されます.
- ホスト orchid にある
- /etc/printcap の
- 例を以下に示します. ここには, 一番目のパラレル
- ポートにプリンタ (Hewlett Packard LaserJet 3Si)
- が一台接続されており, そのプリンタ名は
- teak です.
+
+ filter-name
+ -c
+ -wwidth
+ -llength
+ -iindent
+ -n login
+ -h host
+ acct-file
+
-
-#
-# /etc/printcap for host orchid
-#
-teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
- :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
- :if=/usr/local/libexec/hpif:
-
+ ここで,
+
+ -c
-
- 訳注: LF を CR+LF
- に置き換える cat コマンド
- を作る方法も当然考えられます. そして, このコマ
- ンドと, if-simple の cat の部分
- を置き換えればよいわけです. 具体的にどのように
- するかは, 読者への練習問題としましょう.
-
+ lpr -l
+ によってジョブが入力されたときに与
+ えられます.
-
-
-
-
- 各行が重ね書きされてしまった
-
- プリンタは紙送りをまったくしませんでした.
- テキストすべての行
- がある行の上で重ねて印字されてしまいました.
-
- この問題は,
- 階段現象とは“正反対”な問題で, ほとんどま
- れにしか起こりません. FreeBSDでは行末として扱われる
- LF 文字が, 紙の左端に印字位置を復帰しますが,
- 紙送りはしな い CR 文字として扱われています.
-
- プリンタの設定スイッチかコントロールパネルを
- 使って, LF と CR
- の文字を次のような解釈をするようにしてください.
-
-
-
-
-
-
- プリンタが受け取ったとき
- プリンタがおこなう
-
-
-
-
-
- CR
- CR 動作 (復帰)
-
-
-
- LF
- CR + LF (復帰, 改行)
-
-
-
-
-
-
- 訳注: LF を CR+LF
- に置き換える cat コマンドを作る方法
- も当然考えられます. そして, このコマンドと,
- if-simple の cat
- の部分を置き換えればよいわけ です.
- 具体的にどのようにするかは, 読者への練習問題とし
- ましょう.
-
-
-
-
- プリンタが文字を紛失してしまう
-
- 印字しているのですが,
- 各行の2〜3文字が印字されません.
- プリンタを動かせば動かすほど,
- もっとたくさんの文字が紛 失されていき,
- この問題は更に悪くなっていくかもしれませ
- んでした.
-
- この問題は,
- シリアルポートを通してコンピュータから送ら
- れてくるデータの速度に,
- プリンタがついていけないことに 起因します
- (この問題は, パラレルポートに接続されたプリ
- ンタでは発生することはありません).
- この問題を克服する 方法が2つあります.
+
-
+ width
- プリンタが XON/XOFF のフロー制御をサポート
- している場合は, 項目 fs で
- TANDEM ビット をセットして, FreeBSD
- にこの機能を使用させて ください.
+ /etc/printcap
+ で指定された pw (page width)
+ 項目の値が与えられます. デフォル トは,
+ 132です.
+
+ length
- プリンタがキャリアフロー制御をサポートして
- いる場合は, 項目 fs で MDMBUF
- ビットをセッ トして下さい. それから,
- プリンタとコンピュータ
- を接続しているシリアルケーブルがキャリアフロー
- 制御用に正しく配線されたものかどうかを確認して
- ください.
+ pl (page length)
+ 項目で指定された値が与え られます.
+ デフォルトは66です.
+
+ indent
- プリンタがフロー制御をまったく
- サポートしていな い場合は, 項目
- fs の NLDELAY と TBDELAY,
- CRDELAY, VTDELAY, BSDELA のいくつかのビッ
- トを組み合わせて使い, プリンタへ送るデータの流
- れに適当な遅延を加えてください.
+ lpr -i
+ によって与えられた字下げの量で, デ
+ フォルトは0です.
-
-
-
+
+ login
+
+ ファイルを印字したユーザのアカウント名が
+ 与えら れます.
+
+
- プリンタは意味不明な
- 文字列を印字した
-
- プリンタはランダムなゴミのように
- 見えるものを印字しまし たが,
- 意図したテキストは印字してくれませんでした.
+ host
+
+ ジョブが入力されたホスト名が
+ 与えられます.
+
+
- この問題は, 通常,
- シリアルポートに接続したプリンタでの
- 通信パラメータの誤りからくる前項とは別の症状です.
- br 項目の通信速度と
- fs と fc
- 項目のパリ ティビットの設定を共に調べてみてください.
- また, プリン タでの設定が
- /etc/printcap
- ファイルで設定した
- 内容と一致しているかどうかも確認してください.
-
-
- 訳注: simple-if
- のような単純なフィルタだけの状態で, 日
- 本語を含むテキストを印字しようとした場合にも,
- シリアル ポート, パラレルポートの使用に関係なく,
- このような症状 は見られます. 日本語プリンタの場合,
- 漢字コードそのもの
- を送信しただけでその漢字を印字してくれるものは,
- 少なく とも訳者は見たことがありません.
- 漢字を印字するための制御
- コードを別途送信するフィルタが必要となります.
- また, そ のようなフィルタを使用していても,
- そのフィルタが想定し
- てる漢字コードと異なった文書を
- プリントしようとしたとき もこのような症状は出ます.
- もちろん, これはプリンタ用の
- 言語を持たないプリンタの話で, PostScript プリンタ
- などにプレインテキストを送信しても, 日本語対応,
- 非対応 に関らず, 意味不明な文字列が印字される
- (もしくは, 何も 印字されない) ことでしょう.
-
-
-
-
- 何も起きない
-
- もしプリンタが何の動作もしないのであれば,
- ハード的な問 題ではなく, 多分 FreeBSD
- の中に問題があります.
- /etc/printcap ファイルで,
- デバッグしているプ リンタのエントリに
- (lf 項目で) ログファイルを取るよ
- うに設定を追加してください. 例えば, プリンタ
- rattan 用のエントリの項目
- lf は次のようになります.
-
-
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:\
- :lf=/var/log/rattan.log
+ acct-file
+
+ af
+ 項目で指定されている課金データファイル
+ の名前が与えられます.
+
+
+
+
+
- 次に, もう一度印字をおこなってみます. そして,
- 発生したと思
- われるエラーメッセージを見るためにログファイル
- (上記の 例では,
- /var/log/rattan.log )
- を調べます. そこ で見られたメッセージを元に,
- 問題を解決してみてください.
+
+ 変換フィルタ は,
+ 特定のファイル形式をプリンタ
+ が紙に印字できるようなものに変換します. 例えば, プリン
+ タで ditroff 組版データを直接印字することはできません.
+ しかし, ditroff データをプリンタが消化し, 印字するこ
+ とができる形式へ変換するために, ditroff ファイル用フィ
+ ルタをインストールすることができます.
+ 「
+ 変換フィルタ」
+ で, これらに関するすべてについて説明します.
+ プリンタの課金をする必要がある場合は, 変換フィルタでも
+ 印字ページを数える作業が必要となります.
- 項目 lf
- が指定されていない場合, LPD はデフォルト
- のログファイルとして
- /dev/console を使います.
-
-
-
-
-
-
-
+ 変換フィルタは次の引数をとって起動されます.
-
- プリンタを使う
+
+ filter-name
+ -xpixel-width
+ -ypixel-height
+ -n login
+ -h host
+ acct-file
+
- この節では, FreeBSD で設定したプリンタを使う方法について説明
- します. ここでは, ユーザレベルでのコマンドを概説します.
+ ここで, pixel-width は,
+ px 項目で指定され
+ た値 (デフォルトは0),
+ pixel-height は,
+ py 項
+ 目で指定された値 (デフォルトは0) です.
+
-
- &man.lpr.1;
-
- 印字をおこないます.
-
-
+
+ 出力フィルタ は,
+ テキストフィルタが指定されて
+ おらず, かつ, ヘッダページの出力が許可されている場合に
+ のみ使われます.
+ 「
+ 出力フィルタ」で, これらのことについて説明し
+ ます. アウトプットフィルタに対する引数は次の2つだけです.
- &man.lpq.1;
-
- プリンタキューを調べます.
-
-
+
+ filter-name
+ -wwidth
+ -llength
+
- &man.lprm.1;
-
- プリンタキューにあるジョブを削除します.
-
-
-
+ ここで, -w と -l は,
+ テキストフィルタの場合
+ と同じです.
+
+
- 管理者用コマンド &man.lpc.8; もありますが,
- これは 「 プリンタを管理する」
- に記
- します. このコマンドは, プリンタやそのキューの制御のために用い
- られます.
+ フィルタは, 次に示すの終了状態をもってプログラムを
+ exit するべきです.
- &man.lpr.1;, &man.lprm.1;, そして &man.lpq.1; の 3
- コマンドは, -Pprinter-name
- オプションをとり, これによって,
- /etc/printcap のように操作の対象となる
- プリンタやキュー
- を指定します. これによって, 様々なプリンタに対してジョブを送る
- , 取り消す, 調査することができます.
- -P が使われなかった場
- 合は, これらのコマンドは
- PRINTER 環境変数で指定されたプリンタ
- を使用します.
- そして, PRINTER 環境変数がなかった場合は, これ
- らのコマンドはデフォルトのプリンタ
- lp を使います.
+
+ exit 0
+
+ フィルタがファイルを正常に印字した場合.
+
+
- 以下では, デフォルトプリンタ
- という用語が意味するプリンタ は, PRINTER
- 環境変数で指定されたプリンタ, もしくは, PRINTER
- 環境変数がない場合は, lp
- という名前のプリンタです.
+ exit 1
+
+ フィルタはファイルの印字に失敗したが, LPD
+ に再度ファ イルの印字を試みて欲しい場合.
+ この終了状態で終了した場 合, LPD
+ はフィルタを再スタートします.
+
+
-
- 印字する
+ exit 2
+
+ フィルタはファイルの印字に失敗し, かつ, LPD
+ に再出力 を試みて欲しくない場合. この場合, LPD
+ はそのファイル を放棄します.
+
+
+
- ファイルを印字するためには,
- 次のように入力してください.
+ FreeBSD に付属するテキストフィルタ
+ /usr/libexec/lpr/lpf は, FORM FEED
+ 文字が送られたと
+ きやプリンタ使用に対する課金をどのようにするかを
+ 決定するために, ページ幅やページ長の引数を利用します. また,
+ 課金用のエントリを 作成するため, ログイン名, ホスト名,
+ 課金ファイル名の引数を利用 します.
- &prompt.user; lpr filename ...
+ もし, フィルタの購入を検討しているならば, LPD
+ と互換性がある かどうかを確認してください. もしそうならば,
+ 上述の引数リストをサ ポートしていなければなりません.
+ 一般向けの使用のためにフィルタ
+ を作成する計画をしている場合は,
+ 同じ引数リストと終了コードをサ ポートしてください.
+
- これにより,
- 入力されたファイルのそれぞれをデフォルトのプリンタ
- から印字します. ファイル名が与えられなかった場合,
- &man.lpr.1;
- は標準入力から印字するデータを読み込みます. 例えば, 次のコマン
- ドにより, ある重要なシステムファイルが印字されます.
+
+ プレインテキストのジョブを PostScript プリン
+ タで印字する
- &prompt.user; lpr /etc/host.conf /etc/hosts.equiv
+ コンピュータと PostScript (または, 他の言語に対応し た)
+ プリンタをあなたしか使用しない場合は, プリンタにプレ
+ インテキストを絶対に送らない, そして,
+ プリンタにプレインテキス
+ トを送りたがっている様々なプログラムの機能を決して
+ 使わないこと にしてください. そうすれば,
+ この節に書かれたことに心を煩わせる必
+ 要はまったくなくなります.
- 印字させるプリンタを選択するためには,
- 次のように入力します.
+ しかし, PostScript
+ とプレインテキストの両方のジョブをプリン
+ タへ送りたいと思っている場合は,
+ プリンタ設定についての要求が増 えるでしょう.
+ 両者をプリンタへ送信するためには, 到着
+ したジョブがプレインテキストであるか PostScript であるかを
+ 検出するテキストフィルタが必要です. PostScript のジョブは
+ すべて %!
+ で始まらなければならないことになっています
+ (他のプリンタ言語に関しては,
+ プリンタのドキュメントをご覧くだ さい).
+ ジョブの最初の2文字がこれならば, PostScript である
+ ことが分かります. したがって,
+ ジョブのそれ以降の部分をプリンタに直 接送ることができます
+ (訳注:PostScript では, %
+ 以降はコメントとして扱われるので, 最初の %! の行を 読み捨てても問題はない).
+ 最初の2文字が %! でない場
+ 合は, フィルタはテキストを PostScript に変換し, その結果を
+ 使って印字をおこないます.
- &prompt.user; lpr -P printer-name filename ...
+ この作業をどうやってやればよいのでしょうか.
- 次の例では, プリンタ rattan に,
- カレントディレクトリにあ
- るファイルの詳細なリストを印字しています.
+ シリアルポートにプリンタを接続した場合は,
+ lprps をインス
+ トールすることをお勧めします. lprps は
+ PostScript 用のフィルタで,
+ プリンタとの双方向通信をおこないます. このフィルタでは,
+ プリンタか らの冗長な情報を得ることで,
+ プリンタの状況を示すファイルが更新 されていきます.
+ したがって, ユーザや管理者は
+ (トナー残量少 や
+ 紙詰まり といった)
+ プリンタの状況を正確に知ることができます. しかし,
+ もっと重要なことは, psif
+ と呼ばれるプログラムが 含まれているということです.
+ このプログラムは, 入力されたジョブ
+ がプレインテキストかどうかを検出し, これを PostScript に変
+ 換するために, textps
+ (lprps に付属する別のプログラ ム)
+ を呼び出します. そして, このジョブをプリンタに送るために,
+ lprps が使われます.
- &prompt.user; ls -l | lpr -P rattan
+ lprps は FreeBSD
+ のポート集に含まれています (「
+ ポートコレクション」を参照してください).
+ もちろん,自分自身でプログラムを取ってきて, コンパイルし,
+ インストールす ることもできます. lprps
+ をインストールした後は, lprps
+ の一部である psif
+ プログラムのパス名を指定する だけです. ポート集から
+ lprps をインストールしたときは,
+ /etc/printcap の中のシリアル接続した
+ PostScript プリンタのエントリに対して, 次を使ってください.
+
- 上記の &man.lpr.1; コマンドではファイル名の指定がないので,
- lpr は標準入力から印字するデータ,
- この場合, ls -l
- コマンドの出力, を読み込みます.
+
+:if=/usr/local/libexec/psif:
- &man.lpr.1; コマンドでは,
- 出力の整形を制御したり, ファイル変換を
- 適用したり, 複数部数のコピーを作成したり, などといた様々な幅広
- いオプションを受け付けることもできます.
- 詳細については,
- 「
- その他の印字オプション」をご
- 覧ください.
-
+ LPD
+ にプリンタをリード・ライトモードでオープンさせるために,
+ rw 項目も指定すべきです.
-
- ジョブの処理状況を調べる
+ パラレルポートに接続したプリンタの場合 (すなわち,
+ lprps が
+ 必要としているプリンタとの双方向通信ができない),
+ テキストフィ
+ ルタとして次のシェルスクリプトを使うことができます.
- &man.lpr.1; コマンドを使って印字をする場合, プリントしようと
- するデータは “プリントジョブ”
- と呼ばれる箱に一緒に置かれ, こ
- れが LPD スプーリングシステムに送られます. プリンタにはそれぞ
- れ, ジョブ用のキューがあり,
- 送られてきたジョブはあなたや他のユー
- ザからの別のジョブと一緒にそのキューで並んで,
- 処理される順番を
- 待ちます.
- プリンタは到着順にこれらのジョブの印字をおこないます.
+
+#!/bin/sh
+#
+# psif - Print PostScript or plain text on a PostScript printer
+# Script version; NOT the version that comes with lprps
+# Installed in /usr/local/libexec/psif
+#
- デフォルトプリンタのキューの状態を表示するには,
- &man.lpq.1; と入
- 力します. プリンタを指定するときは,
- -P オプションを使い
- ます. 例えば, 次のコマンド
+read first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
- &prompt.user; lpq -P bamboo
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # PostScript job, print it.
+ #
+ echo "$first_line" && cat && printf "\004" && exit 0
+ exit 2
+else
+ #
+ # Plain text, convert it, then print it.
+ #
+ ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
+ exit 2
+fi
-
- は, プリンタ bamboo
- のキューの状態を表示します. この lpq
- コマンドの出力結果の例を次に示します.
+ 上記のスクリプトにおいて, textps
+ はプレインテキストから PostScript
+ へ変換するために別にインストールしたプログラム です.
+ テキストから PostScript へ変換するのには, お好みのどんなプロ
+ グラムでも使うことができます. FreeBSD の ポート集 (「 ポートコレクション」
+ を参照してください) には, a2ps
+ と呼ばれるテキストから PostScript に変換するプログラムが
+ 入っています.
- bamboo is ready and printing
-Rank Owner Job Files Total Size
-active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
-2nd kelly 10 (standard input) 1635 bytes
-3rd mary 11 ... 78519 bytes
+
+ 訳注: 上記スクリプトでは,
+ 先頭の行を読み込むために read を使っていますが,
+ 困ったことに, read は読み込んだ文字列の先頭
+ の空白文字を取り除いてしまいます. 従って,
+ これらの空白文字は印 字されないことになり,
+ 印字結果がファイルのイメージと異なる場合 が出てきます.
+ この事情は csh を利用した場合でも変わりません. 仮に,
+ 先頭の空白文字を除去しない read コマンドを作ったとしても,
+ 「echo $first_line」の $first_line
+ 変数の内容をシェルが展開す る際に $first_line
+ の先頭の空白文字が失われるため, 問題の解決 にはなりません.
+ 残念ながら, 訳者はこの問題をシェルプログラムだ
+ けで解決する方法をしりません. perl か C
+ 言語の力を借りないと解 決できないと思います.
+
+
- この例では, bamboo
- のキューに3つのジョブがあることが分か ります.
- 最初のジョブはユーザ kelly からのものであり, “ジョ
- ブ番号”9が割り当てられています.
- プリンタのすべてのジョブには一意
- なジョブ番号が付けられています. ほとんどの場合, このジョブ番号
- は無視することができますが, ジョブをキャンセルするときにはこの
- 番号が必要になります. このことの詳細については, 「 ジョブの削除
- 」をご覧ください.
+
+ 非 PostScript プリンタで PostScript
+ をシミュレートする
- ジョブ番号9のジョブは2つのファイルを処理します. すなわち,
- &man.lpr.1;
- のコマンドラインに複数のファイル名が与えられたときは,
- 1つのジョブとして扱われるのです. このジョブは, 現在, アクティ
- ブジョブ (“Rank”
- の欄の active という後に注目) になってい
- ます. これは, プリンタからそのジョブが現在印字されているはずで
- あることを意味しています. 2番目のジョブでは,
- &man.lpr.1; コマン
- ドに標準入力からデータが与えられています.
- 3番目のジョブはユー
- ザ mary から与えられました.
- このジョブのサイズはとても大きくなっ
- ています. 彼女がプリントしようとしたファイルのパス名はここで表
- 示させるには長すぎるため,
- &man.lpq.1; コマンドはドットを3つだけ
- 表示しています.
+ PostScript
+ は質の高い組版と印字をおこなうための事実
+ 上の 標準です. しかしながら, PostScript は,
+ 高価な 標 準です. ありがたいことに,
+ Alladin Enterprises から
+ Ghostscript と呼ばれる,
+ PostScript 互換の動作をするフリー
+ のプログラムが出されていて, FreeBSDで動きます. Ghostscript
+ はほとんどの PostScript ファイルを読むことができ, これらの
+ 各ページをたくさんのブランドの非 PostScript プリンタを含む
+ 様々なデバイス用に変換することができます. Ghostscript をイン
+ ストールし,
+ プリンタ用の特別なテキストフィルタを使うことによっ て, 非
+ PostScript プリンタをあたかも本物の PostScript
+ プリンタであるかのように動作させることができます.
- &man.lpq.1; からの
- 出力で一番最初の行もまた有益な情報を与えていま
- す. この行から, プリンタが現在何をしているか (あるいは, 少なく
- とも LPD がプリンタが
- していると思っていること) が分かります.
+ Ghostscript はポート集に入っていますので,
+ そこからインストール することができます. また,
+ 自分でソースプログラムを持ってきて, コンパイルし, インストー
+ ルすることもできます. この作業はとても簡単にできます.
- &man.lpq.1; コマンドは
- -l オプションもサポートしています. こ
- れにより,
- 詳しい情報が表示されます. lpq -l の実行例を次
- に示します.
+ PostScript プリンタをシミュレートさせる場合は,
+ テキストフィ ルタに PostScript
+ ファイルを印字しようとしているかどうかを 検出させます.
+ PostScript ファイルでない場合は, フィルタは
+ そのファイルを直接プリンタに送ります
+ (訳注:テキストファイルを直 接印字できない場合は, もちろん,
+ 変換フィルタを通す必要がありま す). PostScript の場合は,
+ まず, Ghostscript を使い, ファ
+ イルをそのプリンタが理解できる形式へ変換します.
- waiting for bamboo to become ready (offline ?)
-kelly: 1st [job 009rose]
- /etc/host.conf 73 bytes
- /etc/hosts.equiv 15 bytes
+ 次の例のスクリプトは, Hewlett Packard DeskJet 500
+ プリンタ用 のテキストフィルタです.
+ 他のプリンタで用いるときは, -sDEVICE
+ 引数を gs (Ghostscript)
+ コマンドに変えてくだ さい. (gs -h
+ と入力すると, 現在インストールされている Ghostscript
+ でサポートされているデバイスのリストが得られます).
-kelly: 2nd [job 010rose]
- (standard input) 1635 bytes
+
+#!/bin/sh
+#
+# ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
+# Installed in /usr/local/libexec/hpif
-mary: 3rd [job 011rose]
- /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
-
+#
+# Treat LF as CR+LF:
+#
+printf "\033&k2G" || exit 2
-
- ジョブの削除
+#
+# Read first two characters of the file
+#
+read first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
- 印字するようジョブを
- 送った後で印字を中断したくなったときは,
- &man.lprm.1; コマンドで,
- キューの中からそのジョブを削除することが
- できます. 大抵の場合, アクティブジョブでさえも
- &man.lprm.1; を使っ
- て削除することができますが,
- そのジョブの一部またはすべてが印字さ
- れてしまうかもしれません.
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # It is PostScript; use Ghostscript to scan-convert and print it.
+ #
+ # Note that PostScript files are actually interpreted programs,
+ # and those programs are allowed to write to stdout, which will
+ # mess up the printed output. So, we redirect stdout to stderr
+ # and then make descriptor 3 go to stdout, and have Ghostscript
+ # write its output there. Exercise for the clever reader:
+ # capture the stderr output from Ghostscript and mail it back to
+ # the user originating the print job.
+ #
+ exec 3>&1 1>&2
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
+ -sOutputFile=/dev/fd/3 - && exit 0
- デフォルトプリンタへのジョブを削除するためには, 最初に,
- &man.lpq.1; を使ってそのジョブ番号を調べます.
- すなわち, それから,
- 次のように入力して, ジョブを削除します.
+ #
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \
+ && exit 0
- &prompt.user; lprm job-number
+else
+ #
+ # Plain text or HP/PCL, so just print it directly; print a form
+ # at the end to eject the last page.
+ #
+ echo $first_line && cat && printf "\033&l0H" && exit 0
+fi
- 特定のプリンタへのジョブを削除するときは,
- -P オプション
- を使ってそのプリンタを指定します.
- 例えば, プリンタ bamboo
- のキューからジョブ番号
- 10のジョブを削除するには次のようにします.
+exit 2
- &prompt.user; lprm -P bamboo 10
+ 最後に, if 項目を通して, LPD
+ にこのフィルタを教えてやる 必要があります.
- &man.lprm.1; コマンドには略記法がいくつかあります.
+
+:if=/usr/local/libexec/hpif:
-
- lprm -
-
- あなたが (デフォルトプリンタへ)
- 送ったジョブをすべて削除し ます.
-
-
+ これでおしまいです. lpr plain.text
+ とか lpr whatever.ps
+ と入力してみましょう. どちらも正常に印字されるは
+ ずです.
- lprm user
-
- ユーザ user が
- (デフォルトプリンタへ) 送ったジョブ をすべて削除します.
- 他のユーザのジョブを削除できるのはスー パユーザだけです.
- あなたは, あなた自身のジョブしか削
- 除することはできません.
-
-
+
+ 訳注: 日本語を印字する場合は,
+ 日本語対応の Ghostscript が必要で す. 日本語対応版の
+ Ghostscript もポート集に入っているはずです.
+
+
- lprm
-
- ジョブ番号もユーザ名もシンボル
- - も指定されない
- ときは, &man.lprm.1; は現在のアクティブジョブを, そのジョ
- ブを送ったのがあなた自身であるときに限り, デフォルトプ
- リンタから削除します. ただし, スーパユーザは任意のア
- クティブジョブを削除することができます.
-
-
-
+
+ 変換フィルタ
- 上記の略記法をデフォルトプリンタではなく
- 特定のプリンタに対して おこなうときは, -P
- オプションでそのプリンタを指定するだけよ いのです. 例えば,
- プリンタ rattan のキューへあなたが送っ
- たジョブをすべて削除するためには次のようにします.
+ 「 プリンタ設定導入編」
+ に書かれた簡単な設定が完了したら, 最初に, やってみたいと思
+ うことは, 多分(プレイン ASCII テキストに加えて)
+ 好みのファイル形式
+ のための変換フィルタをインストールすることでしょう.
- &prompt.user; lprm -P rattan -
+
+ なぜ, 変換フィルタをインストールするのか?
-
- ネットワーク環境で作業をしている場合, あるホストか
- ら送られたプリンタジョブは, これを送ったホストで
- &man.lprm.1; を
- 使った場合に限って,
- これを削除することができます. 他のホストで
- 同じプリンタを使えたとしても,
- このジョブを削除することはできま
- せん.
- 次の例では, 他ホストからジョブを削除することを試みていま
- す.
+ 変換フィルタによって, 様々な種類のファイルを印字するこ
+ とが簡単になります. 例えば, TeX
+ 組版システムでたくさんの仕事 をしたと仮定しましょう.
+ そして, PostScript プリンタが接続 されているとします.
+ すると, TeX で DVI ファイルを作成する度に, DVI
+ ファイルを印字するために, これを PostScript ファイルに
+ 変換する必要があります.
+ このコマンドは次のようになるでしょう.
- &prompt.user; lpr -P rattan myfile
-&prompt.user; rlogin orchid
-&prompt.user; lpq -P rattan
-Rank Owner Job Files Total Size
-active seeyan 12 ... 49123 bytes
-2nd kelly 13 myfile 12 bytes
-&prompt.user; lprm -P rattan 13
-rose: Permission denied
-&prompt.user; logout
-&prompt.user; lprm -P rattan 13
-dfA013rose dequeued
-cfA013rose dequeued
-
-
-
+ &prompt.user; dvips seaweed-analysis.dvi
+&prompt.user; lpr seaweed-analysis.ps
-
- その他の印字オプション
+ DVI ファイル用の変換フィルタがインストールしてあると,
+ LPD に 変換を肩代わりさせることで毎回毎回
+ おこなわなければならなかった面倒
+ な変換作業を省くことができます. つまり, DVI を生成したら,
+ 次のような1回のコマンド入力だけで, これが印字されます.
+
- &man.lpr.1; コマンドには, テキストの整形や,
- 図や他のファイル形
- 式の変換, 複数部コピーの生成, ジョブの扱いなどをを制御すること
- ができます.
- この節では, これに関するオプションについて記してい
- ます.
+ &prompt.user; lpr -d seaweed-analysis.dvi
-
- 整形と変換に関するオプション
+ LPD に DVI ファイルの変換をさせるためには,
+ -d オプション を指定します.
+ 変換オプションのリストは「
+ 整形と変換に関するオプション」
+ に載せてあります.
- 以下の &man.lpr.1; 用のオプションはジョブにおける
- ファイルの
- 整形の制御に関するものです.
- このオプションは, ジョブにプレイン
- テキストが含まれない場合や
- &man.pr.1; ユーティリティを使ってプレイ
- ンテキストを整形する場合に用いてください.
+ 変化のオプションのそれぞれをプリンタに
+ サポートさせるためには,
+ 変換フィルタ をインストールし,
+ そのパス名を /etc/printcap
+ の中で指定しなくてはなりません. 変換フィ ルタは,
+ プレインテキストを印字する代わりに, フィルタはファイル
+ をプリンタが理解できる形式に変換するところを除けば,
+ 「プリンタ の簡単な設定」で説明したテキストファイル
+ (「
+ テキストフィルタのインストール」 を見て下さい)
+ に似ています.
+
- 次の例では, プリンタ
- bamboo に (TeX 組版システムによる)
- DVI ファイル
- fish-report.dvi を印字しています.
+
+ どの変換フィルタをインストールすべきか?
- &prompt.user; lpr -P bamboo -d fish-report.dvi
+ 使いたいと思う変換フィルタをインストールすべきです.
+ DVI のデータを頻繁に印字するならば, DVI 変換フィルタ
+ をインストールするのが適切でしょう. 印字しなくてはなら
+ ない troff を大量に抱えている場合は, 多分, troff フィ
+ ルタが欲しくなるはずです.
- このオプションは,
- ジョブに含まれるすべてのファイルに対して適用さ れます.
- したがって, 1つのジョブに (例えば) DVI ファイルと ditroff
- ファイルを混在させることはできません. その代わりに,
- ファイルを 形式毎に別々のジョブに分け,
- それぞれのジョブでその形式用の変換
- オプションを使って印字してください.
+ 次の表は, LPD で動作するフィルタと,
+ /etc/printcap
+ ファイルでのエントリする項目, そして,
+ lpr
+ コマンドで呼び出す方法をまとめたもの です.
-
- -p と -T
- を除くすべてのオプションを使用 するためには,
- 出力先プリンタ用の変換フィルタが必要です. 例えば,
- -d オプションを使用するには, DVI
- 用の変換フィルタが必要 です. 詳細については, 「
- 変換フィルタ」で説明しています.
-
+
+
+
+
+ ファイル形式
+ /etc/printcap 項目
+ lpr オプション
+
+
-
- -c
-
- cifplot ファイルを印字します.
-
-
+
+
+ cifplot
+ cf
+ -c
+
+
+ DVI
+ df
+ -d
+
+
+ plot
+ gf
+ -g
+
+
+ ditroff
+ nf
+ -n
+
+
+ FORTRAN text
+ rf
+ -f
+
+
+ troff
+ tf
+ -t
+
+
+ raster
+ vf
+ -v
+
+
+ プレインテキスト
+ if
+ なし, -p , または
+ -l
+
+
+
+
- -d
-
- DVI ファイルを印字します.
-
-
+ 先の例のように, lpr -d
+ を使うためには, 出力先の プリンタの
+ /etc/printcap 内のエントリで,
+ df
+ 項目が必要であることが分かります.
- -f
-
- FORTRAN プログラムを印字します.
-
-
-
- -g
-
- plot のデータを印字します.
-
-
+ 反論はあるかも知れませんが, FORTRAN テキストや plot
+ のような形式は, 多分, 廃れ てていくでしょう.
+ あなたのサイトで, 自前のフィルタをイ ンストールするだけで,
+ プリントオプションのいくつか, あ るいは,
+ 全部に新しい意味を与えることができます. 例えば,
+ Prinerleaf ファイル (Interleaf デスクトップパブリッシン
+ グプログラムによるファイル) を直接印字したいとします.
+ そして, Printerleaf 用の変換フィルタを
+ gf 項目で
+ 指定したパスにインストールすれば, lpr
+ -g の意味 は“Printerleaf
+ ファイルを印字する”意味だとユーザに教
+ えることができます.
+
- -i number
-
- 出力に対して, number
- カラム分の字下げをおこないます.
- number が省略されると,
- 8カラム分字下げされます.
- このオプションはある変換フィルタと一緒の指定されたとき
- のみに機能します.
+
+ 変換フィルタのインストール
-
- -i
- と数字の間に空白を入れてはいけません.
-
-
-
+ 変換フィルタは FreeBSD
+ の基本システムのインストールとは別
+ にインストールするプログラムなので, 変換フィルタは, 多 分,
+ /usr/local ディレクトリの下に置くべ
+ きです. フィルタは LPD だけが実行する特別なプログラム,
+ すなわち, 一般ユーザが実行する必要すらない
+ プログラムなので, /usr/local/libexec
+ ディレ クトリに置くのが普通です.
- -l
-
- 制御文字を含む文字通りの
- テキストデータを印字します.
-
-
+ 変換フィルタを使用可能にするためには,
+ /etc/printcap
+ の目的のプリンタの適切な項目に
+ フィルタがあるパス名を指定します.
- -n
-
- ditroff (device independent troff) データ
- を印字します.
-
-
+ DVI 変換フィルタをプリンタ bamboo
+ のエントリに加 えてみましょう. プリンタ
+ bamboo の df 項目を
+ 新たに加えた/etc/printcap
+ ファイルの例を以下 に再掲します.
- -p
-
- 印字する前に &man.pr.1;
- によってプレインテキストを整形し
- ます. 詳細については &man.pr.1; をご覧ください.
-
-
+
+#
+# /etc/printcap for host rose - added df filter for bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
- -T title
-
- &man.pr.1; コマンドにより生成されるヘッダを,
- ファイル名の
- 代わりに title とする.
- このオプションは, -p
- と一緒に使ったときのみ機能する.
-
-
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
- -t
-
- troff データを印字します.
-
-
+ DVI フィルタは
+ /usr/local/libexec/psdf という
+ 名前のシェルスクリプトです. このスクリプトは次のように
+ なっています.
- -v
-
- ラスタのデータを印字します.
-
-
-
+
+#!bin/sh
+#
+# psdf - DVI to PostScript printer filter
+# Installed in /usr/local/libexec/psdf
+#
+# Invoked by lpd when user runs lpr -d
+#
+exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
- 次の例では, &man.ls.1; の
- マニュアルを美しく整形したものをデフォ
- ルトプリンタで印字しています.
+ このスクリプトでは, dvips
+ をフィルタモード (引数 -f ) で,
+ 標準入力上で起動しています. 標準入力は印字 するジョブです.
+ それから, PostScript プリンタ用フィ ルタ
+ lprps (これについては「
+ プレインテキストのジョブを PostScript
+ プリンタで印字する」 を参照してください) を LPD
+ に与えられた引数を付けて起動 します.
+ lprps
+ はこれらの引数を印字されたページ分
+ の課金をおこなうために使われます.
+
- &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
+
+ 変換フィルタのその他の例
- &man.zcat.1; コマンドで
- &man.ls.1; のマニュアルのソースファイルの圧
- 縮を復元し, これを
- &man.troff.1; コマンドに渡しています. これによ
- り, ソースファイルが整形され, GNU troff の形式となります. そ
- の結果は &man.lpr.1; に渡され,
- LPD スプーラへジョブの要求が発せ
- られます. &man.lpr.1; には
- -t オプションが使われているため,
- スプーラにて, GNU troff の形式からジョブを印字したときにデフォ
- ルトプリントが解釈できる形式へと変換されます.
-
+ 変換フィルタのインストールには決まったステップがないの
+ で, その代わりに, 例をもっと挙げることにします. これを,
+ 自分でフィルタを作る際のガイドにしてください. 適当な例が
+ あったら, それをそのまま使ってください.
-
- ジョブに関するオプション
+ 次のスクリプト例は, Hewlett Packard LaserJet III-Si の
+ ための, raster (ええと・・実は, GIF ファイル) 用の変
+ 換フィルタです.
- 以下のオプションは, &man.lpr.1; によって, そのジョブを特殊
- な扱いにするよう LPD に指示するためのものである.
+
+#!/bin/sh
+#
+# hpvf - Convert GIF files into HP/PCL, then print
+# Installed in /usr/local/libexec/hpvf
-
- -# copies
-
- ジョブに含まれるファイルのそれぞれを
- 1部だけ印字するの ではなく,
- copies
- 部のコピーを生成させるものです. 管理者によっては,
- プリンタの消耗を避け, コピー機による
- 複製を奨励するためにこのオプションの使用が禁止されてい
- るかもしれません. これに関しては, 「
- 複数部のコピーの印字を制限する
- 」をご覧ください.
+PATH=/usr/X11R6/bin:$PATH; export PATH
- 次の例では, デフォルトプリンタで
- parser.c を3 部コピーし, 次に,
- parser.h を3部コピーしています.
-
+giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
+ && exit 0 \
+ || exit 2
- &prompt.user; lpr -#3 parser.c parser.h
-
-
+ ここでは, GIF ファイルから PNM (portable anymap) 形式
+ に変換し, 次に PGM (portable graymap) 形式に変換してか ら,
+ LaserJet/PCL-互換データに変換しています.
- -m
-
- 印字ジョブが完了した後で, メールを送ります.
- このオプショ ンを付けると, LPD
- システムはジョブの扱いが終了したと きに,
- あなたのアカウントにメールを送ります. メールのメッ
- セージには, ジョブが正常終了したのか, あるいは, 何か異
- 常があり, (しばしば)
- その異常が何であったのかが書かれて います.
-
-
+ 上記のフィルタを使うプリンタのためのエントリを付け加え
+ た /etc/printcap
+ ファイルは次のようになります.
- -s
-
- 印字ファイルをスプールディレクトリにコピーせず,
- 代わりに,
- シンボリックリンクを作成するよう指示します.
+
+#
+# /etc/printcap for host orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:\
+ :vf=/usr/local/libexec/hpvf:
- 印字させるジョブのサイズが大きいとき, このオプショ
- ンを使うと便利かもしれません. このオプションにより,
- スプー ルディレクトリの容量が節約されます (それに,
- 巨大なジョ
- ブのお陰でスプールディレクトリのあるファイルシステムの
- 空き容量がなくなってしまうかもしれません). さらに,
- LPD
- がいちいちすべてのデータをコピーする必要がなくなりま
- すので, 時間の節約にもなります.
+ 次のスクリプトは, PostScript プリンタ
+ bamboo のための groff 組版システムの
+ troff データのための変換 フィルタです.
- ただし, 欠点もあります. LPD
- はオリジナルのファイルを 直接参照するので,
- 印字が終了するまでそのファイルを変更
- したり削除することができません.
+
+#!/bin/sh
+#
+# pstf - Convert groff's troff data into PS, then print.
+# Installed in /usr/local/libexec/pstf
+#
+exec grops | /usr/local/libexec/lprps "$@"
-
- リモートのプリンタで印字している場合, LPD は,
- 結局のところ, ローカルホストからリモートホストにファ
- イルをコピーする必要があります. したがって,
- -s オプ
- ションはローカルのスプーリングディレクトリの
- 空き容量を 節約するだけで,
- リモート側では節約されません. それに も関わらず,
- このオプションはそれでも有用です.
-
-
-
+ 上記のスクリプトではプリンタとの通信をおこなうため,
+ lprps をまた利用しています.
+ プリンタがパラレルポー トに接続されている場合は, 代わりに,
+ 次のスクリプトを使 うかもしれません.
- -r
-
- ジョブに含まれるファイルを,
- スプーリングディレクトリに
- ファイルをコピーした後に削除します. もしくは,
- -s オプションと一緒に使われた場合は,
- 印字終了後に削除され ます.
- このオプションの使用には十分注意して下さい.
-
-
-
-
+
+#!/bin/sh
+#
+# pstf - Convert groff's troff data into PS, then print.
+# Installed in /usr/local/libexec/pstf
+#
+exec grops
-
- ヘッダページ用オプション
+ これで完成しました. 次に, フィルタを使用可能にするため
+ に /etc/printcap
+ に加える必要があるエントリを 示します.
- 以下のオプションにより,
- ジョブのヘッダページに通常印字さ
- れるテキストを
- &man.lpr.1; に調整させることができます. 対象のプリ
- ンタからヘッダページが出力されない場合は,
- これらのオプションは
- 何の効力も持ちません.
- ヘッダページの設定に関する情報については,
- 「
- ヘッダページ」を参照してください.
+
+:tf=/usr/local/libexec/pstf:
-
- -C text
-
- ヘッダページに印字されるホスト名を
- text に置き換 えます. なお,
- ホスト名の場所には, 通常, ジョブの要求が
- あったホストの名前が印字されます.
-
-
+ 次の例をみたら, FORTRAN のベテランは赤面するかもしれ
+ ません. この FORTRAN テキストフィルタは, プレインテキ
+ ストを直接印字できるすべてのプリンタで利用できます. この
+ フィルタをプリンタ teak
+ にインストールすることに しましょう.
- -J text
-
- ヘッダページに印字されるジョブ名を
- text に置き換 えます.
- ジョブ名の場所には, 通常, ジョブの最初のファイ ル名,
- または, 標準入力からデータが印字されたときは
- stdin が印字されます.
-
-
+
+#!/bin/sh
+#
+# hprf - FORTRAN text filter for LaserJet 3si:
+# Installed in /usr/local/libexec/hprf
+#
- -h
-
- ヘッダページを出力を禁止します.
+printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0
+exit 2
-
- サイトによっ ては,
- そのヘッダページの生成方法により, このオプション
- の効果が現れないかもしれません. 詳細は, 「
- ヘッダページ」をご覧ください.
-
-
-
-
-
-
+ そして, このフィルタを使用可能にするため, 以下の行を
+ /etc/printcap のプリンタ
+ teak のエントリ に加えます.
-
- プリンタを管理する
+
+:rf=/usr/local/libexec/hprf:
- プリンタの管理者として, プリンタの設置, 設定,
- そして, それ
- らのテストをおこなう必要がありました.
- &man.lpc.8; コマンドにより,
- これまでとは別な管理方法がプリンタと対話的におこなわれます.
- &man.lpc.8; により, 次のことが可能となります.
+ これが最後の, そして, 若干複雑な例です. 前に紹介した
+ LaserJet プリンタ teak に, DVI
+ フィルタを加える ことにしましょう. 最初に,
+ 簡単な部分をおこないます. すなわ ち, DVI フィルタの位置を
+ /etc/printcap に書 き加えます.
+
-
-
- プリンタの起動, 停止をおこなう.
-
+
+:df=/usr/local/libexec/hpdf:
-
- キューへの入力の許可, 禁止をおこなう.
-
+ さて, 難しい部分であるフィルタの作成をおこないます.
+ このた めに, DVI から LaserJet/PCL
+ への変換プログラムが必要 です. FreeBSD のポート集 (「 ポートコレクション」
+ を参照してください) には, それがあ ります.
+ dvi2xx というのがそのパッケージの名前で
+ す. これをインストールすると, 必要なプログラム
+ dvilj2p が使えます. このプログラムは
+ DVI を LaserJet IIp, LaserJet III, そして LaserJet 2000
+ の互 換コードへ変換してくれます.
-
- それぞれのキューにあるジョブの順番を変更する.
-
-
+ dvilj2p はフィルタ
+ hpdf を極めて複雑にしてい ます.
+ なぜなら, dvilj2p
+ は標準入力からデータを読 み込むことができないからです.
+ このプログラムを働かせる ためには, ファイル名が必要です.
+ もっと悪いことに, ファ イル名は .dvi
+ で終わっている必要があり, 標準入力 の代わりに,
+ /dev/fd/0 を使うのは問題がありま す.
+ この問題は, (.dvi で終わる)
+ 一時的なファイル名 から/dev/fd/0 に
+ (シンボリックな) リンクを張る
+ ことで回避することができます. これで,
+ dvilj2p に 強制的に標準入力からデータを
+ 読み込ませることができます.
- 最初に用語に関する注意をしておきます.
- プリンタが停止してい る とは,
- キューの中にあるどのジョブも印字されることがない状態
- を言います. この状態においても,
- ユーザはまだジョブの要求をおこなう ことができますが,
- これらのジョブはキューの中で,
- プリンタがスタートする 状態になるまで,
- あるいは, キューの内容が削除され
- るまで待たされることになります.
+ もう1つの問題は, 一時的なリンクを張るために
+ /tmp ディ
+ レクトリを使うことができないという事実です. シンボリッ
+ クリンクはユーザ, グループが bin
+ であるユーザに所 有されています. フィルタはユーザ
+ daemon として起 動します. そして,
+ /tmp ディレクトリはスティッ
+ キービットが立っています. フィルタはリンクを作ることが
+ できます. しかし, リンクは別のユーザに所有されているた め,
+ 作業が終了したとき, このリンクを削除することができ
+ ません.
- キューが禁止状態にある とは, (root
- 以外の) すべてのユーザが
- プリンタにジョブを要求することができない状態のことを言います.
- キューが許可状態にある 場合は,
- ジョブの入力が許可されます.
- キューが禁止状態にある 場合でも,
- プリンタをスタートす
- る 状態にすることは可能です. この場合は,
- キューが空になるまで,
- キュー内のジョブの印字が続けられます.
+ その代わりに, シンボリックリンクは現在の作業ディレクト
+ リ, すなわち, スプーリングディレクトリ
+ (/etc/printcap の
+ sd 項目で指定する) に作 ることにします.
+ フィルタが作業するにはここの場所は完璧 な場所で, なぜなら,
+ 特に, スプーリングディレクトリのディ スクの空き容量は
+ (ときどき) /tmp ディレクトリ
+ よりもたくさんあるからです.
- 一般的に,
- &man.lpc.8; コマンドを使用するには root の権限を持って
- いる必要があります. 一般のユーザも
- &man.lpc.8; コマンドを使うこと
- はできますが, プリンタの状態を取得することとハングしたプリンタ
- を再スタートすることだけに使用が制限されています.
+ 以下に示すのが最後のフィルタです.
- 以下に,
- &man.lpc.8; コマンドに関する説明の要約を述べます. ほとん
- どのコマンドでは, 操作対象となるプリンタを指定するため
- printer-name 引数を与えます.
- printer-name の代わり
- に all が与えられると, 操作は
- /etc/printcap 内に
- ある全プリンタに対しておこなわれることになります.
+
+#!/bin/sh
+#
+# hpdf - Print DVI data on HP/PCL printer
+# Installed in /usr/local/libexec/hpdf
-
-
- abort printer-name
-
- 現在のジョブをキャンセルし, プリンタを停止させます.
- キュー が許可状態にある場合は,
- ユーザはまだジョブを入力する ことができます.
-
-
+PATH=/usr/local/bin:$PATH; export PATH
-
- clean printer-name
-
- プリンタのスプーリングディレクトリから,
- ジョブの古いファ イルを削除します. 状況によって,
- とりわけ, 印字途中でエ ラーが発生していたり,
- 管理操作が頻発していた場合には,
- ジョブで作られたファイルを LPDが完全に削除しないことが
- あります. このコマンドでは, スプーリングディレクトリに
- 入っていないファイルを見つけ出し,
- それを削除しています.
-
-
+#
+# Define a function to clean up our temporary files. These exist
+# in the current directory, which will be the spooling directory
+# for the printer.
+#
+cleanup() {
+ rm -f hpdf$$.dvi
+}
-
- disable printer-name
-
- キューに新しいジョブを入れることを禁止します.
- プリンタ がスタート状態にあるときは,
- キューに残っているジョブの 印字は続けられます. ただし,
- キューが禁止状態にあったと しても, スーパーユーザ (root)
- は常にジョブを入力するこ とができます.
+#
+# Define a function to handle fatal errors: print the given message
+# and exit 2. Exiting with 2 tells LPD to do not try to reprint the
+# job.
+#
+fatal() {
+ echo "$@" 1>&2
+ cleanup
+ exit 2
+}
- このコマンドは,
- 新しいプリンタやフィルタを設置している
- 間に使用すると有用です. すなわち, キューを禁止状態にし
- ておくと, root によるジョブのみが入力されます. そして,
- その他のユーザは, テストが完了し,
- enable コマン
- ドでキューが再度許可状態になるまで, ジョブの入力はでき
- なくなります.
-
-
+#
+# If user removes the job, LPD will send SIGINT, so trap SIGINT
+# (and a few other signals) to clean up after ourselves.
+#
+trap cleanup 1 2 15
-
- down printer-name
- message
-
- プリンタをダウンさせます. これは,
- disable をおこなっ
- た後で, stop をおこなった場合と
- 等価になります.
- message は, ユーザが
- &man.lpq.1; コマンドでプリンタ
- のキューの状態を調べたり, lpc status
- でプリンタの
- 状態を調べたときに, プリンタの状況として表示されるメッ
- セージです.
-
-
+#
+# Make sure we are not colliding with any existing files.
+#
+cleanup
-
- enable printer-name
-
- プリンタのキューを許可状態にします.
- ユーザはジョブの入 力ができるようになりますが,
- プリンタがスタートの状態に なるまでは,
- プリンタからは何も印字されません.
-
-
+#
+# Link the DVI input file to standard input (the file to print).
+#
+ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
-
- help command-name
-
- command-name
- コマンドのヘルプメッセージを表示しま
- す. command-name
- が指定されなかった場合は, 利用
- できるコマンドの要約が表示されます.
-
-
+#
+# Make LF = CR+LF
+#
+printf "\033&k2G" || fatal "Cannot initialize printer"
-
- restart printer-name
-
- プリンタをスタートさせます. 通常のユーザは, LPD があ
- る異常な状況でハングしたときに限り, このコマンドを使用
- することができます. しかし, stop
- または down コマンドにより,
- 停止状態にあるプリンタをスター トさせることはできません.
- restart コマンドは,
- abort の後に start
- をおこなったことと同じになり ます.
-
-
+#
+# Convert and print. Return value from dvilj2p does not seem to be
+# reliable, so we ignore it.
-
- start printer-name
-
- プリンタをスタートさせます.
- プリンタのキューにあるジョ
- ブを印字することでしょう.
-
-
+#
+dvilj2p -M1 -q -e- dfhp$$.dvi
-
- stop printer-name
-
- プリンタを停止します. プリンタは,
- 現在のジョブを終了さ せ, そして,
- キューにあるその他のジョブは印字しません.
- プリンタが停止状態にあったとしても, まだ, 許可状態にあ
- るキューに対して, ジョブを送ることができます.
-
-
+#
+# Clean up and exit
+#
+cleanup
+exit 0
+
-
- topq printer-name
- job-or-username
+
+ 自動変換: その他の変換フィルタ
+
+ ここまでに述べてきたフィルタによって, 印字環境の能率が
+ 上がったことと思います. しかし, これはどのフィルタを使
+ うかを ( &man.lpr.1; のコマンドライン上で) ユーザが指定しな
+ くてはならないという代価を支払って実現されています. コ
+ ンピュータの事情にあまり詳しくないユーザにとって, フィ
+ ルタのオプションを指定させられるということはいらいらさ
+ せられるものになるでしょう. 更に悪いことに, 間違ったフィ
+ ルタオプションを指定されると, 間違った形式のファイルが
+ そのフィルタに適用されることになり, その結果, 何百枚も
+ の紙を掃き出すことになるかもしれません.
+
+ そのような結果になるならば, 変換フィルタをインストール
+ するよりもむしろ, テキストフィルタ (これがデフォルトフィ
+ ルタなので) に印字するよう要求されたファイルの形式を検
+ 出させ, 自動的に, 適切な変換フィルタを起動するようにし
+ たいと思うかもしれません. ここでは file
+ コマンド のようなツールを役立たせることができます.
+ もちろん, いくつかの
+ ファイル形式の違いを見分けることは難しい ことでしょう.
+ そして, もちろん, それらのファイルに対し ては,
+ 変換フィルタを提供するだけで済ますこともできるの
+ です.
+
+ FreeBSD のポート集には, apsfilter
+ と呼ばれる自 動変換をおこなうテキストフィルタがあります.
+ このフィルタは プレインテキスト, PostScript, DVI
+ ファイルを検 出し, 適当な変換をおこなった後,
+ データを印字することができ ます.
+
+
+
+
+ 出力フィルタ
+
+ LPD スプーリングシステムでは,
+ ここまでにまだ取り上げていな いフィルタ形式,
+ 出力フィルタをサポートしています. 出力 フィルタは,
+ テキストフィルタのように, プレインテキスト
+ のみを印字するために意図されたものですが, 非常に簡単化
+ されています. テキストフィルタを用いずに, 出力フィルタ
+ を使っている場合は, 次のようになります.
+
+
- printer-name
- のキューに対して, ジョブ番号
- job のジョブ, または, ユーザ
- username から送
- られたジョブを置き換えて, キューの先頭に持ってきます.
- このコマンドに関しては,
- printer-name の代わりに
- all
- を使用することはできません.
+ LPD はジョブ中の各ファイルに一度ではなく, ジョブ
+ 全体に対して一度だけ出力フィルタを起動します.
-
-
- up printer-name
- プリンタをアップ状態にします. これの反対のコマンドが
- down です. start
- の次に enable をおこなっ
- たことと等しくなります.
+ LPD は出力フィルタに対し, ジョブ中のファイルの先
+ 頭や末尾を特定するための対策を一切
+ おこなっていません.
-
-
- コマンドラインから上記のコマンドを入力すると,
- &man.lpc.8; はこれ
- を受け付けます. コマンドが入力されなかった場合は,
- &man.lpc.8; は
- 対話モードに入り,
- exit , quit ,
- または, ファイル終端
- 文字が入力されるまでコマンドの入力ができます.
-
-
+
+ LPD はユーザのログイン名やホスト名をフィルタに渡
+ しません. したがって, 課金の処理をおこなうことは考えてい
+ ません. 実際, 出力フィルタには, 以下2つの引数しか与え
+ られません.
-
- プリンタ設定上級編
+
+ filter-name
+ -wwidth
+ -llength
+
- この節では, 特殊な形式のファイルを印字するためのフィルタ,
- ヘッ ダページ, ネットワーク越しのプリンタへの印字, そして,
- プリンタ 使用の制限や課金について説明しています.
+ ここで, width
+ は対象となるプリンタの pw 項 目,
+ length は
+ pl 項目に指定された数です.
+
+
-
- フィルタ
+ 出力フィルタの簡便さに誘惑されてはいけません. もし, ジョ
+ ブ中のそれぞれのファイルに別のページ番号を付加しようと
+ しても,
+ 出力フィルタはうまく動作しないでしょう .
+ そのような動作を期待しているならば, (入力フィルタとし
+ ても知られている) テキストフィルタを使ってください. 詳
+ しくは, 「
+ テキストフィルタのインストール」をご覧ください.
+ さらに, 出力 フィルタは, 実のところ,
+ もっと複雑 になっています. まず,
+ 特殊なフラグ文字を検出するために, フィルタに送ら
+ れてくるバイトストリームを検査する必要があります. また, LPD
+ に代わって, 自分自身にシグナルを送らなければなりま
+ せん.
- LPD では, ネットワークプロトコル, キュー, アクセス制御, そ
- して, 印字のためのその他の側面について扱いますが,
- 実際の 作業のほとんどは
- フィルタ によっておこなわれています.
- フィルタ は, プリンタと通信し,
- プリンタのデバイス依存性や特殊な要求を扱 うプログラムです.
- 簡単なプリンタ設定では, プレインテキストのた
- めのフィルタをインストールしました. このプレインテキストフィル
- タは, ほとんどのプリンタで機能する極めて単純なものでした.
- (「
- テキストフィルタのインストール」を参照)
+ しかしながら, ヘッダページの印字をおこないたい場合,
+ また,
+ エスケープシーケンスやヘッダページを印字できるようにす
+ るその他の初期化文字列を送信する必要がある場合, 出力ファ
+ イルが必要 です.
- しかしながら, 形式変換やプリンタ課金, 特定のプリンタの癖,
- など をうまく利用するためには,
- フィルタがどのように機能するかという
- ことを理解しておくべきです. これらの側面を扱うためには, 最終的
- には, フィルタの責任であるからです. そして, これは悪い情報です
- が, ほとんどの場合において,
- あなた自身 がフィルタを供給す
- る必要があるということです. また都合のよいことには,
- たくさんのフィルタが 一般的に利用できるということです.
- もしフィルタがなかったとし ても, 普通は,
- フィルタを作るのは簡単です.
+ 1台のプリンタに対し, LPD では出力フィルタとテキスト,
+ または, 他のフィルタを両方使うことができます. このよう
+ な場合, LPD はヘッダページ (「
+ ヘッダページ」 を参照してください)
+ だけを印字させるために, 出 力フィルタを起動させます.
+ それから LPD では, アウトプッ トフィルタに2バイトの文字
+ (ASCII 031 の次に ASCII 001) を送ることで,
+ 出力フィルタが自力で停止する ことを
+ 期待しています. 2バイト (031, 001) が出力フィルタに送られ
+ たとき, 出力フィルタは自分自身にシグナル SIGSTOP を送
+ ることによって停止するべきです. LPD がその他のフィル
+ タの起動を完了したとき, LPD は出力フィルタにシグナル
+ SIGCONT を送ることで, 出力フィルタを再起動させます.
- FreeBSD にも, プレインテキストを印字させることができる
- /usr/libexec/lpr/lpf
- というフィルタが1つ付いています.
- (このフィルタはファイルに含まれるバックスペースやタブを扱いま
- す. また, 課金をすることもできますが, できることはこれだけしか
- ありません.) いくつかのフィルタとフィルタの構成要素が FreeBSD
- の ポート集にもあります.
+ 出力フィルタがあり,
+ テキストフィルタがない 場合, LPD
+ はプレインテキストのジョブをおこなう際に, 出力フィル
+ タを使います. 前述したように, 出力フィルタでは, ジョブ
+ 中の各ファイルの並びの間に FROM FEED 文字や紙を排出す
+ る他の文字を入れることはしません. この動作は多分, あな
+ たが求めているものとは
+ 異なっている でしょう. ほと
+ んどすべての場合において, テキストフィルタが必要とされる
+ はずです.
- この節で述べることは次の通りです.
+ プログラム lpf は,
+ テキストフィルタの項で既に紹介 しましたが,
+ 出力フィルタとしても動作させることができま す. もし,
+ 簡便で極悪な出力フィルタが必要で, かつ, バイ
+ トストリームを検査したりシグナルを送るコードを書きたく
+ ないときには, lpf をお試しください.
+ あるいは, プ リントが要求する初期化コードを送るために,
+ lpf を
+ シェルスクリプトに包んで使うこともできます.
+
-
-
- 「
- フィルタはどのように機能しているか」では,
- 印字の過程におけ るフィルタの役割を概説します.
- この節を読むことで, LPD がフィルタを使うときに,
- “見えないところで”何が起こっている
- かが理解できるでしょう. このことを知っておくと, プリン
- タそれぞれに様々なフィルタをインストールしたときに遭遇
- するかもしれない問題を予期したり, デバッグするときに役
- 立つでしょう.
-
+
+ テキストフィルタ lpf
-
- LPD では, すべてのプリンタからデフォルトでプレインテ
- キストを印字できることを期待しています. このことは, プ
- レインテキストを直接印字できない PostScript (また
- は他の言語用の) プリンタでは問題を引き起こします. 「
- プレインテキストのジョブを PostScript
- プリンタで印字する」 で,
- この問題を克服する方法について述べます. PostScript
- プリンタをお持ちの方は, この節をお読みになること
- をお薦めします.
-
+ プログラム /usr/libexec/lpr/lpf は,
+ FreeBSD の バイナリ配布に付属しているテキストフィルタ
+ (入力フィル タ) で, 出力を字下げしたり (lpr
+ -i でジョブが入力さ れたとき),
+ 文字を未処理のままプリンタに送ったり (lpr
+ -l でジョブが入力されたとき), ジョブ中のバッ
+ クスペースやタブの印字位置を調節したり, 印字したページ
+ に対して課金したりすることができます. また, このフィル
+ タは出力フィルタとしても動作させることができます.
-
- PostScript は様々なプログラムのための有名な出
- 力形式です. ある人たちは (著者自身を含めて) PostScript
- のコードさえも直接書いてしまいます. しかし, PostScript
- プリンタは高価です. 「 非 PostScript プリンタで
- PostScript をシミュレートする」では, PostScript
- データを非 PostScript
- プリンタ に受けつけさせ, 印字させるために,
- どのようにしてプリンタ用のテキストフィルタをさらに変更
- すればよいのか, ということについて述べます. PostScript
- プリンタを持っていない方は, この節をお読みになる
- ことをお薦めします.
-
+ lpf
+ は多くの印字環境において使用することに適して います.
+ このフィルタには, プリンタに初期化文字列を送る
+ 機能はありませんが, 必要とされる初期化をおこない, それから
+ lpf
+ を実行させるためのシェルスクリプトを作成する
+ のはたやすいことです.
-
- 「
- 変換フィルタ」では, 図形や組版データといっ
- た特定のファイル形式を, プリンタが理解できる形式へ変換
- する作業を自動的におこなわせる方法について述べます. この節
- を読むと, troff のデータを印字するには lpr
- -t , または, TeX DVI を印字するには
- lpr -d , ラスタイ
- メージデータを印字するには lpr -v ,
- などといったよ
- うにユーザが入力することができるようにプリンタの設定を
- おこなうことができます. この節もお読みになることをお薦めし
- ます.
-
+ lpf に対して,
+ 印字ページへの課金を正確におこなわせる ためには,
+ /etc/printcap ファイルの中の
+ pw と pl
+ の項目に正確な値を入れておく必要が あります. これらの値は,
+ どのくらいの量のテキストがペー ジにフィットするか, また,
+ ユーザのジョブが何ページある のかを調べるために使われます.
+ プリンタの課金についての 詳しい情報については, 「
+ プリンタの利用に対する課金」をご覧ください.
+
+
-
- 「 出力フィルタ」
- では, あまり使われない LPD の機能のすべて, すなわち,
- 出力フィルタに関することが記述されています. ヘッダページ
- (「
- ヘッダページ」参照) を印字させていない場合は,
- 多分, この節は飛ばしても構わないでしょう.
-
+
- 反論はあるかも知れませんが, FORTRAN テキストや plot
- のような形式は, 多分, 廃れ てていくでしょう.
- あなたのサイトで, 自前のフィルタをイ ンストールするだけで,
- プリントオプションのいくつか, あ るいは,
- 全部に新しい意味を与えることができます. 例えば,
- Prinerleaf ファイル (Interleaf デスクトップパブリッシン
- グプログラムによるファイル) を直接印字したいとします.
- そして, Printerleaf 用の変換フィルタを
- gf 項目で
- 指定したパスにインストールすれば, lpr
- -g の意味 は“Printerleaf
- ファイルを印字する”意味だとユーザに教
- えることができます.
-
+
+ リモートプリンタからの出力
-
- 変換フィルタのインストール
+ FreeBSD では, ネットワーク越しの印字, すなわち, ジョブをリ
+ モートプリンタに送ることをサポートしています. リモートプリンタ
+ からの出力をするには, 一般に, 次の2つを参照してください.
+
- 変換フィルタは FreeBSD
- の基本システムのインストールとは別
- にインストールするプログラムなので, 変換フィルタは, 多 分,
- /usr/local ディレクトリの下に置くべ
- きです. フィルタは LPD だけが実行する特別なプログラム,
- すなわち, 一般ユーザが実行する必要すらない
- プログラムなので, /usr/local/libexec
- ディレ クトリに置くのが普通です.
+
+
+ リモートホストに接続されたプリンタにアクセスする方 法.
+ プリンタがあるホストのシリアル, または, パラレルイ
+ ンタフェースに接続されている場合, ネットワーク上の他の
+ ホストからこのプリンタにアクセスできるように LPD を設
+ 定します. 「 リモートホストに
+ 接続されたプリンタ」
+ でどのよう にするかを説明します.
+
- 変換フィルタを使用可能にするためには,
- /etc/printcap
- の目的のプリンタの適切な項目に
- フィルタがあるパス名を指定します.
+
+ ネットワークに直接接続されているプリンタにアクセ
+ スする方法. プリンタに, 旧来のシリアル, または, パラレ
+ ルインタフェースに加えて (もしくは, これらに代わって) ネッ
+ トワーク用のインタフェースがある場合. そのようなプリン
+ タは次のように動作するでしょう.
- DVI 変換フィルタをプリンタ bamboo
- のエントリに加 えてみましょう. プリンタ
- bamboo の df 項目を
- 新たに加えた/etc/printcap
- ファイルの例を以下 に再掲します.
+
+
+ そのプリンタが LPD のプロトコルを理解でき, リモー
+ トホストからのジョブを
+ キューに入れることさえできる場合. この場合,
+ プリンタは, LPD が起動している一般のホスト
+ のように振る舞います. そのようなプリンタを設定するため
+ に, 「
+ リモートホストに接続されたプリンタ」
+ と同様の手 順をおこなってください.
+
-
-#
-# /etc/printcap for host rose - added df filter for bamboo
-#
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:
+
+ そのプリンタが, データストリームによるネットワー
+ ク接続をサポートしている場合. この場合, ネットワーク上
+ の1つのホストとしてプリンタを“接続”します.
+ このホス トは, ジョブをスプーリングする責任を負い,
+ スプーリング されたジョブはプリンタに送られます.
+ そのようなプリンタ
+ をインストールするためのいくつかの提案が「
+ ネットワークにおけるデータストリームの
+ インタフェースを持つプリンタ」にあります.
+
+
+
+
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
- :if=/usr/local/libexec/psif:\
- :df=/usr/local/libexec/psdf:
+
+ リモートホストに接続されたプリンタ
- DVI フィルタは
- /usr/local/libexec/psdf という
- 名前のシェルスクリプトです. このスクリプトは次のように
- なっています.
+ LPD スプーリングシステムでは LPD (または LPD 互換のシス
+ テム)
+ が起動している他のホストへジョブを送る機能が始めからサポー
+ トされています. この機能により,
+ あるホストに接続されたプリンタ へ,
+ 他のホストからアクセスできるようになります. また, LPD プ
+ ロトコルを理解するネットワークインタフェースを持った
+ プリンタに 対しても, この機能は働きます.
-
-#!bin/sh
-#
-# psdf - DVI to PostScript printer filter
-# Installed in /usr/local/libexec/psdf
-#
-# Invoked by lpd when user runs lpr -d
-#
-exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
+ リモートプリンタへの出力を許可するためには, 最初に,
+ あるホスト (これを,
+ プリンタホスト と呼びます)
+ にプリンタを接続します. そして, 「 プリンタ設定導入編」
+ に書かれた簡単なプリンタの設定をおこなってください.
+ 必要ならば, 「 プリンタ設定上級編」
+ にあ る, 更に進んだ設定をおこなってください. そして,
+ そのプリンタをテス トしてうまく動作することを確認し, LPD
+ に許可した機能がうまく働 くかどうかを見てください. さらに
+ ローカルホスト が
+ プリンタホスト の LPD サービスの使用を
+ 許可されているか確認して 下さい (「
+ リモートホストからのプリンタの利用を制限する
+ 」参照).
- このスクリプトでは, dvips
- をフィルタモード (引数 -f ) で,
- 標準入力上で起動しています. 標準入力は印字 するジョブです.
- それから, PostScript プリンタ用フィ ルタ
- lprps (これについては「
- プレインテキストのジョブを PostScript
- プリンタで印字する」 を参照してください) を LPD
- に与えられた引数を付けて起動 します.
- lprps
- はこれらの引数を印字されたページ分
- の課金をおこなうために使われます.
-
+ LPD
+ 互換のネットワークインタフェースを持つプリンタを使用してい
+ る場合は, そのプリンタ自身が以下で説明する
+ プリンタホスト になります. そして,
+ プリンタ名 とは, そのプリンタに設定し
+ た名前のことを指します. これについては, プリンタ, および
+ (また は),
+ プリンタのネットワークインタフェースに付属するドキュメン
+ トを参照してください.
-
- 変換フィルタのその他の例
+
+
+ ヒューレット・パッカード社の Laserjet シリーズを使用している場合には,
+ プリンタ名を text とすると,
+ 自動的に LF から CRLF への変換が行なわれます.
+ そのため, hpif スクリプトは必要ありません.
+
+
- 変換フィルタのインストールには決まったステップがないの
- で, その代わりに, 例をもっと挙げることにします. これを,
- 自分でフィルタを作る際のガイドにしてください. 適当な例が
- あったら, それをそのまま使ってください.
+ 次に,
+ そのプリンタにアクセスしたいと思っている他ホストにおいて,
+ そのホストの /etc/printcap
+ ファイルに次にあげるエント リを作ります.
- 次のスクリプト例は, Hewlett Packard LaserJet III-Si の
- ための, raster (ええと・・実は, GIF ファイル) 用の変
- 換フィルタです.
+
+
+ 名前のエントリ. どんな名前でもよいのですが, 簡単
+ のため, 多分, プリンタホストで設定されたプリンタ名や別
+ 名と同じものを使いたいと思うでしょう.
+
-
-#!/bin/sh
-#
-# hpvf - Convert GIF files into HP/PCL, then print
-# Installed in /usr/local/libexec/hpvf
+
+ lp
+ 項目で指定されるデバイスは明示的に空にす る
+ (:lp=: とする).
+
-PATH=/usr/X11R6/bin:$PATH; export PATH
+
+ スプーリングディレクトリを作成し,
+ sd 項目で その位置を指定する. LPD
+ では, プリンタホストにジョブ を送信するまでの間,
+ このディレクトリにジョブを格納しま す.
+
-giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
- && exit 0 \
- || exit 2
+
+ rm
+ 項目でプリンタホストの名前を指定します.
+
- ここでは, GIF ファイルから PNM (portable anymap) 形式
- に変換し, 次に PGM (portable graymap) 形式に変換してか ら,
- LaserJet/PCL-互換データに変換しています.
+
+ rp 項目で
+ プリンタホスト に接続したプリン
+ タ名を指定します.
+
+
- 上記のフィルタを使うプリンタのためのエントリを付け加え
- た /etc/printcap
- ファイルは次のようになります.
+ これで終わりです.
+ 変換フィルタやページの大きさやその他の事項を
+ /etc/printcap
+ に加える必要はありません.
-
+ 次に,
+ リモートホストに接続されたプリンタで印字するための設定例
+ を示します. ホスト rose には2台のプリンタ
+ bamboo と rattan
+ が接続されています. これらのプリンタをホスト orchid
+ のユーザが使えるようにしましょう. 最初に
+ orchid の
+ /etc/printcap を示します
+ (このファイルは, 「
+ ヘッダページの出力を許可する」
+ で参照することができます). このファイルには, 既に, プリンタ
+ teak 用のエントリがありました. 以下では,
+ これに,
+ ホスト rose
+ にある2台のプリンタ用のエントリが加えられ ています.
+
+
#
-# /etc/printcap for host orchid
+# /etc/printcap for host orchid - added (remote) printers on rose
#
-teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
- :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
- :if=/usr/local/libexec/hpif:\
- :vf=/usr/local/libexec/hpvf:
-
- 次のスクリプトは, PostScript プリンタ
- bamboo のための groff 組版システムの
- troff データのための変換 フィルタです.
-
-#!/bin/sh
#
-# pstf - Convert groff's troff data into PS, then print.
-# Installed in /usr/local/libexec/pstf
+# teak is local; it is connected directly to orchid:
#
-exec grops | /usr/local/libexec/lprps "$@"
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
- 上記のスクリプトではプリンタとの通信をおこなうため,
- lprps をまた利用しています.
- プリンタがパラレルポー トに接続されている場合は, 代わりに,
- 次のスクリプトを使 うかもしれません.
+#
+# rattan is connected to rose; send jobs for rattan to rose:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
-
-#!/bin/sh
#
-# pstf - Convert groff's troff data into PS, then print.
-# Installed in /usr/local/libexec/pstf
+# bamboo is connected to rose as well:
#
-exec grops
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
- これで完成しました. 次に, フィルタを使用可能にするため
- に /etc/printcap
- に加える必要があるエントリを 示します.
+ orchid
+ で必要となる作業はスプーリングディレクトリを
+ 作ることだけです.
-
-:tf=/usr/local/libexec/pstf:
+ &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
+&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
+&prompt.root; chown daemon.daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
- 次の例をみたら, FORTRAN のベテランは赤面するかもしれ
- ません. この FORTRAN テキストフィルタは, プレインテキ
- ストを直接印字できるすべてのプリンタで利用できます. この
- フィルタをプリンタ teak
- にインストールすることに しましょう.
+ これで, orchid のユーザが
+ rattan と bamboo で印字す
+ ることができるようになりました.
+ 例えば, orchid のユーザが次の
+ ように入力したとします.
-
-#!/bin/sh
-#
-# hprf - FORTRAN text filter for LaserJet 3si:
-# Installed in /usr/local/libexec/hprf
-#
+ &prompt.user; lpr -P bamboo -d sushi-review.dvi
-printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0
-exit 2
+ すると, orchid の LPD システムは, ジョブをスプーリングディレ
+ クトリ /var/spool/lpd/bamboo
+ にコピーし, これが DVI
+ ファイルを印字するジョブであることを記録します.
+ ホスト rose の
+ bamboo
+ 用のスプーリングディレクトリに十分な容量が確保でき
+ 次第, 両者の LPD は, ジョブのファイルを rose に転送します. こ
+ のファイルは, そのすべてが印字されるまで, rose
+ のキューに留まり
+ ます. (bamboo は PostScript プリンタなので) DVI から PostScript
+ への変換は rose でおこなわれます.
+
- そして, このフィルタを使用可能にするため, 以下の行を
- /etc/printcap のプリンタ
- teak のエントリ に加えます.
+
+ ネットワークにおけるデータストリームのインタ
+ フェースを持つプリンタ
-
-:rf=/usr/local/libexec/hprf:
+ プリンタのネットワークインタフェースカードは, 2種類に分
+ 類することができます. 1つはスプーラをエミュレートするもの
+ (高価) で, もう 1
+ つはシリアルやパラレルポートを使うようにプリンタにデー
+ タを送ることができるだけのもの (安価) です. この節では,
+ 後者の使 い方を説明します. 前者のプリンタは, 前節「
+ リモートホストに接続されたプリンタ」
+ の方法が適用できます.
- これが最後の, そして, 若干複雑な例です. 前に紹介した
- LaserJet プリンタ teak に, DVI
- フィルタを加える ことにしましょう. 最初に,
- 簡単な部分をおこないます. すなわ ち, DVI フィルタの位置を
- /etc/printcap に書 き加えます.
-
+ /etc/printcap ファイルでは,
+ シリアルかパラレルのイン タフェースのどちらを使うのか,
+ そして, (シリアルインタフェース を使う場合)
+ そのボーレートはいくらであるか, フロー制御は使うのか,
+ タブのための遅延を加えるのか,
+ 改行文字を変換するかなどの指定を おこなうことができます.
+ しかし, TCP/IP や他のネットワークポートか
+ らデータを受け取るプリンタを接続するための
+ 指定をおこなうことはでき ません.
-
-:df=/usr/local/libexec/hpdf:
+ ネットワーク接続されたプリンタにデータを送るためには,
+ テキスト フィルタと変換フィルタから呼び出すことができる
+ 通信プログラムを 開発する必要があります. 以下に,
+ そのようなプログラムの例を示し ます. スクリプト
+ netprint では, 標準入力から印字データを
+ すべて受け取り,
+ ネットワーク接続されたプリンタにこれを送ります.
+ netprint
+ の最初の引数でプリンタのホスト名を, 2番目の引数
+ で接続するポート番号を指定します.
+ このプログラムでは単方向通信 (FreeBSD からプリンタ)
+ のみをサポートしていることに注意してくだ さい.
+ ネットワークプリンタの多くは双方向通信をサポートしていま
+ すので, その恩恵 (プリンタの状態を得たり,
+ 課金をおこなうなど) にあず かりたいと思われるかもしれません.
+
- さて, 難しい部分であるフィルタの作成をおこないます.
- このた めに, DVI から LaserJet/PCL
- への変換プログラムが必要 です. FreeBSD のポート集 (「 ポートコレクション」
- を参照してください) には, それがあ ります.
- dvi2xx というのがそのパッケージの名前で
- す. これをインストールすると, 必要なプログラム
- dvilj2p が使えます. このプログラムは
- DVI を LaserJet IIp, LaserJet III, そして LaserJet 2000
- の互 換コードへ変換してくれます.
+
+#!/usr/bin/perl
+#
+# netprint - Text filter for printer attached to network
+# Installed in /usr/local/libexec/netprint
+#
- dvilj2p はフィルタ
- hpdf を極めて複雑にしてい ます.
- なぜなら, dvilj2p
- は標準入力からデータを読 み込むことができないからです.
- このプログラムを働かせる ためには, ファイル名が必要です.
- もっと悪いことに, ファ イル名は .dvi
- で終わっている必要があり, 標準入力 の代わりに,
- /dev/fd/0 を使うのは問題がありま す.
- この問題は, (.dvi で終わる)
- 一時的なファイル名 から/dev/fd/0 に
- (シンボリックな) リンクを張る
- ことで回避することができます. これで,
- dvilj2p に 強制的に標準入力からデータを
- 読み込ませることができます.
+$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
- もう1つの問題は, 一時的なリンクを張るために
- /tmp ディ
- レクトリを使うことができないという事実です. シンボリッ
- クリンクはユーザ, グループが bin
- であるユーザに所 有されています. フィルタはユーザ
- daemon として起 動します. そして,
- /tmp ディレクトリはスティッ
- キービットが立っています. フィルタはリンクを作ることが
- できます. しかし, リンクは別のユーザに所有されているた め,
- 作業が終了したとき, このリンクを削除することができ
- ません.
+$printer_host = $ARGV[0];
+$printer_port = $ARGV[1];
- その代わりに, シンボリックリンクは現在の作業ディレクト
- リ, すなわち, スプーリングディレクトリ
- (/etc/printcap の
- sd 項目で指定する) に作 ることにします.
- フィルタが作業するにはここの場所は完璧 な場所で, なぜなら,
- 特に, スプーリングディレクトリのディ スクの空き容量は
- (ときどき) /tmp ディレクトリ
- よりもたくさんあるからです.
+require 'sys/socket.ph';
- 以下に示すのが最後のフィルタです.
+($ignore, $ignore, $protocol) = getprotobyname('tcp');
+($ignore, $ignore, $ignore, $ignore, $address)
+ = gethostbyname($printer_host);
-
-#!/bin/sh
-#
-# hpdf - Print DVI data on HP/PCL printer
-# Installed in /usr/local/libexec/hpdf
+$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
-PATH=/usr/local/bin:$PATH; export PATH
+socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
+ || die "Can't create TCP/IP stream socket: $!";
+connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
+while (<STDIN>) { print PRINTER; }
+exit 0;
-#
-# Define a function to clean up our temporary files. These exist
-# in the current directory, which will be the spooling directory
-# for the printer.
-#
-cleanup() {
- rm -f hpdf$$.dvi
-}
+ このスクリプトは,
+ 様々なフィルタが利用することができます. 仮に, Diablo 750-N
+ ラインプリンタを持っており, これがネットワークに
+ 接続されているとしましょう.
+ プリンタはポート番号5100にて印字す るデータを受け取ります.
+ プリンタのホスト名は scrivener としま す. このとき,
+ このプリンタのテキストフィルタは次のようになりま す.
+
+#!/bin/sh
#
-# Define a function to handle fatal errors: print the given message
-# and exit 2. Exiting with 2 tells LPD to do not try to reprint the
-# job.
+# diablo-if-net - Text filter for Diablo printer `scrivener' listening
+# on port 5100. Installed in /usr/local/libexec/diablo-if-net
#
-fatal() {
- echo "$@" 1>&2
- cleanup
- exit 2
-}
-#
-# If user removes the job, LPD will send SIGINT, so trap SIGINT
-# (and a few other signals) to clean up after ourselves.
-#
-trap cleanup 1 2 15
+exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
+
+
-#
-# Make sure we are not colliding with any existing files.
-#
-cleanup
+
+ プリンタの利用に制約を与える
-#
-# Link the DVI input file to standard input (the file to print).
-#
-ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
+ 本節では, プリンタの利用に制約を与えるための情報を記して
+ います. LPD システムでは, プリンタ (ローカル, リモートのいずれ
+ に接続されていても) にアクセスできる人を制限する機能, 複数部の
+ コピーの印字の可否を制御する機能, ジョブのサイズの最大値やプリ
+ ンタキューに入るジョブの最大個数を制御する
+ 機能を提供しています.
-#
-# Make LF = CR+LF
-#
-printf "\033&k2G" || fatal "Cannot initialize printer"
+
+ 複数部のコピーの印字を制限する
-#
-# Convert and print. Return value from dvilj2p does not seem to be
-# reliable, so we ignore it.
+ LPD
+ システムではユーザが複数部のコピーの印字を簡単におこなう
+ 機能を提供しています. ユーザが, (例えば) lpr
+ -#5 コマ ンドを使ってジョブを印字すると,
+ ジョブのそれぞれのファイルのコ ピーを5部得ることができます.
+ これがよい機能であると思うかどう
+ かは人それぞれでしょう.
-#
-dvilj2p -M1 -q -e- dfhp$$.dvi
+ 複数部のコピーの印字によってプリンタが
+ 必要以上に消耗してしまう
+ と感じるならば, /etc/printcap
+ ファイルに sc 項
+ 目を加えてください. これにより,
+ &man.lpr.1; の -# オプションの使用
+ が禁止されます. このオプションが指定されているにも関らず,
+ -# オプションを使うと,
+ 次のようなメッセージが表示され,
+ このオプションの利用できない旨を伝えます.
-#
-# Clean up and exit
-#
-cleanup
-exit 0
-
+ lpr: multiple copies are not allowed
-
- 自動変換: その他の変換フィルタ
+ リモートホストからプリンタをアクセスできる
+ 設定にしている場合 (この 設定については, 「
+ リモートホストに接続されたプリンタ」
+ をご覧ください), その リモートホストの
+ /etc/printcap にも同じように
+ sc
+ 項目を追加する必要があることに注意してください.
+ そうしないと, ユーザは別なホストから複数部のコピーの
+ 印字することができてしま います.
- ここまでに述べてきたフィルタによって, 印字環境の能率が
- 上がったことと思います. しかし, これはどのフィルタを使
- うかを ( &man.lpr.1; のコマンドライン上で) ユーザが指定しな
- くてはならないという代価を支払って実現されています. コ
- ンピュータの事情にあまり詳しくないユーザにとって, フィ
- ルタのオプションを指定させられるということはいらいらさ
- せられるものになるでしょう. 更に悪いことに, 間違ったフィ
- ルタオプションを指定されると, 間違った形式のファイルが
- そのフィルタに適用されることになり, その結果, 何百枚も
- の紙を掃き出すことになるかもしれません.
+ 例を使って説明しましょう. 次に示す
+ /etc/printcap ファ イルは, ホスト
+ rose のものです. プリンタ
+ rattan は極めて 頑丈なので,
+ 複数部のコピーの印字は許可されています. しかし, レー
+ ザプリンタの bamboo
+ はもう少しデリケートで, このプリンタ
+ から複数部のコピーを印字することを sc
+ 項目を追加すること で禁止しています.
- そのような結果になるならば, 変換フィルタをインストール
- するよりもむしろ, テキストフィルタ (これがデフォルトフィ
- ルタなので) に印字するよう要求されたファイルの形式を検
- 出させ, 自動的に, 適切な変換フィルタを起動するようにし
- たいと思うかもしれません. ここでは file
- コマンド のようなツールを役立たせることができます.
- もちろん, いくつかの
- ファイル形式の違いを見分けることは難しい ことでしょう.
- そして, もちろん, それらのファイルに対し ては,
- 変換フィルタを提供するだけで済ますこともできるの
- です.
+
+#
+# /etc/printcap for host rose - restrict multiple copies on bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
- FreeBSD のポート集には, apsfilter
- と呼ばれる自 動変換をおこなうテキストフィルタがあります.
- このフィルタは プレインテキスト, PostScript, DVI
- ファイルを検 出し, 適当な変換をおこなった後,
- データを印字することができ ます.
-
-
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:\
+ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
-
- 出力フィルタ
+ さらに, orchid の /etc/printcap
+ にも sc 項目を
+ 追加する必要があります (orchid
+ でこの編集をおこなっているときに, つ いでに, プリンタ
+ teak でも複数部のコピーの印字を禁止する
+ ことにしましょう).
- LPD スプーリングシステムでは,
- ここまでにまだ取り上げていな いフィルタ形式,
- 出力フィルタをサポートしています. 出力 フィルタは,
- テキストフィルタのように, プレインテキスト
- のみを印字するために意図されたものですが, 非常に簡単化
- されています. テキストフィルタを用いずに, 出力フィルタ
- を使っている場合は, 次のようになります.
+
+#
+# /etc/printcap for host orchid - no multiple copies for local
+# printer teak or remote printer bamboo
-
-
- LPD はジョブ中の各ファイルに一度ではなく, ジョブ
- 全体に対して一度だけ出力フィルタを起動します.
-
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
-
- LPD は出力フィルタに対し, ジョブ中のファイルの先
- 頭や末尾を特定するための対策を一切
- おこなっていません.
-
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
-
- LPD はユーザのログイン名やホスト名をフィルタに渡
- しません. したがって, 課金の処理をおこなうことは考えてい
- ません. 実際, 出力フィルタには, 以下2つの引数しか与え
- られません.
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
-
- filter-name
- -wwidth
- -llength
-
+ sc 項目を指定することにより,
+ lpr -# の使用を防
+ ぐことができます. しかし, この状態では
+ &man.lpr.1; を複数回起動し
+ たり, 1回のジョブで次のように同じファイルを
+ 複数個指定すること
+ を防ぐまでには至っていません.
- ここで, width
- は対象となるプリンタの pw 項 目,
- length は
- pl 項目に指定された数です.
-
-
+ &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
- 出力フィルタの簡便さに誘惑されてはいけません. もし, ジョ
- ブ中のそれぞれのファイルに別のページ番号を付加しようと
- しても,
- 出力フィルタはうまく動作しないでしょう .
- そのような動作を期待しているならば, (入力フィルタとし
- ても知られている) テキストフィルタを使ってください. 詳
- しくは, 「
- テキストフィルタのインストール」をご覧ください.
- さらに, 出力 フィルタは, 実のところ,
- もっと複雑 になっています. まず,
- 特殊なフラグ文字を検出するために, フィルタに送ら
- れてくるバイトストリームを検査する必要があります. また, LPD
- に代わって, 自分自身にシグナルを送らなければなりま
- せん.
+ このような悪用を防ぐ方法は
+ (その指示を無視することも含めて) たく さんあります.
+ 各自で調べてみてください.
+
- しかしながら, ヘッダページの印字をおこないたい場合,
- また,
- エスケープシーケンスやヘッダページを印字できるようにす
- るその他の初期化文字列を送信する必要がある場合, 出力ファ
- イルが必要 です.
+
+ プリンタを使用できる人を限定する
- 1台のプリンタに対し, LPD では出力フィルタとテキスト,
- または, 他のフィルタを両方使うことができます. このよう
- な場合, LPD はヘッダページ (「
- ヘッダページ」 を参照してください)
- だけを印字させるために, 出 力フィルタを起動させます.
- それから LPD では, アウトプッ トフィルタに2バイトの文字
- (ASCII 031 の次に ASCII 001) を送ることで,
- 出力フィルタが自力で停止する ことを
- 期待しています. 2バイト (031, 001) が出力フィルタに送られ
- たとき, 出力フィルタは自分自身にシグナル SIGSTOP を送
- ることによって停止するべきです. LPD がその他のフィル
- タの起動を完了したとき, LPD は出力フィルタにシグナル
- SIGCONT を送ることで, 出力フィルタを再起動させます.
+ それぞれのプリンタを使用できる人を限定するには, UNIX の
+ グループ権限のメカニズムを利用し, さらに,
+ /etc/printcap で rg
+ 項目を指定することでおこないます.
+ あるプリンタにアクセスさせてもよいと思うユーザすべてを
+ UNIXのある グループに入れてください. そして,
+ そのグループ名を rg で 指定します.
- 出力フィルタがあり,
- テキストフィルタがない 場合, LPD
- はプレインテキストのジョブをおこなう際に, 出力フィル
- タを使います. 前述したように, 出力フィルタでは, ジョブ
- 中の各ファイルの並びの間に FROM FEED 文字や紙を排出す
- る他の文字を入れることはしません. この動作は多分, あな
- たが求めているものとは
- 異なっている でしょう. ほと
- んどすべての場合において, テキストフィルタが必要とされる
- はずです.
+ このとき, そのグループに含まれないユーザ
+ (root も含む) には, 次のようなメッセー
+ ジが表示され, プリンタの使用はできません.
- プログラム lpf は,
- テキストフィルタの項で既に紹介 しましたが,
- 出力フィルタとしても動作させることができま す. もし,
- 簡便で極悪な出力フィルタが必要で, かつ, バイ
- トストリームを検査したりシグナルを送るコードを書きたく
- ないときには, lpf をお試しください.
- あるいは, プ リントが要求する初期化コードを送るために,
- lpf を
- シェルスクリプトに包んで使うこともできます.
-
+
+ lpr: Not a member of the restricted group
+
+
-
- テキストフィルタ lpf
+ sc (suppress multiple copies :
+ 複数部のコピーの印字を禁止
+ する) を指定するときと同様に, rg
+ が指定されたプリンタがリ
+ モートホストからもアクセスでき
+ (この設定については,
+ 「
+ リモートホストに接続されたプリンタ」
+ をご覧ください), かつ, そ
+ のホストでもプリンタを使用できる人を限定するのが
+ 妥当であると思
+ う場合は, そのホストの
+ /etc/printcap にも
+ rg 指
+ 定をおこなう必要があります.
- プログラム /usr/libexec/lpr/lpf は,
- FreeBSD の バイナリ配布に付属しているテキストフィルタ
- (入力フィル タ) で, 出力を字下げしたり (lpr
- -i でジョブが入力さ れたとき),
- 文字を未処理のままプリンタに送ったり (lpr
- -l でジョブが入力されたとき), ジョブ中のバッ
- クスペースやタブの印字位置を調節したり, 印字したページ
- に対して課金したりすることができます. また, このフィル
- タは出力フィルタとしても動作させることができます.
+ 例えば, プリンタ rattan
+ は誰でも利用できるが, bamboo はグループ
+ artists に属している人のみが利用で
+ きるようにしてみましょう. 以下に, もうお馴染みとなったホスト
+ rose の /etc/printcap
+ を示します.
- lpf
- は多くの印字環境において使用することに適して います.
- このフィルタには, プリンタに初期化文字列を送る
- 機能はありませんが, 必要とされる初期化をおこない, それから
- lpf
- を実行させるためのシェルスクリプトを作成する
- のはたやすいことです.
+
+#
+# /etc/printcap for host rose - restricted group for bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
- lpf に対して,
- 印字ページへの課金を正確におこなわせる ためには,
- /etc/printcap ファイルの中の
- pw と pl
- の項目に正確な値を入れておく必要が あります. これらの値は,
- どのくらいの量のテキストがペー ジにフィットするか, また,
- ユーザのジョブが何ページある のかを調べるために使われます.
- プリンタの課金についての 詳しい情報については, 「
- プリンタの利用に対する課金」をご覧ください.
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
+ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ これ以外の /etc/printcap ファイル
+ (ホスト orchid のもの)
+ はそのままにしておくことにします. もちろん,
+ orchid のユーザは 全員
+ bamboo を利用することができます. これは,
+ orchid に
+ は特定のユーザのみにしかアクセスさせておらず,
+ そのユーザにはプ
+ リンタを利用させたいと思っているからなのかもしれませんし,
+ そう でないかもしれません.
+
+
+ 1台のプリンタを複数グループのユーザに利用させること
+ はできません.
+
-
-
+
+ プリンタの利用に対する課金
+ という訳で, 印字するためには料金をとることが必要です. 取ら
+ ない理由などありましょうか. 紙やインクにはお金がかかります. そ
+ して, プリンタの維持費もかかります. プリンタには可動部分が搭載
+ されており, これらの部分は壊れやすいという傾向があります. プリ
+ ンタや, その利用形態, 維持費について調査をし, 1ページ (1フィー
+ ト, 1メートルなど) 当たりにかかるコストを調べておいてください.
+ これに基づき, プリンタの利用に対する課金を, 実際に, どのように
+ 始めればよいのでしょうか.
+ さて, 残念ながら, この部分に関しては LPD
+ スプーリングシステム はほとんど役に立ちません.
+ 課金は使用しているプリンタの種類, 印
+ 字するもののファイルの形式,
+ プリンタの利用に対する課金での
+ あなた自身の 要求に大きく左右されます.
+ 課金システムを実現するためには, プリンタのテキストフィルタ
+ (プ レインテキストのジョブに対して課金するため) と変換フィルタ
+ (その 他のファイル形式に対して課金するため) を変更して,
+ 印字したペー ジを数えたり,
+ プリンタに印字したページ数を取得するための要求を
+ 送る必要があります. ただし, 出力フィルタのみを利用している場合
+ は, 課金をおこなうことができません. フィルタに関しては,
+ 「
+ フィルタ」をご覧く ださい.
- Job: outline
- Date: Sun Sep 17 11:04:58 1995
-
- LPD はこのテキストの終わりに FROM FEED 文字を加えます
- ので, ジョブは新しいページから開始されます (ただし,
- /etc/printcap
- で出力先のプリンタのエントリに sf
- (suppress form feeds) が指定されているときはこ
- の限りではありません).
-
- お望みならば, LPD
- に短いヘッダページ を出力させる
- こともできます. この場合は,
- /etc/printcap ファ イルの中で
- sb (short banner) を指定してください.
- ヘッダページは次のようになります.
-
-
-rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
-
- デフォルトでは, LPD はヘッダページを最初に印字し, 次
- にジョブの印字をおこないます. この順番を逆にするときは,
- /etc/printcap で hl
- (header last) を指定 してください.
-
-
-
-
-
+ -c
+
+ ユーザ名のアルファベット順ではなく,
+ 課金額の低い順にリ ストを並べます.
+
+
-
- リモートプリンタからの出力
+ -m
+
+ 課金データファイルにあるホスト名を無視します.
+ このオプショ ンを使用すると, ホスト
+ alpha のユーザ
+ smith とホスト
+ gamma のユーザ
+ smith は同一人物として扱われます.
+ この オプションが指定されない場合は,
+ 両者は別なユーザとして 扱います.
+
+
- FreeBSD では, ネットワーク越しの印字, すなわち, ジョブをリ
- モートプリンタに送ることをサポートしています. リモートプリンタ
- からの出力をするには, 一般に, 次の2つを参照してください.
-
+ -pprice
+
+ /etc/printcap の
+ pc 項目で指定された値, または,
+ デフォルトの値 (2セント) に代わり, 紙1ページ, ま たは,
+ 1フィート当たりの価格を指定します.
+ price として,
+ 浮動小数点数を指定することができます.
+
+
-
-
- リモートホストに接続されたプリンタにアクセスする方 法.
- プリンタがあるホストのシリアル, または, パラレルイ
- ンタフェースに接続されている場合, ネットワーク上の他の
- ホストからこのプリンタにアクセスできるように LPD を設
- 定します. 「 リモートホストに
- 接続されたプリンタ」
- でどのよう にするかを説明します.
-
+ -r
+
+ リストの並べる順番を逆順にします.
+
+
-
- ネットワークに直接接続されているプリンタにアクセ
- スする方法. プリンタに, 旧来のシリアル, または, パラレ
- ルインタフェースに加えて (もしくは, これらに代わって) ネッ
- トワーク用のインタフェースがある場合. そのようなプリン
- タは次のように動作するでしょう.
+ -s
+
+ 課金リストを作成し,
+ 課金データファイルを削除します.
+
+
-
+ name …
- そのプリンタが LPD のプロトコルを理解でき, リモー
- トホストからのジョブを
- キューに入れることさえできる場合. この場合,
- プリンタは, LPD が起動している一般のホスト
- のように振る舞います. そのようなプリンタを設定するため
- に, 「
- リモートホストに接続されたプリンタ」
- と同様の手 順をおこなってください.
+ ユーザ names
+ に対する課金情報のみを表示します.
+
+
+
+ &man.pac.8; が生成するデフォルトのリストには,
+ 各ホストのユーザ別
+ に印字ページ数が表示されます.
+ (ユーザがサイト内のすべてのホスト
+ を使用できるため) ホスト名の情報が意味を持たない場合,
+ pac -m
+ を実行してください. 次のようなリストが得られます.
+
+ Login pages/feet runs price
+andy 2.00 1 $ 0.04
+kelly 182.00 105 $ 3.64
+mary 118.00 35 $ 2.36
+root 26.00 12 $ 0.52
+zhang 9.00 1 $ 0.18
-
- そのプリンタが, データストリームによるネットワー
- ク接続をサポートしている場合. この場合, ネットワーク上
- の1つのホストとしてプリンタを“接続”します.
- このホス トは, ジョブをスプーリングする責任を負い,
- スプーリング されたジョブはプリンタに送られます.
- そのようなプリンタ
- をインストールするためのいくつかの提案が「
- ネットワークにおけるデータストリームの
- インタフェースを持つプリンタ」にあります.
-
-
-
-
+total 337.00 154 $ 6.74
-
- リモートホストに接続されたプリンタ
+ 課金額を決めるために,
+ &man.pac.8; は /etc/printcap ファ
+ イルの pc
+ 項目で指定された値 (デフォルト値は200, すなわち1
+ ページ当たり2セント)
+ を使います. この項目で, 印字物に課金したい
+ と思う1ページ当たり,
+ または, 1フィート当たりの価格を100分の1セ
+ ント単位で指定します.
+ &man.pac.8; を -p オプション付きで起動
+ すると, この値を置き換えることができます.
+ この -p オプショ
+ ンで指定する額の単位は,
+ 100分の1セント単位ではなく, ドル単位で
+ す. 例えば, 次の指定では,
+ 1ページ当たりの単価が1ドル50セントに
+ なります.
- LPD スプーリングシステムでは LPD (または LPD 互換のシス
- テム)
- が起動している他のホストへジョブを送る機能が始めからサポー
- トされています. この機能により,
- あるホストに接続されたプリンタ へ,
- 他のホストからアクセスできるようになります. また, LPD プ
- ロトコルを理解するネットワークインタフェースを持った
- プリンタに 対しても, この機能は働きます.
+ &prompt.root; pac -p1.50
- リモートプリンタへの出力を許可するためには, 最初に,
- あるホスト (これを,
- プリンタホスト と呼びます)
- にプリンタを接続します. そして, 「 プリンタ設定導入編」
- に書かれた簡単なプリンタの設定をおこなってください.
- 必要ならば, 「 プリンタ設定上級編」
- にあ る, 更に進んだ設定をおこなってください. そして,
- そのプリンタをテス トしてうまく動作することを確認し, LPD
- に許可した機能がうまく働 くかどうかを見てください. さらに
- ローカルホスト が
- プリンタホスト の LPD サービスの使用を
- 許可されているか確認して 下さい (「
- リモートホストからのプリンタの利用を制限する
- 」参照).
+ このオプションを使うと,
+ 実際の課金額を集計することができます.
- LPD
- 互換のネットワークインタフェースを持つプリンタを使用してい
- る場合は, そのプリンタ自身が以下で説明する
- プリンタホスト になります. そして,
- プリンタ名 とは, そのプリンタに設定し
- た名前のことを指します. これについては, プリンタ, および
- (また は),
- プリンタのネットワークインタフェースに付属するドキュメン
- トを参照してください.
+ 最後に, pac -s
+ を起動すると, 課金情報は課金データ累計ファ
+ イルに保存されます.
+ このファイルの名前は, プリンタの課金データ
+ ファイルの後ろに
+ _sum を付けたものとなります. そして, 課
+ 金データファイルは削除されます. 次に
+ &man.pac.8; が起動されると,
+ その時点までの累計金額を得るために,
+ 課金データ累計ファイルが読
+ み込まれ, 通常の課金データファイルからの情報に
+ 加算されます.
+
-
-
- ヒューレット・パッカード社の Laserjet シリーズを使用している場合には,
- プリンタ名を text とすると,
- 自動的に LF から CRLF への変換が行なわれます.
- そのため, hpif スクリプトは必要ありません.
-
-
+
+ 印字されたページ数をどのように数えるか?
- 次に,
- そのプリンタにアクセスしたいと思っている他ホストにおいて,
- そのホストの /etc/printcap
- ファイルに次にあげるエント リを作ります.
+ 課金を, リモートホストからの印字でさえも,
+ 正確におこなうため には,
+ ジョブで使用された紙が何ページであるかを特定でき
+ る必要があります. このことは, プリンタ利用に対する課金
+ をおこなう上の根本的な問題です.
-
-
- 名前のエントリ. どんな名前でもよいのですが, 簡単
- のため, 多分, プリンタホストで設定されたプリンタ名や別
- 名と同じものを使いたいと思うでしょう.
-
+ プレインテキストのジョブの場合, 問題を解決するのはさほ
+ ど難しくはありません. ジョブが何行であったかを数え, プ
+ リンタがサポートしている紙1ページに印字できる最大の行
+ 数と比較すればよいのです. 重ね打ちするために利用される
+ ファイル中のバックスペース文字や, 物理的に複数の行に渡
+ る長い論理行に対する取り扱いを
+ 忘れずにおこなってください.
-
- lp
- 項目で指定されるデバイスは明示的に空にす る
- (:lp=: とする).
-
+ (「 テキストフィ,ルタ
+ lpf」で紹介した) テキストフィルタ
+ lpf では, 課金をおこなうときに,
+ これらの取り扱いをおこなってくれます. 課
+ 金をおこなうために必要なテキストフィルタを作成している方は,
+ lpf
+ のソースコードが参考になるでしょう.
-
- スプーリングディレクトリを作成し,
- sd 項目で その位置を指定する. LPD
- では, プリンタホストにジョブ を送信するまでの間,
- このディレクトリにジョブを格納しま す.
-
+ これに対して, 他のファイル形式の処理はどのようにすれば
+ よいのでしょうか.
-
- rm
- 項目でプリンタホストの名前を指定します.
-
+ まず, DVI から LaserJet, または, DVI から PostScript
+ への変換の場合, フィルタが dvilj や
+ dvips の 出力メッセージを解析することで,
+ 何ページ分の変換がおこなわ れたかを知ることができます.
+ 他のファイル形式とその変換 プログラムに関しても,
+ 同様のことができるかもしれません.
-
- rp 項目で
- プリンタホスト に接続したプリン
- タ名を指定します.
-
-
+ しかし, この方式には問題点があります. それは, 変換され
+ たページがすべて印字されるとは限らないということです. 例
+ えば, プリンタが紙詰まりを起こしたり, トナー切れになっ たり,
+ はたまた, 爆発したりするかもしれません. そのよう
+ な状況により印字が途中で中止されたとしても, この方式で は,
+ ユーザは全ページ分の料金を課されてしまうのです.
- これで終わりです.
- 変換フィルタやページの大きさやその他の事項を
- /etc/printcap
- に加える必要はありません.
+ それでは, どのような対策をたてることができるのでしょう
+ か.
- 次に,
- リモートホストに接続されたプリンタで印字するための設定例
- を示します. ホスト rose には2台のプリンタ
- bamboo と rattan
- が接続されています. これらのプリンタをホスト orchid
- のユーザが使えるようにしましょう. 最初に
- orchid の
- /etc/printcap を示します
- (このファイルは, 「
- ヘッダページの出力を許可する」
- で参照することができます). このファイルには, 既に, プリンタ
- teak 用のエントリがありました. 以下では,
- これに,
- ホスト rose
- にある2台のプリンタ用のエントリが加えられ ています.
+ 正確な
+ 課金をおこなうための唯一の確実な 方法は,
+ 何 ページ印字したのかを知らせることができるプリンタを入手
+ し, これをシリアルポートかネットワークに接続することで す.
+ ほとんどすべての PostScript プリンタではこの概念
+ がサポートされています. 他のプリンタも同様です (Imagen
+ レーザプリンタをネットワーク接続するなど). それぞれの
+ プリンタのフィルタを, ジョブを印字した後で印字ページ数
+ を得るように, 変更してください. そして, 課金情報はここ
+ で得られた値のみに
+ 基づいて記録してください. 行数 を数えたり,
+ エラーが生じやすいファイルの調査は必要とさ れません.
-
-#
-# /etc/printcap for host orchid - added (remote) printers on rose
-#
+ もちろん, 気前よく印字料
+ 金をすべて無料にすることもできます.
+
+
+
-#
-# teak is local; it is connected directly to orchid:
-#
-teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
- :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
- :if=/usr/local/libexec/ifhp:\
- :vf=/usr/local/libexec/vfhp:\
- :of=/usr/local/libexec/ofhp:
+
+ プリンタを使う
-#
-# rattan is connected to rose; send jobs for rattan to rose:
-#
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+ この節では, FreeBSD で設定したプリンタを使う方法について説明
+ します. ここでは, ユーザレベルでのコマンドを概説します.
-#
-# bamboo is connected to rose as well:
-#
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
+
+ &man.lpr.1;
+
+ 印字をおこないます.
+
+
- orchid
- で必要となる作業はスプーリングディレクトリを
- 作ることだけです.
+ &man.lpq.1;
+
+ プリンタキューを調べます.
+
+
- &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
-&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
-&prompt.root; chown daemon.daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
+ &man.lprm.1;
+
+ プリンタキューにあるジョブを削除します.
+
+
+
+
+ 管理者用コマンド &man.lpc.8; もありますが,
+ これは 「 プリンタを管理する」
+ に記
+ します. このコマンドは, プリンタやそのキューの制御のために用い
+ られます.
+
+ &man.lpr.1;, &man.lprm.1;, そして &man.lpq.1; の 3
+ コマンドは, -Pprinter-name
+ オプションをとり, これによって,
+ /etc/printcap のように操作の対象となる
+ プリンタやキュー
+ を指定します. これによって, 様々なプリンタに対してジョブを送る
+ , 取り消す, 調査することができます.
+ -P が使われなかった場
+ 合は, これらのコマンドは
+ PRINTER 環境変数で指定されたプリンタ
+ を使用します.
+ そして, PRINTER 環境変数がなかった場合は, これ
+ らのコマンドはデフォルトのプリンタ
+ lp を使います.
- これで, orchid のユーザが
- rattan と bamboo で印字す
- ることができるようになりました.
- 例えば, orchid のユーザが次の
- ように入力したとします.
+ 以下では, デフォルトプリンタ
+ という用語が意味するプリンタ は, PRINTER
+ 環境変数で指定されたプリンタ, もしくは, PRINTER
+ 環境変数がない場合は, lp
+ という名前のプリンタです.
- &prompt.user; lpr -P bamboo -d sushi-review.dvi
+
+ 印字する
- すると, orchid の LPD システムは, ジョブをスプーリングディレ
- クトリ /var/spool/lpd/bamboo
- にコピーし, これが DVI
- ファイルを印字するジョブであることを記録します.
- ホスト rose の
- bamboo
- 用のスプーリングディレクトリに十分な容量が確保でき
- 次第, 両者の LPD は, ジョブのファイルを rose に転送します. こ
- のファイルは, そのすべてが印字されるまで, rose
- のキューに留まり
- ます. (bamboo は PostScript プリンタなので) DVI から PostScript
- への変換は rose でおこなわれます.
-
+ ファイルを印字するためには,
+ 次のように入力してください.
-
- ネットワークにおけるデータストリームのインタ
- フェースを持つプリンタ
+ &prompt.user; lpr filename ...
- プリンタのネットワークインタフェースカードは, 2種類に分
- 類することができます. 1つはスプーラをエミュレートするもの
- (高価) で, もう 1
- つはシリアルやパラレルポートを使うようにプリンタにデー
- タを送ることができるだけのもの (安価) です. この節では,
- 後者の使 い方を説明します. 前者のプリンタは, 前節「
- リモートホストに接続されたプリンタ」
- の方法が適用できます.
+ これにより,
+ 入力されたファイルのそれぞれをデフォルトのプリンタ
+ から印字します. ファイル名が与えられなかった場合,
+ &man.lpr.1;
+ は標準入力から印字するデータを読み込みます. 例えば, 次のコマン
+ ドにより, ある重要なシステムファイルが印字されます.
- /etc/printcap ファイルでは,
- シリアルかパラレルのイン タフェースのどちらを使うのか,
- そして, (シリアルインタフェース を使う場合)
- そのボーレートはいくらであるか, フロー制御は使うのか,
- タブのための遅延を加えるのか,
- 改行文字を変換するかなどの指定を おこなうことができます.
- しかし, TCP/IP や他のネットワークポートか
- らデータを受け取るプリンタを接続するための
- 指定をおこなうことはでき ません.
+ &prompt.user; lpr /etc/host.conf /etc/hosts.equiv
- ネットワーク接続されたプリンタにデータを送るためには,
- テキスト フィルタと変換フィルタから呼び出すことができる
- 通信プログラムを 開発する必要があります. 以下に,
- そのようなプログラムの例を示し ます. スクリプト
- netprint では, 標準入力から印字データを
- すべて受け取り,
- ネットワーク接続されたプリンタにこれを送ります.
- netprint
- の最初の引数でプリンタのホスト名を, 2番目の引数
- で接続するポート番号を指定します.
- このプログラムでは単方向通信 (FreeBSD からプリンタ)
- のみをサポートしていることに注意してくだ さい.
- ネットワークプリンタの多くは双方向通信をサポートしていま
- すので, その恩恵 (プリンタの状態を得たり,
- 課金をおこなうなど) にあず かりたいと思われるかもしれません.
-
+ 印字させるプリンタを選択するためには,
+ 次のように入力します.
-
-#!/usr/bin/perl
-#
-# netprint - Text filter for printer attached to network
-# Installed in /usr/local/libexec/netprint
-#
+ &prompt.user; lpr -P printer-name filename ...
-$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
+ 次の例では, プリンタ rattan に,
+ カレントディレクトリにあ
+ るファイルの詳細なリストを印字しています.
-$printer_host = $ARGV[0];
-$printer_port = $ARGV[1];
+ &prompt.user; ls -l | lpr -P rattan
-require 'sys/socket.ph';
+ 上記の &man.lpr.1; コマンドではファイル名の指定がないので,
+ lpr は標準入力から印字するデータ,
+ この場合, ls -l
+ コマンドの出力, を読み込みます.
-($ignore, $ignore, $protocol) = getprotobyname('tcp');
-($ignore, $ignore, $ignore, $ignore, $address)
- = gethostbyname($printer_host);
+ &man.lpr.1; コマンドでは,
+ 出力の整形を制御したり, ファイル変換を
+ 適用したり, 複数部数のコピーを作成したり, などといた様々な幅広
+ いオプションを受け付けることもできます.
+ 詳細については,
+ 「
+ その他の印字オプション」をご
+ 覧ください.
+
-$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
+
+ ジョブの処理状況を調べる
-socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
- || die "Can't create TCP/IP stream socket: $!";
-connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
-while (<STDIN>) { print PRINTER; }
-exit 0;
+ &man.lpr.1; コマンドを使って印字をする場合, プリントしようと
+ するデータは “プリントジョブ”
+ と呼ばれる箱に一緒に置かれ, こ
+ れが LPD スプーリングシステムに送られます. プリンタにはそれぞ
+ れ, ジョブ用のキューがあり,
+ 送られてきたジョブはあなたや他のユー
+ ザからの別のジョブと一緒にそのキューで並んで,
+ 処理される順番を
+ 待ちます.
+ プリンタは到着順にこれらのジョブの印字をおこないます.
- このスクリプトは,
- 様々なフィルタが利用することができます. 仮に, Diablo 750-N
- ラインプリンタを持っており, これがネットワークに
- 接続されているとしましょう.
- プリンタはポート番号5100にて印字す るデータを受け取ります.
- プリンタのホスト名は scrivener としま す. このとき,
- このプリンタのテキストフィルタは次のようになりま す.
+ デフォルトプリンタのキューの状態を表示するには,
+ &man.lpq.1; と入
+ 力します. プリンタを指定するときは,
+ -P オプションを使い
+ ます. 例えば, 次のコマンド
-
-#!/bin/sh
-#
-# diablo-if-net - Text filter for Diablo printer `scrivener' listening
-# on port 5100. Installed in /usr/local/libexec/diablo-if-net
-#
+ &prompt.user; lpq -P bamboo
-exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
-
-
+
+ は, プリンタ bamboo
+ のキューの状態を表示します. この lpq
+ コマンドの出力結果の例を次に示します.
-
- プリンタの利用に制約を与える
+ bamboo is ready and printing
+Rank Owner Job Files Total Size
+active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
+2nd kelly 10 (standard input) 1635 bytes
+3rd mary 11 ... 78519 bytes
- 本節では, プリンタの利用に制約を与えるための情報を記して
- います. LPD システムでは, プリンタ (ローカル, リモートのいずれ
- に接続されていても) にアクセスできる人を制限する機能, 複数部の
- コピーの印字の可否を制御する機能, ジョブのサイズの最大値やプリ
- ンタキューに入るジョブの最大個数を制御する
- 機能を提供しています.
+ この例では, bamboo
+ のキューに3つのジョブがあることが分か ります.
+ 最初のジョブはユーザ kelly からのものであり, “ジョ
+ ブ番号”9が割り当てられています.
+ プリンタのすべてのジョブには一意
+ なジョブ番号が付けられています. ほとんどの場合, このジョブ番号
+ は無視することができますが, ジョブをキャンセルするときにはこの
+ 番号が必要になります. このことの詳細については, 「 ジョブの削除
+ 」をご覧ください.
-
- 複数部のコピーの印字を制限する
+ ジョブ番号9のジョブは2つのファイルを処理します. すなわち,
+ &man.lpr.1;
+ のコマンドラインに複数のファイル名が与えられたときは,
+ 1つのジョブとして扱われるのです. このジョブは, 現在, アクティ
+ ブジョブ (“Rank”
+ の欄の active という後に注目) になってい
+ ます. これは, プリンタからそのジョブが現在印字されているはずで
+ あることを意味しています. 2番目のジョブでは,
+ &man.lpr.1; コマン
+ ドに標準入力からデータが与えられています.
+ 3番目のジョブはユー
+ ザ mary から与えられました.
+ このジョブのサイズはとても大きくなっ
+ ています. 彼女がプリントしようとしたファイルのパス名はここで表
+ 示させるには長すぎるため,
+ &man.lpq.1; コマンドはドットを3つだけ
+ 表示しています.
- LPD
- システムではユーザが複数部のコピーの印字を簡単におこなう
- 機能を提供しています. ユーザが, (例えば) lpr
- -#5 コマ ンドを使ってジョブを印字すると,
- ジョブのそれぞれのファイルのコ ピーを5部得ることができます.
- これがよい機能であると思うかどう
- かは人それぞれでしょう.
+ &man.lpq.1; からの
+ 出力で一番最初の行もまた有益な情報を与えていま
+ す. この行から, プリンタが現在何をしているか (あるいは, 少なく
+ とも LPD がプリンタが
+ していると思っていること) が分かります.
- 複数部のコピーの印字によってプリンタが
- 必要以上に消耗してしまう
- と感じるならば, /etc/printcap
- ファイルに sc 項
- 目を加えてください. これにより,
- &man.lpr.1; の -# オプションの使用
- が禁止されます. このオプションが指定されているにも関らず,
- -# オプションを使うと,
- 次のようなメッセージが表示され,
- このオプションの利用できない旨を伝えます.
+ &man.lpq.1; コマンドは
+ -l オプションもサポートしています. こ
+ れにより,
+ 詳しい情報が表示されます. lpq -l の実行例を次
+ に示します.
- lpr: multiple copies are not allowed
+ waiting for bamboo to become ready (offline ?)
+kelly: 1st [job 009rose]
+ /etc/host.conf 73 bytes
+ /etc/hosts.equiv 15 bytes
- リモートホストからプリンタをアクセスできる
- 設定にしている場合 (この 設定については, 「
- リモートホストに接続されたプリンタ」
- をご覧ください), その リモートホストの
- /etc/printcap にも同じように
- sc
- 項目を追加する必要があることに注意してください.
- そうしないと, ユーザは別なホストから複数部のコピーの
- 印字することができてしま います.
+kelly: 2nd [job 010rose]
+ (standard input) 1635 bytes
- 例を使って説明しましょう. 次に示す
- /etc/printcap ファ イルは, ホスト
- rose のものです. プリンタ
- rattan は極めて 頑丈なので,
- 複数部のコピーの印字は許可されています. しかし, レー
- ザプリンタの bamboo
- はもう少しデリケートで, このプリンタ
- から複数部のコピーを印字することを sc
- 項目を追加すること で禁止しています.
+mary: 3rd [job 011rose]
+ /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
+
-
-#
-# /etc/printcap for host rose - restrict multiple copies on bamboo
-#
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:
+
+ ジョブの削除
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:sc:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
- :if=/usr/local/libexec/psif:\
- :df=/usr/local/libexec/psdf:
+ 印字するようジョブを
+ 送った後で印字を中断したくなったときは,
+ &man.lprm.1; コマンドで,
+ キューの中からそのジョブを削除することが
+ できます. 大抵の場合, アクティブジョブでさえも
+ &man.lprm.1; を使っ
+ て削除することができますが,
+ そのジョブの一部またはすべてが印字さ
+ れてしまうかもしれません.
- さらに, orchid の /etc/printcap
- にも sc 項目を
- 追加する必要があります (orchid
- でこの編集をおこなっているときに, つ いでに, プリンタ
- teak でも複数部のコピーの印字を禁止する
- ことにしましょう).
+ デフォルトプリンタへのジョブを削除するためには, 最初に,
+ &man.lpq.1; を使ってそのジョブ番号を調べます.
+ すなわち, それから,
+ 次のように入力して, ジョブを削除します.
-
-#
-# /etc/printcap for host orchid - no multiple copies for local
-# printer teak or remote printer bamboo
+ &prompt.user; lprm job-number
-teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
- :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
- :if=/usr/local/libexec/ifhp:\
- :vf=/usr/local/libexec/vfhp:\
- :of=/usr/local/libexec/ofhp:
+ 特定のプリンタへのジョブを削除するときは,
+ -P オプション
+ を使ってそのプリンタを指定します.
+ 例えば, プリンタ bamboo
+ のキューからジョブ番号
+ 10のジョブを削除するには次のようにします.
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+ &prompt.user; lprm -P bamboo 10
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
+ &man.lprm.1; コマンドには略記法がいくつかあります.
- sc 項目を指定することにより,
- lpr -# の使用を防
- ぐことができます. しかし, この状態では
- &man.lpr.1; を複数回起動し
- たり, 1回のジョブで次のように同じファイルを
- 複数個指定すること
- を防ぐまでには至っていません.
+
+ lprm -
+
+ あなたが (デフォルトプリンタへ)
+ 送ったジョブをすべて削除し ます.
+
+
- &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
+ lprm user
+
+ ユーザ user が
+ (デフォルトプリンタへ) 送ったジョブ をすべて削除します.
+ 他のユーザのジョブを削除できるのはスー パユーザだけです.
+ あなたは, あなた自身のジョブしか削
+ 除することはできません.
+
+
- このような悪用を防ぐ方法は
- (その指示を無視することも含めて) たく さんあります.
- 各自で調べてみてください.
-
+ lprm
+
+ ジョブ番号もユーザ名もシンボル
+ - も指定されない
+ ときは, &man.lprm.1; は現在のアクティブジョブを, そのジョ
+ ブを送ったのがあなた自身であるときに限り, デフォルトプ
+ リンタから削除します. ただし, スーパユーザは任意のア
+ クティブジョブを削除することができます.
+
+
+
-
- プリンタを使用できる人を限定する
+ 上記の略記法をデフォルトプリンタではなく
+ 特定のプリンタに対して おこなうときは, -P
+ オプションでそのプリンタを指定するだけよ いのです. 例えば,
+ プリンタ rattan のキューへあなたが送っ
+ たジョブをすべて削除するためには次のようにします.
- それぞれのプリンタを使用できる人を限定するには, UNIX の
- グループ権限のメカニズムを利用し, さらに,
- /etc/printcap で rg
- 項目を指定することでおこないます.
- あるプリンタにアクセスさせてもよいと思うユーザすべてを
- UNIXのある グループに入れてください. そして,
- そのグループ名を rg で 指定します.
+ &prompt.user; lprm -P rattan -
- このとき, そのグループに含まれないユーザ
- (root も含む) が
- rg
- の指定がされたプリンタを使用すると, 次のようなメッセー
- ジが表示され, プリンタの使用はできません.
+
+ ネットワーク環境で作業をしている場合, あるホストか
+ ら送られたプリンタジョブは, これを送ったホストで
+ &man.lprm.1; を
+ 使った場合に限って,
+ これを削除することができます. 他のホストで
+ 同じプリンタを使えたとしても,
+ このジョブを削除することはできま
+ せん.
+ 次の例では, 他ホストからジョブを削除することを試みていま
+ す.
-
- lpr: Not a member of the restricted group
-
+ &prompt.user; lpr -P rattan myfile
+&prompt.user; rlogin orchid
+&prompt.user; lpq -P rattan
+Rank Owner Job Files Total Size
+active seeyan 12 ... 49123 bytes
+2nd kelly 13 myfile 12 bytes
+&prompt.user; lprm -P rattan 13
+rose: Permission denied
+&prompt.user; logout
+&prompt.user; lprm -P rattan 13
+dfA013rose dequeued
+cfA013rose dequeued
+
+
+
- sc (suppress multiple copies :
- 複数部のコピーの印字を禁止
- する) を指定するときと同様に, rg
- が指定されたプリンタがリ
- モートホストからもアクセスでき
- (この設定については,
- 「
- リモートホストに接続されたプリンタ」
- をご覧ください), かつ, そ
- のホストでもプリンタを使用できる人を限定するのが
- 妥当であると思
- う場合は, そのホストの
- /etc/printcap にも
- rg 指
- 定をおこなう必要があります.
+
+ その他の印字オプション
- 例えば, プリンタ rattan
- は誰でも利用できるが, bamboo はグループ
- artists に属している人のみが利用で
- きるようにしてみましょう. 以下に, もうお馴染みとなったホスト
- rose の /etc/printcap
- を示します.
+ &man.lpr.1; コマンドには, テキストの整形や,
+ 図や他のファイル形
+ 式の変換, 複数部コピーの生成, ジョブの扱いなどをを制御すること
+ ができます.
+ この節では, これに関するオプションについて記してい
+ ます.
-
-#
-# /etc/printcap for host rose - restricted group for bamboo
-#
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:
+
+ 整形と変換に関するオプション
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
- :if=/usr/local/libexec/psif:\
- :df=/usr/local/libexec/psdf:
+ 以下の &man.lpr.1; 用のオプションはジョブにおける
+ ファイルの
+ 整形の制御に関するものです.
+ このオプションは, ジョブにプレイン
+ テキストが含まれない場合や
+ &man.pr.1; ユーティリティを使ってプレイ
+ ンテキストを整形する場合に用いてください.
- これ以外の /etc/printcap ファイル
- (ホスト orchid のもの)
- はそのままにしておくことにします. もちろん,
- orchid のユーザは 全員
- bamboo を利用することができます. これは,
- orchid に
- は特定のユーザのみにしかアクセスさせておらず,
- そのユーザにはプ
- リンタを利用させたいと思っているからなのかもしれませんし,
- そう でないかもしれません.
+ 次の例では, プリンタ
+ bamboo に (TeX 組版システムによる)
+ DVI ファイル
+ fish-report.dvi を印字しています.
+
+ &prompt.user; lpr -P bamboo -d fish-report.dvi
+
+ このオプションは,
+ ジョブに含まれるすべてのファイルに対して適用さ れます.
+ したがって, 1つのジョブに (例えば) DVI ファイルと ditroff
+ ファイルを混在させることはできません. その代わりに,
+ ファイルを 形式毎に別々のジョブに分け,
+ それぞれのジョブでその形式用の変換
+ オプションを使って印字してください.
- 1台のプリンタを複数グループのユーザに利用させること
- はできません.
+ -p と -T
+ を除くすべてのオプションを使用 するためには,
+ 出力先プリンタ用の変換フィルタが必要です. 例えば,
+ -d オプションを使用するには, DVI
+ 用の変換フィルタが必要 です. 詳細については, 「
+ 変換フィルタ」で説明しています.
-
-
- 入力可能なジョブのサイズを制限する
+
+ -c
+
+ cifplot ファイルを印字します.
+
+
- たくさんのユーザからプリンタが利用される場合には, 多分,
- ユーザが印字要求を出すことができるファイルのサイズに
- 上限値を置 く必要が生じるでしょう. 結局のところ,
- スプーリングディレクトリ
- が置かれているファイルシステムの空き容量がその
- 上限値になる訳で すが,
- あるユーザがこれを独占的に使用すること避けるために, 他ユー
- ザからのジョブ用の空き容量を確保する必要もあります.
+ -d
+
+ DVI ファイルを印字します.
+
+
- LPD では, mx
- 項目を指定することにより, ジョブ中の個々のファ
- イルのサイズの上限値を制限する機能を提供しています.
- 指定される ファイルサイズの単位は BUFSIZ ブロックで, 1
- BUFSIZ ブロックは 1024バイトを表わします. この
- mx 項目の値として0が指定されると,
- ファイルサイズの制限はなくなります.
- mx が指定されない場合は,
- デフォルトの制限として 1000 ブロックが使われます.
-
+ -f
+
+ FORTRAN プログラムを印字します.
+
+
+
+ -g
+
+ plot のデータを印字します.
+
+
+
+ -i number
+
+ 出力に対して, number
+ カラム分の字下げをおこないます.
+ number が省略されると,
+ 8カラム分字下げされます.
+ このオプションはある変換フィルタと一緒の指定されたとき
+ のみに機能します.
+
+
+ -i
+ と数字の間に空白を入れてはいけません.
+
+
+
-
- この制限はジョブ中の各
- ファイル に対して適用されるものであり,
- ジョブ全体のサイズ
- を制限するものではありません .
-
+ -l
+
+ 制御文字を含む文字通りの
+ テキストデータを印字します.
+
+
- ところで,
- プリンタに設定された上限値を超えるファイルサイズのファ
- イルが入力された場合でも, LPD はこれを拒否しません. その代わ
- りに, このファイルは,
- その先頭から上限値のファイルサイズまでし
- かキューに入れられません. そして, その部分までが印字され,
- 残り の部分は捨てられます.
- これが正しい動作といえるのかどうかは議
- 論の余地があるところです.
+ -n
+
+ ditroff (device independent troff) データ
+ を印字します.
+
+
- それでは, 設定例に登場しているプリンタ
- rattan と bamboo
- の印字可能なファイルサイズに制限を加えてみましょう. artists
- グループの人達が作る PostScript ファイルのサイズは
- 巨大になる傾向があるので, 上限値を5Mバイトとします.
- それから,
- プレインテキスト用のラインプリンタは無制限とします.
+ -p
+
+ 印字する前に &man.pr.1;
+ によってプレインテキストを整形し
+ ます. 詳細については &man.pr.1; をご覧ください.
+
+
-
-#
-# /etc/printcap for host rose
-#
+ -T title
+
+ &man.pr.1; コマンドにより生成されるヘッダを,
+ ファイル名の
+ 代わりに title とする.
+ このオプションは, -p
+ と一緒に使ったときのみ機能する.
+
+
-#
-# No limit on job size:
-#
-rattan|line|diablo|lp|Diablo 630 Line Printer:\
- :sh:mx#0:sd=/var/spool/lpd/rattan:\
- :lp=/dev/lpt0:\
- :if=/usr/local/libexec/if-simple:
+ -t
+
+ troff データを印字します.
+
+
-#
-# Limit of five megabytes:
-#
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
- :if=/usr/local/libexec/psif:\
- :df=/usr/local/libexec/psdf:
+ -v
+
+ ラスタのデータを印字します.
+
+
+
- この場合もそうですが, この制限はローカル (ホスト rose)
- のユーザ のみに適用されます.
- リモートホストからプリンタを利用できるよう
- に設定している場合は,
- そのリモートホストのユーザはこの制限を受 けません.
- これらのユーザにも制限を加える場合は, リモートホスト の
- /etc/printcap の mx
- を指定する必要があります.
- リモートホストから印字するための詳しい情報については,
- 「
- リモートホストに接続されたプリンタ」
- を参照してください.
+ 次の例では, &man.ls.1; の
+ マニュアルを美しく整形したものをデフォ
+ ルトプリンタで印字しています.
- リモートホストに接続されたプリンタへのジョブの
- サイズを制限する 特別な方法は他にもあります. これについては,
- 「
- リモートホストからのプリンタの利用を制限する」
- を参照してください.
+ &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
+
+ &man.zcat.1; コマンドで
+ &man.ls.1; のマニュアルのソースファイルの圧
+ 縮を復元し, これを
+ &man.troff.1; コマンドに渡しています. これによ
+ り, ソースファイルが整形され, GNU troff の形式となります. そ
+ の結果は &man.lpr.1; に渡され,
+ LPD スプーラへジョブの要求が発せ
+ られます. &man.lpr.1; には
+ -t オプションが使われているため,
+ スプーラにて, GNU troff の形式からジョブを印字したときにデフォ
+ ルトプリントが解釈できる形式へと変換されます.
-
- リモートホストからのプリンタの利用を制限する
+
+ ジョブに関するオプション
- LPD スプーリングシステムでは, リモートホストから要求され
- たジョブの印字を制限するための方法がいくつか
- 提供されています.
+ 以下のオプションは, &man.lpr.1; によって, そのジョブを特殊
+ な扱いにするよう LPD に指示するためのものである.
- ホストの制限
+ -# copies
- ローカルの LPD
- が印字要求を受け付けるリモートホストは, ファイル
- /etc/hosts.equiv と
- /etc/hosts.lpd
- によって制御することができます. LPD では,
- あるホストから印字の要求がきたとき, このホス
- トの名前がこれら2つのファイルのどちらかに含まれている
- かどうかを調べます. これが含まれていない場合は, LPD
- はこの要求を拒否します.
-
- これらのファイルの形式は単純です.
- 各行にホストの名前を
- 1つずつ書いていきます. ファイル
- /etc/hosts.equiv の方は
- &man.ruserok.3; プロトコル
- でも利用され, &man.rsh.1; や &man.rcp.1;
- といったプログラム
- の動作に影響するので注意が必要です.
- /etc/hosts.equiv
- の記述は慎重におこないましょう.
+ ジョブに含まれるファイルのそれぞれを
+ 1部だけ印字するの ではなく,
+ copies
+ 部のコピーを生成させるものです. 管理者によっては,
+ プリンタの消耗を避け, コピー機による
+ 複製を奨励するためにこのオプションの使用が禁止されてい
+ るかもしれません. これに関しては, 「
+ 複数部のコピーの印字を制限する
+ 」をご覧ください.
- 例として, 以下にホスト rose の
- /etc/hosts.lpd を示します.
+ 次の例では, デフォルトプリンタで
+ parser.c を3 部コピーし, 次に,
+ parser.h を3部コピーしています.
-
-orchid
-violet
-madrigal.fishbaum.de
+ &prompt.user; lpr -#3 parser.c parser.h
+
+
- この例では, rose はホスト
- orchid , violet ,
- そして madrigal.fishbaum.de
- からの要求を受け付けることになり ます.
- その他のホストが rose の LPD
- にアクセスしようと しても, LPD はこれを拒否します
- (訳注:拒否されるのは, そのホストが
- /etc/hosts.equiv にも含まれてい
- ない場合です).
+ -m
+
+ 印字ジョブが完了した後で, メールを送ります.
+ このオプショ ンを付けると, LPD
+ システムはジョブの扱いが終了したと きに,
+ あなたのアカウントにメールを送ります. メールのメッ
+ セージには, ジョブが正常終了したのか, あるいは, 何か異
+ 常があり, (しばしば)
+ その異常が何であったのかが書かれて います.
- サイズの制限
+ -s
- スプーリングディレクトリがある
- ファイルシステムに残して
- おく必要がある空き容量の大きさを制御することが
- できます.
- ローカルプリンタ用のスプーリングディレクトリに
- minfree
- という名前のファイルを作成します. そして,
- そのファイルの中にリモートホストからのジョブの要求を受
- け付けるために必要な空き容量のディスクブロックサイズ
- (1 ディスクブロック=512バイト) を記します.
+ 印字ファイルをスプールディレクトリにコピーせず,
+ 代わりに,
+ シンボリックリンクを作成するよう指示します.
- これで,
- リモートホストのユーザにファイルシステムを満杯
- にされないことが保証されます. この機能を使うと, ローカ
- ルホストのユーザに対してある種の優先権を与えることもで
- きます. ローカルホストのユーザは,
- minfree ファイ
- ルで指定された値よりもディスクの空き容量が下回った後で
- もずっと,
- ジョブをキューに入れることができるのです.
+ 印字させるジョブのサイズが大きいとき, このオプショ
+ ンを使うと便利かもしれません. このオプションにより,
+ スプー ルディレクトリの容量が節約されます (それに,
+ 巨大なジョ
+ ブのお陰でスプールディレクトリのあるファイルシステムの
+ 空き容量がなくなってしまうかもしれません). さらに,
+ LPD
+ がいちいちすべてのデータをコピーする必要がなくなりま
+ すので, 時間の節約にもなります.
- 例えば, プリンタ bamboo 用の
- minfree を作っ てみましょう.
- このプリンタのスプーリングディレクトリを 調べるために,
- /etc/printcap を調べてみましょ
- う. 以下に, bamboo
- のエントリ部分を示します.
+ ただし, 欠点もあります. LPD
+ はオリジナルのファイルを 直接参照するので,
+ 印字が終了するまでそのファイルを変更
+ したり削除することができません.
-
-bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
- :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
- :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:mx#5000:\
- :if=/usr/local/libexec/psif:\
- :df=/usr/local/libexec/psdf:
+
+ リモートのプリンタで印字している場合, LPD は,
+ 結局のところ, ローカルホストからリモートホストにファ
+ イルをコピーする必要があります. したがって,
+ -s オプ
+ ションはローカルのスプーリングディレクトリの
+ 空き容量を 節約するだけで,
+ リモート側では節約されません. それに も関わらず,
+ このオプションはそれでも有用です.
+
+
+
+
+ -r
+
+ ジョブに含まれるファイルを,
+ スプーリングディレクトリに
+ ファイルをコピーした後に削除します. もしくは,
+ -s オプションと一緒に使われた場合は,
+ 印字終了後に削除され ます.
+ このオプションの使用には十分注意して下さい.
+
+
+
+
+
+
+ ヘッダページ用オプション
+
+ 以下のオプションにより,
+ ジョブのヘッダページに通常印字さ
+ れるテキストを
+ &man.lpr.1; に調整させることができます. 対象のプリ
+ ンタからヘッダページが出力されない場合は,
+ これらのオプションは
+ 何の効力も持ちません.
+ ヘッダページの設定に関する情報については,
+ 「
+ ヘッダページ」を参照してください.
- スプーリングディレクトリは
- sd で指定されます. LPD
- がリモートホストからのジョブを受け付けるために必要
- なファイルシステムの空き容量を3Mバイト
- (=6144ディスクブ ロック) にすることにしましょう.
-
+
+ -C text
+
+ ヘッダページに印字されるホスト名を
+ text に置き換 えます. なお,
+ ホスト名の場所には, 通常, ジョブの要求が
+ あったホストの名前が印字されます.
+
+
- &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
+ -J text
+
+ ヘッダページに印字されるジョブ名を
+ text に置き換 えます.
+ ジョブ名の場所には, 通常, ジョブの最初のファイ ル名,
+ または, 標準入力からデータが印字されたときは
+ stdin が印字されます.
- 利用ユーザの制限
+ -h
- /etc/printcap の
- rs 項目を指定することで,
- ローカルプリンタを利用できるリモートホストのユーザを制
- 限することができます. ローカルホストに接続されたプリン
- タ用のエントリに rs
- 項目が指定されている場合, LPD
- は印字を要求したユーザのアカウントと同じログイン名
- がローカルホストに登録されている/em/場合に限り/, その
- ジョブが受け付けられます. そうでないユーザからのジョブ
- は LPD は拒否します.
+ ヘッダページを出力を禁止します.
- この機能は, (例えば)
- 複数の部署がネットワークを共有して おり,
- この内のあるユーザが部署の境界を越えて活動してい
- る場合には特に有用です. そのようなユーザに対して, シス
- テムのアカウントを与えるだけで, これらのユーザは自分が
- 所属する部署のシステムからそのシステムに接続されている
- プリンタを使用することができます. これらのユーザにはむ
- しろ, プリンタの使用だけ を認め,
- その他のコンピュー タ資源を利用させたくないときは,
- それらのユーザにはホー ムディレクトリを与えず,
- ログインシェルはシェルとしては 何の役にも立たない
- /usr/bin/false などを指定 して,
- これらのユーザのアカウントはプリンタ用の“形式的
- な”ものとします.
+
+ サイトによっ ては,
+ そのヘッダページの生成方法により, このオプション
+ の効果が現れないかもしれません. 詳細は, 「
+ ヘッダページ」をご覧ください.
+
-
- プリンタの利用に対する課金
-
- という訳で, 印字するためには料金をとることが必要です. 取ら
- ない理由などありましょうか. 紙やインクにはお金がかかります. そ
- して, プリンタの維持費もかかります. プリンタには可動部分が搭載
- されており, これらの部分は壊れやすいという傾向があります. プリ
- ンタや, その利用形態, 維持費について調査をし, 1ページ (1フィー
- ト, 1メートルなど) 当たりにかかるコストを調べておいてください.
- これに基づき, プリンタの利用に対する課金を, 実際に, どのように
- 始めればよいのでしょうか.
-
- さて, 残念ながら, この部分に関しては LPD
- スプーリングシステム はほとんど役に立ちません.
- 課金は使用しているプリンタの種類, 印
- 字するもののファイルの形式,
- プリンタの利用に対する課金での
- あなた自身の 要求に大きく左右されます.
-
- 課金システムを実現するためには, プリンタのテキストフィルタ
- (プ レインテキストのジョブに対して課金するため) と変換フィルタ
- (その 他のファイル形式に対して課金するため) を変更して,
- 印字したペー ジを数えたり,
- プリンタに印字したページ数を取得するための要求を
- 送る必要があります. ただし, 出力フィルタのみを利用している場合
- は, 課金をおこなうことができません. フィルタに関しては,
- 「
- フィルタ」をご覧く ださい.
+
+ プリンタを管理する
- 一般に, 課金方式には次の2つがあります.
+ プリンタの管理者として, プリンタの設置, 設定,
+ そして, それ
+ らのテストをおこなう必要がありました.
+ &man.lpc.8; コマンドにより,
+ これまでとは別な管理方法がプリンタと対話的におこなわれます.
+ &man.lpc.8; により, 次のことが可能となります.
- 定期的に課金する方法
- はよく利用される方法です. この理由は, 恐らく,
- 比較的簡単に実現できるからです. 誰
- かがジョブを印字する度に, フィルタはそのユーザ名, ホス
- ト名, 印字したページ数を課金データファイルに記録します.
- 毎月, 毎学期, 毎年, あるいは, お好みの時期に, 様々なプ
- リンタの課金用ファイルを集め, それぞれのユーザが印字し
- たページ数を合計し, その分の課金をおこないます. 次回の課金
- 時期のためのデータを0にして課金を再開するために, この
- 処理をおこなった後, すべてのログファイルを削除し,
+ プリンタの起動, 停止をおこなう.
- 利用毎に課金する方法
- はあまり利用されていません. これは,
- 実現するのが比較的難しいからです. この方式では,
- プリンタを使用したらすぐに, フィルタがユーザにその利用
- に対する課金をおこないます. ディスククオータのように, 課金
- 作業は瞬時におこなわれます. この方式では, ユーザのアカウン
- トが赤字になる場合に, ユーザが印字をおこなうことを拒否する
- ことができます. また, ユーザに“プリンタ版
- quota”を 調べたり,
- 調整したりする方法を提供したいと思うかもしれ ません.
- これを実現するためには, ユーザとその quota を
- 追跡するために, あるデータベース用のコードが必要となり
- ます.
+ キューへの入力の許可, 禁止をおこなう.
+
+
+
+ それぞれのキューにあるジョブの順番を変更する.
- LPD スプーリングシステムでは, 両方式を簡単にですがサポー
- トしています. これは, (ほとんどの場合で) 印字作業をフィ
- ルタがおこなっていたように, 課金作業もこのためのコードも用
- 意することで実現されています. しかし, 明るい面もありま す.
- それは, 課金方式に関して, 非常に大きな柔軟性が与え
- られたということです. 例えば, 「定期的に課金する方法」 か,
- 「利用毎に課金する方法」のどちらかを選びまず, そし て,
- どんな情報 (ユーザ名, ホスト名, ジョブのタイプ, 印
- 字された頁数, 使用した紙の大きさ, 印字をするために要した
- 時間など) をログに記録するかを決めます. 以上のことをおこな
- うには, 上記の情報を保持するために, フィルタを変更しな
- くてはなりません.
+ 最初に用語に関する注意をしておきます.
+ プリンタが停止してい る とは,
+ キューの中にあるどのジョブも印字されることがない状態
+ を言います. この状態においても,
+ ユーザはまだジョブの要求をおこなう ことができますが,
+ これらのジョブはキューの中で,
+ プリンタがスタートする 状態になるまで,
+ あるいは, キューの内容が削除され
+ るまで待たされることになります.
+
+ キューが禁止状態にある とは, (root
+ 以外の) すべてのユーザが
+ プリンタにジョブを要求することができない状態のことを言います.
+ キューが許可状態にある 場合は,
+ ジョブの入力が許可されます.
+ キューが禁止状態にある 場合でも,
+ プリンタをスタートす
+ る 状態にすることは可能です. この場合は,
+ キューが空になるまで,
+ キュー内のジョブの印字が続けられます.
+
+ 一般的に,
+ &man.lpc.8; コマンドを使用するには root の権限を持って
+ いる必要があります. 一般のユーザも
+ &man.lpc.8; コマンドを使うこと
+ はできますが, プリンタの状態を取得することとハングしたプリンタ
+ を再スタートすることだけに使用が制限されています.
+
+ 以下に,
+ &man.lpc.8; コマンドに関する説明の要約を述べます. ほとん
+ どのコマンドでは, 操作対象となるプリンタを指定するため
+ printer-name 引数を与えます.
+ printer-name の代わり
+ に all が与えられると, 操作は
+ /etc/printcap 内に
+ ある全プリンタに対しておこなわれることになります.
+
+
+
+ abort printer-name
+
+ 現在のジョブをキャンセルし, プリンタを停止させます.
+ キュー が許可状態にある場合は,
+ ユーザはまだジョブを入力する ことができます.
+
+
+
+
+ clean printer-name
+
+ プリンタのスプーリングディレクトリから,
+ ジョブの古いファ イルを削除します. 状況によって,
+ とりわけ, 印字途中でエ ラーが発生していたり,
+ 管理操作が頻発していた場合には,
+ ジョブで作られたファイルを LPDが完全に削除しないことが
+ あります. このコマンドでは, スプーリングディレクトリに
+ 入っていないファイルを見つけ出し,
+ それを削除しています.
+
+
+
+
+ disable printer-name
+
+ キューに新しいジョブを入れることを禁止します.
+ プリンタ がスタート状態にあるときは,
+ キューに残っているジョブの 印字は続けられます. ただし,
+ キューが禁止状態にあったと しても, スーパーユーザ (root)
+ は常にジョブを入力するこ とができます.
+
+ このコマンドは,
+ 新しいプリンタやフィルタを設置している
+ 間に使用すると有用です. すなわち, キューを禁止状態にし
+ ておくと, root によるジョブのみが入力されます. そして,
+ その他のユーザは, テストが完了し,
+ enable コマン
+ ドでキューが再度許可状態になるまで, ジョブの入力はでき
+ なくなります.
+
+
+
+
+ down printer-name
+ message
+
+ プリンタをダウンさせます. これは,
+ disable をおこなっ
+ た後で, stop をおこなった場合と
+ 等価になります.
+ message は, ユーザが
+ &man.lpq.1; コマンドでプリンタ
+ のキューの状態を調べたり, lpc status
+ でプリンタの
+ 状態を調べたときに, プリンタの状況として表示されるメッ
+ セージです.
+
+
+
+
+ enable printer-name
+
+ プリンタのキューを許可状態にします.
+ ユーザはジョブの入 力ができるようになりますが,
+ プリンタがスタートの状態に なるまでは,
+ プリンタからは何も印字されません.
+
+
+
+
+ help command-name
+
+ command-name
+ コマンドのヘルプメッセージを表示しま
+ す. command-name
+ が指定されなかった場合は, 利用
+ できるコマンドの要約が表示されます.
+
+
+
+
+ restart printer-name
+
+ プリンタをスタートさせます. 通常のユーザは, LPD があ
+ る異常な状況でハングしたときに限り, このコマンドを使用
+ することができます. しかし, stop
+ または down コマンドにより,
+ 停止状態にあるプリンタをスター トさせることはできません.
+ restart コマンドは,
+ abort の後に start
+ をおこなったことと同じになり ます.
+
+
+
+
+ start printer-name
+
+ プリンタをスタートさせます.
+ プリンタのキューにあるジョ
+ ブを印字することでしょう.
+
+
-
- 手軽なプリンタ課金方法
+
+ stop printer-name
+
+ プリンタを停止します. プリンタは,
+ 現在のジョブを終了さ せ, そして,
+ キューにあるその他のジョブは印字しません.
+ プリンタが停止状態にあったとしても, まだ, 許可状態にあ
+ るキューに対して, ジョブを送ることができます.
+
+
- FreeBSD には, 「定期的に課金する方法」による課金をすぐに
- 設定できるように, 2個のプログラムを添付しています. そ
- の内の1つはテキストフィルタ lpf で,
- これについて
- は, 「
- テキストフィルタ lpf」をご覧ください. もう1つは,
- &man.pac.8; で,
- これはプリンタの課金データファイルからのエントリを集め,
- これを合計するプログラムです.
+
+ topq printer-name
+ job-or-username
+
+ printer-name
+ のキューに対して, ジョブ番号
+ job のジョブ, または, ユーザ
+ username から送
+ られたジョブを置き換えて, キューの先頭に持ってきます.
+ このコマンドに関しては,
+ printer-name の代わりに
+ all
+ を使用することはできません.
+
+
- 「
- フィルタはどのように機能しているか」で述べたように,
- LPD では テキストフィルタや変換フィルタを起動しますが,
- そのコマ
- ンドラインで使用している課金データファイルの名前が指定
- されます. 両フィルタはこの引数を使って, どの課金データ
- ファイルのエントリに書き込めばよいのかを知ることができ ます.
- このファイルの名前は /etc/printcap 中の
- af 項目によって指定されます.
- このファイルが絶対パ スで指定されない場合は,
- スプーリングディレクトリからの
- 相対パスとして扱われます.
+
+ up printer-name
+
+ プリンタをアップ状態にします. これの反対のコマンドが
+ down です. start
+ の次に enable をおこなっ
+ たことと等しくなります.
+
+
+
- LPD は, 紙のページの幅と行数 (pw と
- pl 項目で 指定される) を引数として
- lpf を起動します. lpf
- では, 何ページ印字したかを決定するためにこれ
- らの引数を使用します. ファイルをプリンタに送った後, 課
- 金情報を課金データファイルに書き込みます. このファイル
- は次のようになります.
+ コマンドラインから上記のコマンドを入力すると,
+ &man.lpc.8; はこれ
+ を受け付けます. コマンドが入力されなかった場合は,
+ &man.lpc.8; は
+ 対話モードに入り,
+ exit , quit ,
+ または, ファイル終端
+ 文字が入力されるまでコマンドの入力ができます.
+
+
-
-2.00 rose:andy
-3.00 rose:kelly
-3.00 orchid:mary
-5.00 orchid:mary
-2.00 orchid:zhang
+
+ 標準スプーラの代替品
-
- 課金データファイルはプリンタ毎に分けて作るべきです. こ
- れは, lpf
- にはデータファイルをロックする機構が組
- み込まれていないためです. したがって, lpf
- が2つ起動 されたとき,
- 同じファイルに同時に書き込みをおこなった場合,
- お互いのエントリが破壊されてしまうかもしれません. 課金
- 用ファイルを各プリンタ毎に確実に分けるには,
- /etc/printcap 中の
- af=acct 項目を使いま す.
+ このマニュアルを最初から通読されている方ならば, ここまでで,
+ FreeBSD 付属の LPD スプーリングシステムに関して知っておくべき
+ ことすべてを学ばれたことと思います. 多分, このシステムに
+ あるたくさんの欠点について認識できたことでしょう. すると,
+ “(FreeBSD 上で動作する)
+ スプーリングシステムには他にどのような
+ ものがあるのか”という疑問が自然と湧いてきます.
- プリンタの利用に対してユーザに課金する準備ができたら,
- スプーリングディレクトリに移動した後,
- &man.pac.8; と入力
- してください. 次のような, ドル中心主義の課金リストが表
- 示されます(訳注:ドル中心主義という表現は, 表示がドルで
- 出ることへの著者の皮肉でしょう. セントがあるので小数点
- 以下が表示されますが, この機能も日本では邪魔ですね).
+ 残念ながら, 著者は代替のスプーラを 2つ
+ だけしか探し出すこと ができませんでした. そして,
+ それぞれはほとんど同一のものです. 以下に,
+ 両システムの紹介をおこないます.
- Login pages/feet runs price
-orchid:kelly 5.00 1 $ 0.10
-orchid:mary 31.00 3 $ 0.62
-orchid:zhang 9.00 1 $ 0.18
-rose:andy 2.00 1 $ 0.04
-rose:kelly 177.00 104 $ 3.54
-rose:mary 87.00 32 $ 1.74
-rose:root 26.00 12 $ 0.52
+
+ PLP (Portable Line Printer スプーリングシステム)
+
+ PLP は Patrick Powell によって開発されたソフトウエアを
+ ベースにされており, インタネット規模のグループの開発者
+ によって管理されていました. このソフトの主要サイトは「
+
+ ftp://ftp.iona.ie/pub/plp/ 」です.
+ 「
+ web page 」にもあります.
-total 337.00 154 $ 6.74
+ PLP は BSD LPD スプーラと極めて似ていますが, 以下のも
+ のを含むホストの機能が自慢です.
- &man.pac.8; が受け付ける引数には
- 次のようなものがあります.
+
+
+ ネットワークサポートの強化. ネットワーク接続され
+ るプリンタのサポートや NIS で管理可能な printcap ファ
+ イル, NFS マウントされるスプーリングディレクトリの機
+ 能が組み込まれています.
+
-
- -Pprinter
- プリンタ printer
- の利用に対する課金リストを作成し ます.
- このオプションは, /etc/printcap
- の af
- が絶対パスで指定されていた場合に限り, 動作しま
- す.
+ 洗練されたなキュー管理. 1つのキューで複数のプリン
+ タに対応可能. キュー間でジョブを転送したり, キューのリ
+ ダイレクトができます.
-
- -c
- ユーザ名のアルファベット順ではなく,
- 課金額の低い順にリ ストを並べます.
+ リモートプリンタの制御機能
-
- -m
- 課金データファイルにあるホスト名を無視します.
- このオプショ ンを使用すると, ホスト
- alpha のユーザ
- smith とホスト
- gamma のユーザ
- smith は同一人物として扱われます.
- この オプションが指定されない場合は,
- 両者は別なユーザとして 扱います.
+ ジョブの優先順位付け
-
- -pprice
-
- /etc/printcap の
- pc 項目で指定された値, または,
- デフォルトの値 (2セント) に代わり, 紙1ページ, ま たは,
- 1フィート当たりの価格を指定します.
- price として,
- 浮動小数点数を指定することができます.
-
-
+
+ 拡張性のあるセキュリティとアクセスオプション
+
+
+
+
+
+ LPRng
+
+ LPRng は, その称するところの意味は“LPR: the Next
+ Generation”ですが, PLP を完全に書き換えたものになっ
+ ています. Patrick Powell と Justin Mason (PLP の主要
+ なの管理者) の共同で LPRng が作成されました. LPRng の
+ 主要サイトは「
+ ftp://dickory.sdsu.edu/pub/LPRng/ 」です.
+
+
+
+
+
+
+
+ トラブルシューティング
+
+ &man.lptest.1; を使った簡単なテストをおこなった結果,
+ 正しい出
+ 力を得られずに, 以下に示すような出力が得られるかもしれ
+ ません.
+
+
+ しばらくしたら出力される, または,
+ 紙の全体が出て こない
+
+ プリンタは上で示されたような印字を
+ おこなったのですが, しばら くして止まってしまい,
+ 動かなくなってしまいました. 印字
+ された結果をプリンタから取り出すためには,
+ プリンタにある PRINT REMAINING ボタン, また は, FORM
+ FEED ボタンを押す必要があるようです.
+
+ この場合は,
+ おそらくジョブはプリントをする前に更にデー
+ タが送られてこないか待ち続けているのでしょう.
+ この問題を解決するためには, プリンタに FORM FEED
+ 文字 (あるいは特定の必要な文字コード) を
+ 送るテキストフィルタを使ってください.
+ プリンタ内部に残っ
+ たデータをプリンタにすぐに印字させるには, 普通は,
+ これ で十分です.
+ 次のジョブが前のジョブの最終ページの中央の
+ どこかから印字を開始させないためにも,
+ 紙の途中で印字の
+ ジョブが終了したかどうかを確認するのは有益です.
+
+ シェルスクリプト
+ /usr/local/libexec/if-simple
+ を次のように変更して, プリンタへジョブを送信した後に
+ FORM FEED 文字を印字させるようにします.
+
+
+#!/bin/sh
+#
+# if-simple - Simple text input filter for lpd
+# Installed in /usr/local/libexec/if-simple
+#
+# Simply copies stdin to stdout. Ignores all filter arguments.
+# Writes a form feed character (\f) after printing job.
- -r
-
- リストの並べる順番を逆順にします.
-
-
+/bin/cat && printf "\f" && exit 0
+exit 2
+
+
- -s
-
- 課金リストを作成し,
- 課金データファイルを削除します.
-
-
+ “階段効果”が現れた
+
+ 次のような印字結果が得られた.
- name …
-
- ユーザ names
- に対する課金情報のみを表示します.
-
-
-
+
+!"#$%&'()*+,-./01234
+ "#$%&'()*+,-./012345
+ #$%&'()*+,-./0123456
- &man.pac.8; が生成するデフォルトのリストには,
- 各ホストのユーザ別
- に印字ページ数が表示されます.
- (ユーザがサイト内のすべてのホスト
- を使用できるため) ホスト名の情報が意味を持たない場合,
- pac -m
- を実行してください. 次のようなリストが得られます.
+ あなたは「階段効果」
+ の新たなる犠牲者になってしま いました. この原因は,
+ 改行を表わすべき文字がなんであるか
+ の解釈が混乱していることにあります. UNIX
+ スタイルのオ ペレーティングシステムでは, 改行文字は
+ ASCII コード10 の line feed (LF)
+ の1文字が使われています. MS-DOS や OS/2などは ASCII
+ コード10の LF と , ASCII コード
+ 13の文字 (carriage return または CR)
+ をペアで使います. (訳注:Machintosh では CR
+ のみで表現されています). 大抵のプリンタでは,
+ 改行を表わすために MS-DOS の慣習にしたが
+ います.
- Login pages/feet runs price
-andy 2.00 1 $ 0.04
-kelly 182.00 105 $ 3.64
-mary 118.00 35 $ 2.36
-root 26.00 12 $ 0.52
-zhang 9.00 1 $ 0.18
+ FreeBSD で印字する場合, 印字したテキストは LF
+ 文字だけ が使われていました. プリンタでは LF
+ 文字を見つけると, 紙を1行分送り出しました. しかし,
+ 次の文字を印字するた
+ めの紙の水平方向の位置は維持されました. すなわち, CR
+ 文字が意味することは,
+ 次の文字を印字する位置を紙の左端
+ に動かすことです.
-total 337.00 154 $ 6.74
+ FreeBSD
+ がプリンタに動作をして欲しいと思っている動作を
+ 以下に示します.
- 課金額を決めるために,
- &man.pac.8; は /etc/printcap ファ
- イルの pc
- 項目で指定された値 (デフォルト値は200, すなわち1
- ページ当たり2セント)
- を使います. この項目で, 印字物に課金したい
- と思う1ページ当たり,
- または, 1フィート当たりの価格を100分の1セ
- ント単位で指定します.
- &man.pac.8; を -p オプション付きで起動
- すると, この値を置き換えることができます.
- この -p オプショ
- ンで指定する額の単位は,
- 100分の1セント単位ではなく, ドル単位で
- す. 例えば, 次の指定では,
- 1ページ当たりの単価が1ドル50セントに
- なります.
+
+
+
+
+ プリンタが CR を受け取ったとき
+ CR 動作 (復帰) をおこなう
+
- &prompt.root; pac -p1.50
+
+ プリンタが LF を受け取ったとき
+ CR + LF 動作 (復帰, 改行) をおこなう
+
+
+
+
- このオプションを使うと,
- 実際の課金額を集計することができます.
+ このように動作させるための方法が
+ いくつかあります.
- 最後に, pac -s
- を起動すると, 課金情報は課金データ累計ファ
- イルに保存されます.
- このファイルの名前は, プリンタの課金データ
- ファイルの後ろに
- _sum を付けたものとなります. そして, 課
- 金データファイルは削除されます. 次に
- &man.pac.8; が起動されると,
- その時点までの累計金額を得るために,
- 課金データ累計ファイルが読
- み込まれ, 通常の課金データファイルからの情報に
- 加算されます.
-
+
+
+ これらの文字の解釈を変えるために, プリンタ
+ の設定スイッチかコントロールパネルを操作する方
+ 法. どのようにして設定をするかはプリンタのマニュ
+ アルを参照してください.
-
- 印字されたページ数をどのように数えるか?
+
+ FreeBSD 以外のオペレーティン
+ グシステムを切り替えて使う場合, CR と LF 文字
+ の解釈をそのオペレーティングシステムで使われて
+ いるようにプリンタを
+ 再設定 する必要がある
+ かもしれません. 以下に示す解決方法のいずれかを
+ 選ぶのがよいかもしれませんね.
+
+
- 課金を, リモートホストからの印字でさえも,
- 正確におこなうため には,
- ジョブで使用された紙が何ページであるかを特定でき
- る必要があります. このことは, プリンタ利用に対する課金
- をおこなう上の根本的な問題です.
+
+ 自動的に LF を CR+LF に変換してくれる
+ FreeBSD 用のシリアルドライバを入手する方法. も
+ ちろん, このドライバはプリンタ専用に接続される
+ シリアルポート
+ のみ で動作します. この機能
+ を許可するためには,
+ /etc/printcap ファ
+ イルで対象プリンタの fs
+ 項目で CRMOD ビッ トをセットします.
+
- プレインテキストのジョブの場合, 問題を解決するのはさほ
- ど難しくはありません. ジョブが何行であったかを数え, プ
- リンタがサポートしている紙1ページに印字できる最大の行
- 数と比較すればよいのです. 重ね打ちするために利用される
- ファイル中のバックスペース文字や, 物理的に複数の行に渡
- る長い論理行に対する取り扱いを
- 忘れずにおこなってください.
+
+ LF
+ 文字の扱いを一時的に変更するためのエ
+ スケープコード をプリンタに送る方法.
+ プリンタ
+ がサポートしているかもしれないエスケープコード
+ については, プリンタのマニュアルを参照してくだ
+ さい. 適切なエスケープコードが見つかったら, 最
+ 初にそのコードを送り, 次にプリントジョブを送信
+ するようにテキストフィルタを変更してください.
+
- (「 テキストフィ,ルタ
- lpf」で紹介した) テキストフィルタ
- lpf では, 課金をおこなうときに,
- これらの取り扱いをおこなってくれます. 課
- 金をおこなうために必要なテキストフィルタを作成している方は,
- lpf
- のソースコードが参考になるでしょう.
+ 次に, Hewlett Packard 社の PCL
+ エスケープコー
+ ドに対応しているプリンタのためのテキストフィル
+ タの例を示します. このフィルタでは, プリンタ に
+ LF 文字を LF と CR の2文字として扱わせます.
+ その後に, プリンタにジョブを送ります. 最後に,
+ ジョブの最終ページの紙を排出するため, FROM FEED
+ 文字を送ります. このフィルタは Hewlett Packard
+ 社のほとんどすべてのプリンタで機能するは
+ ずです.
- これに対して, 他のファイル形式の処理はどのようにすれば
- よいのでしょうか.
+
+#!/bin/sh
+#
+# hpif - Simple text input filter for lpd for HP-PCL based printers
+# Installed in /usr/local/libexec/hpif
+#
+# Simply copies stdin to stdout. Ignores all filter arguments.
+# Tells printer to treat LF as CR+LF. Ejects the page when done.
- まず, DVI から LaserJet, または, DVI から PostScript
- への変換の場合, フィルタが dvilj や
- dvips の 出力メッセージを解析することで,
- 何ページ分の変換がおこなわ れたかを知ることができます.
- 他のファイル形式とその変換 プログラムに関しても,
- 同様のことができるかもしれません.
+printf "\033&k2G" && cat && printf "\f" && exit 0
+exit 2
- しかし, この方式には問題点があります. それは, 変換され
- たページがすべて印字されるとは限らないということです. 例
- えば, プリンタが紙詰まりを起こしたり, トナー切れになっ たり,
- はたまた, 爆発したりするかもしれません. そのよう
- な状況により印字が途中で中止されたとしても, この方式で は,
- ユーザは全ページ分の料金を課されてしまうのです.
+ ホスト orchid にある
+ /etc/printcap の
+ 例を以下に示します. ここには, 一番目のパラレル
+ ポートにプリンタ (Hewlett Packard LaserJet 3Si)
+ が一台接続されており, そのプリンタ名は
+ teak です.
- それでは, どのような対策をたてることができるのでしょう
- か.
+
+#
+# /etc/printcap for host orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:
+
+
+
+
+ 訳注: LF を CR+LF
+ に置き換える cat コマンド
+ を作る方法も当然考えられます. そして, このコマ
+ ンドと, if-simple の cat の部分
+ を置き換えればよいわけです. 具体的にどのように
+ するかは, 読者への練習問題としましょう.
+
+
+
+
+
- 正確な
- 課金をおこなうための唯一の確実な 方法は,
- 何 ページ印字したのかを知らせることができるプリンタを入手
- し, これをシリアルポートかネットワークに接続することで す.
- ほとんどすべての PostScript プリンタではこの概念
- がサポートされています. 他のプリンタも同様です (Imagen
- レーザプリンタをネットワーク接続するなど). それぞれの
- プリンタのフィルタを, ジョブを印字した後で印字ページ数
- を得るように, 変更してください. そして, 課金情報はここ
- で得られた値のみに
- 基づいて記録してください. 行数 を数えたり,
- エラーが生じやすいファイルの調査は必要とさ れません.
+ 各行が重ね書きされてしまった
+
+ プリンタは紙送りをまったくしませんでした.
+ テキストすべての行
+ がある行の上で重ねて印字されてしまいました.
- もちろん, 気前よく印字料
- 金をすべて無料にすることもできます.
-
-
-
+ この問題は,
+ 階段現象とは“正反対”な問題で, ほとんどま
+ れにしか起こりません. FreeBSDでは行末として扱われる
+ LF 文字が, 紙の左端に印字位置を復帰しますが,
+ 紙送りはしな い CR 文字として扱われています.
-
- 標準スプーラの代替品
+ プリンタの設定スイッチかコントロールパネルを
+ 使って, LF と CR
+ の文字を次のような解釈をするようにしてください.
+
- このマニュアルを最初から通読されている方ならば, ここまでで,
- FreeBSD 付属の LPD スプーリングシステムに関して知っておくべき
- ことすべてを学ばれたことと思います. 多分, このシステムに
- あるたくさんの欠点について認識できたことでしょう. すると,
- “(FreeBSD 上で動作する)
- スプーリングシステムには他にどのような
- ものがあるのか”という疑問が自然と湧いてきます.
+
+
+
+
+ プリンタが受け取ったとき
+ プリンタがおこなう
+
+
- 残念ながら, 著者は代替のスプーラを 2つ
- だけしか探し出すこと ができませんでした. そして,
- それぞれはほとんど同一のものです. 以下に,
- 両システムの紹介をおこないます.
+
+
+ CR
+ CR 動作 (復帰)
+
-
- PLP (Portable Line Printer スプーリングシステム)
-
- PLP は Patrick Powell によって開発されたソフトウエアを
- ベースにされており, インタネット規模のグループの開発者
- によって管理されていました. このソフトの主要サイトは「
-
- ftp://ftp.iona.ie/pub/plp/ 」です.
- 「
- web page 」にもあります.
+
+ LF
+ CR + LF (復帰, 改行)
+
+
+
+
- PLP は BSD LPD スプーラと極めて似ていますが, 以下のも
- のを含むホストの機能が自慢です.
+
+ 訳注: LF を CR+LF
+ に置き換える cat コマンドを作る方法
+ も当然考えられます. そして, このコマンドと,
+ if-simple の cat
+ の部分を置き換えればよいわけ です.
+ 具体的にどのようにするかは, 読者への練習問題とし
+ ましょう.
+
+
+
-
-
- ネットワークサポートの強化. ネットワーク接続され
- るプリンタのサポートや NIS で管理可能な printcap ファ
- イル, NFS マウントされるスプーリングディレクトリの機
- 能が組み込まれています.
-
+ プリンタが文字を紛失してしまう
+
+ 印字しているのですが,
+ 各行の2〜3文字が印字されません.
+ プリンタを動かせば動かすほど,
+ もっとたくさんの文字が紛 失されていき,
+ この問題は更に悪くなっていくかもしれませ
+ んでした.
-
- 洗練されたなキュー管理. 1つのキューで複数のプリン
- タに対応可能. キュー間でジョブを転送したり, キューのリ
- ダイレクトができます.
-
+ この問題は,
+ シリアルポートを通してコンピュータから送ら
+ れてくるデータの速度に,
+ プリンタがついていけないことに 起因します
+ (この問題は, パラレルポートに接続されたプリ
+ ンタでは発生することはありません).
+ この問題を克服する 方法が2つあります.
-
- リモートプリンタの制御機能
-
+
+
+ プリンタが XON/XOFF のフロー制御をサポート
+ している場合は, 項目 fs で
+ TANDEM ビット をセットして, FreeBSD
+ にこの機能を使用させて ください.
+
-
- ジョブの優先順位付け
-
+
+ プリンタがキャリアフロー制御をサポートして
+ いる場合は, 項目 fs で MDMBUF
+ ビットをセッ トして下さい. それから,
+ プリンタとコンピュータ
+ を接続しているシリアルケーブルがキャリアフロー
+ 制御用に正しく配線されたものかどうかを確認して
+ ください.
+
-
- 拡張性のあるセキュリティとアクセスオプション
-
-
-
-
+
+ プリンタがフロー制御をまったく
+ サポートしていな い場合は, 項目
+ fs の NLDELAY と TBDELAY,
+ CRDELAY, VTDELAY, BSDELA のいくつかのビッ
+ トを組み合わせて使い, プリンタへ送るデータの流
+ れに適当な遅延を加えてください.
+
+
+
+
- LPRng
-
- LPRng は, その称するところの意味は“LPR: the Next
- Generation”ですが, PLP を完全に書き換えたものになっ
- ています. Patrick Powell と Justin Mason (PLP の主要
- なの管理者) の共同で LPRng が作成されました. LPRng の
- 主要サイトは「
- ftp://dickory.sdsu.edu/pub/LPRng/ 」です.
-
-
-
-
-
- 謝辞
+ プリンタは意味不明な
+ 文字列を印字した
+
+ プリンタはランダムなゴミのように
+ 見えるものを印字しまし たが,
+ 意図したテキストは印字してくれませんでした.
- このドキュメントの開発の手助けをして頂いた以下の方々に感謝の
- 意を表わしたいと思います.
+ この問題は, 通常,
+ シリアルポートに接続したプリンタでの
+ 通信パラメータの誤りからくる前項とは別の症状です.
+ br 項目の通信速度と
+ fs と fc
+ 項目のパリ ティビットの設定を共に調べてみてください.
+ また, プリン タでの設定が
+ /etc/printcap
+ ファイルで設定した
+ 内容と一致しているかどうかも確認してください.
-
- Daniel Eischen deischen@iworks.interworks.org
-
- 精読するためのあり余るほどの HP 用フィルタを提供してく
- れたことに.
-
-
+
+ 訳注: simple-if
+ のような単純なフィルタだけの状態で, 日
+ 本語を含むテキストを印字しようとした場合にも,
+ シリアル ポート, パラレルポートの使用に関係なく,
+ このような症状 は見られます. 日本語プリンタの場合,
+ 漢字コードそのもの
+ を送信しただけでその漢字を印字してくれるものは,
+ 少なく とも訳者は見たことがありません.
+ 漢字を印字するための制御
+ コードを別途送信するフィルタが必要となります.
+ また, そ のようなフィルタを使用していても,
+ そのフィルタが想定し
+ てる漢字コードと異なった文書を
+ プリントしようとしたとき もこのような症状は出ます.
+ もちろん, これはプリンタ用の
+ 言語を持たないプリンタの話で, PostScript プリンタ
+ などにプレインテキストを送信しても, 日本語対応,
+ 非対応 に関らず, 意味不明な文字列が印字される
+ (もしくは, 何も 印字されない) ことでしょう.
+
+
+
- &a.jehamby;
-
- 提供して頂いた Ghostscript から HP
- へのフィルタに.
-
-
+ 何も起きない
+
+ もしプリンタが何の動作もしないのであれば,
+ ハード的な問 題ではなく, 多分 FreeBSD
+ の中に問題があります.
+ /etc/printcap ファイルで,
+ デバッグしているプ リンタのエントリに
+ (lf 項目で) ログファイルを取るよ
+ うに設定を追加してください. 例えば, プリンタ
+ rattan 用のエントリの項目
+ lf は次のようになります.
-
- &a.jfieber;
-
-
- Ghostscript を使って PostScript プリンタをシミュレートしている
- FreeBSD システムに対し, Windows95 から印刷した際に
- 正しく出力されなかった不具合のデバッグと,
- この文書の修正に関して助言してくれたことに.
-
-
-
+
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:\
+ :lf=/var/log/rattan.log
-
- Stephen Montgomery-Smith
- stephen@math.missouri.edu
+ 次に, もう一度印字をおこなってみます. そして,
+ 発生したと思
+ われるエラーメッセージを見るためにログファイル
+ (上記の 例では,
+ /var/log/rattan.log )
+ を調べます. そこ で見られたメッセージを元に,
+ 問題を解決してみてください.
-
- HP 製プリンタにおける最後の改ページ指定を,
- "\f" ではなく "\033&l0H" を使うよう提案してくれたことに.
- 前者には余分に一枚白紙を出力してしまう場合があるという,
- 後者にない現象があります.
-
-
-
- 私の妻, Mary Kelly
- urquhart@argyre.colorado.edu
-
- 彼女と一緒にいるよりもずっと長い時間を FreeBSD のため
- に費やすことを許してくれたことに.
-
-
-
-
+ 項目 lf
+ が指定されていない場合, LPD はデフォルト
+ のログファイルとして
+ /dev/console を使います.
+
+
+
+
diff --git a/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml b/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml
index 7149b29370..1af6d4504a 100644
--- a/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml
@@ -1,3129 +1,3142 @@
シリアル通信
+
+ 概要
+
+
+ UNIX は現在に至るまで, 常にシリアル通信機能をサポートしていました.
+ 実際, 本当に初期の UNIX マシンは, ユーザとの入出力にシリアル通信を使っていました.
+ 10 文字毎秒のシリアルプリンタ,
+ キーボードから構成された“端末(terminal)”が広く使われていた当時とは,
+ 何もかもがすっかり変わっています. この章では, FreeBSD
+ でシリアル通信を行なういくつかの方法について説明しています.
+
+
+
シリアル接続の基礎
Assembled from FAQ.
このセクションには,
シリアルポートについての一般的な情報が書かれていま す.
あなたが求めている情報が, もしここで見つからなかった場合には,
ハン ドブックの端末とダイアルアップのセクションを見てください.
ttydX
(または cuaaX )
デバイスは, アプリケーション上
でシリアルポートをオープンする時に使用する,
標準的なデバイスです. プロセスがデバイスをオープンする際, 端末
I/O 設定の デフォルトセットが使用されます. これらの設定内容は,
次のコマンドで確認することができます.
&prompt.root; stty -a -f /dev/ttyd1
このデバイスの設定を変更した場合, その設定はデバイスが
クローズされるまで有効です. デバイスが再びオープンされる時,
デフォルトの設定値に戻ります.
デフォルトの設定を変更するためには,
“初期状態”を設定した
いデバイスをオープンして調節することができます. 例えば, ttyd5
というデバイスに対して, デフォルトで CLOCAL
モードを ON にして, 8 bits の設定をおこない,
XON/XOFF
フロー制御を行うように設定したい場合は, 次のようにします.
&prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff
このコマンドを記述するのに適しているファイルは,
/etc/rc.serial です.
アプリケーションがttyd5
をオープンするときに,
デフォルトでこの設定をおこなうようになります. これらの設定は,
好きなように変更することができます.
また, “固定状態”のデバイスに調節を行うことで,
ある一定の設定が
アプリケーションに変更されることを防ぐこともできます. 例えば,
ttyd5 のスピードを 57600 bps
に固定したい場合には, 次のようにします.
&prompt.root; stty -f /dev/ttyld5 57600
これで, ttyd5 をオープンして,
シリアルポートの転送スピードを
変更しようとするアプリケーションは 57600 bps
に固定されるでしょう.
本来, デバイスの初期状態を変更したり設定を固定するのは,
root だけが行うべきです.
MAKEDEV
スクリプトがデバイスエントリを作成する時は,
これをおこないません .
シリアル端末
原作: &a.kelly;
28 July 1996
訳: &a.max;
シリアル端末を利用することで,
コンピュータのコンソールのそばにいないと きや,
手近にネットワーク接続されているコンピュータがないときでも,
FreeBSD の機能を便利に, かつ安価に利用することができます.
ここでは, FreeBSD
にシリアル端末を接続する方法を解説します.
端末の種類と利用方法
もともと Unix システムにはコンソールがありませんでした.
ユー ザはコンピュータのシリアル
ポートに接続された端末からログインして
プログラムを利用していました.
ちょうどモデムと通信ソフトを使ってリモート
のコンピュータにログインし, テキスト
ベースのプログラムを利用するのと よく似ています.
最近の PC は,
高品質の画像を表示できるコンソールを搭載していま すが,
ほとんどすべての Unix 系 OS には未だにシリアル
ポートを使ってログ インするための機能があり, FreeBSD
でもこの機能がサポートされています.
現在使用されていないシリアル
ポートに端末を接続することでシステムに ログインし,
通常はコンソールや Xウィンドウ システムの
xterm のウィ ンドウ上で起動しているテキスト
ベースのプログラムであれば何
でも利用することができます.
職場での利用ということで考えるならば, FreeBSD
が動作しているコンピュー タに接続された何台ものシリアル端末を
各社員の机に配置するというようなこ とが可能です. また,
家庭での利用方法としては, 余っている古い IBM PC や Macintosh
を FreeBSD が動いているパワフルなコンピュータの端末として利
用することができます. 普通ならシングルユーザのコンピュータを,
パワフ
ルなマルチユーザのシステムに変えることができるのです.
FreeBSD では, 以下に挙げる3種類の端末が利用できます.
ダム (dumb) 端末
PCを利用した端末
X 端末
以下は, それぞれについての解説です.
ダム端末
ダム端末は, シリアルライン経由でのコンピュータとの接続専
用のハードウェアです. ダム端末は,
テキストの送受信および表示ができる
程度の計算能力しかもっていないので, “dumb”
(間抜け) というように呼ば れています.
この端末上でプログラムを実行することはできません. テキスト
エディタ, コンパイラ, E-mail,
ゲームなどなどのプログラムを実行するのは,
ダム端末を接続しているコンピュータの方です.
Digital Equipment社の VT-100 や, Wyse社の WY-75
を初めとして, 多くのメーカが何百種類もの
ダム端末を作っています. ほとんどどんな種 類のダム端末でも
FreeBSD に接続して使用できます. さらに, 高性能の端
末の中には画像を取り扱えるものもありますが,
限られた数のソフトウェア
パッケージしかこういった機能には対応していません.
ダム端末は, X ウィンドウ システムで提供されるようなグラ
フィックアプリケーションを必要としない
職場で広く用いられています.
PC を端末として利用する
ダム端末
がテキストの表示およ
び送受信の機能をそなえただけのものならば, 言うまでもなく,
どんなPC もダム端末になり得ます.
必要なものは適切なケーブルと, そのPCの上
で動作する端末エミュレーション
を行うソフトウェアのみです.
このような環境は, 家庭においてよく利用されます.
たとえば, あなたの同居 人が FreeBSD
のコンソールを専有している時などに, あまりパワーのないコ
ンピュータを FreeBSD システムにシリアル端末として接続し,
その端末上で
テキストだけを用いる作業をおこなうことができます.
X 端末
X 端末は, 既存のものの中で最も洗練された種類の端末といえ
ます. X 端末は, たいていの場合シリアル ポートではなく,
イーサネッ
トのようなネットワークを利用した接続をおこないます. また,
アプリケーション の利用においても,
テキストベースのものだけでなく, X アプリケーション
の利用が可能です.
ここでは, 参考までに 端末について紹介しただけで, X 端
末の設定や利用についての解説は
おこないません .
ケーブルとポート
シリアル端末を FreeBSD システムに接続するためには,
適切なケー ブルと,
端末を接続するためのシリアルポートが必要です. ここでは, これ
らについて説明します. もし既にあなたの利用したい端末と,
その端末 を接続するためのケーブルについてよく理解していれば,
設定
の章まで読み飛ばしてください.
ケーブル
端末の接続は, シリアルポートを利用します. そこで, 端末を
FreeBSD システムに接続するためには, シリアルケーブル
(RS-232C ケーブ ルとも呼ばれています)
が必要となります.
シリアルケーブルには2種類のケーブルがあります.
どちらの種類の ケーブルを使わなければいけないかは,
どんな端末を接続したいかによります.
もし, PC を端末として利用したい場合は, ヌルモデム ケーブル
(リバースケーブルもしくは
クロスケーブルと呼ばれることもしばしばあります)
を使用してください. ヌルモデムケーブルは,
コンピュータ同士や端末同士を接続するために用い
られるケーブルです.
もし, 本物の端末を接続するのであれば, その端末につい
てきたドキュメントからどのようなケーブルを
使うべきか調べてください. も しドキュメントがない場合は,
まず ヌルモデム
ケーブルを試してみて, うまくいかない場合は スタンダード ケーブル
(しばしばストレートケーブルと呼 ばれます)
を試してみてください.
また, 端末側と FreeBSD 側の 両方の
シリア ポート の形状が,
あなたが使用しようとしているケーブルについているコネクタの形
状と一致していなければなりません.
ヌルモデムケーブル
ヌルモデムケーブル (またはリバースケーブルあるいはクロ
スケーブル) は, たとえば “signal ground”
信号のように, いくつかの信 号はそのまま通しますが,
他の信号は途中で入れ替えて通します. たとえば, “send
data” 信号のピンは, 反対側のコネクタの
“receive data” 信号の
ピンと繋がっています.
自分で使うケーブルは自分で作りたいということであれば,
以下にター ミナルを接続する際に推奨される
ヌルモデムケーブルの結線を示しておきま す. この表では,
RS-232C の信号線の名前と, DB-25 コネクタ上のピンの番
号を示しています.
Signal
Pin #
Pin #
Signal
TxD
2
connects to
3
RxD
RxD
3
connects to
2
TxD
DTR
20
connects to
6
DSR
DSR
6
connects to
20
DTR
SG
7
connects to
7
SG
DCD
8
connects to
4
RTS
RTS
4
5
CTS
CTS
5
connects to
8
DCD
DCD と RST では, コネクタ内部でピン4を5に接続し,
そして逆側のコネクタのピン8と接続します.
スタンダード RS-232C ケーブル
スタンダードシリアルケーブル
(またはストレートケーブル) の場合は, すべての RS-232C
信号をそのまま通します. つまり, 片方の “send
data” 信号のピンは, 逆側の “send data”
信号のピンと繋がっています. モデムを FreeBSD
に接続するときや, 一部の端末を接続するときにこのタイプの
ケーブルを使用します.
ポート
シリアルポートは, FreeBSDが動作しているホスト
コンピュータと端
末の間でデータのやりとりを行うために用いるデバイスです.
ここでは, 現在存在するポートの種類と FreeBSD
でのポートのアクセス方法について解 説します.
ポートの種類
シリアルポートには何種類かのものがあります.
ケーブルを購 入したり自作したりする前に,
そのケーブルのコネクタの形状が端末および FreeBSD
システムのポートの形状と一致していることを
確認してください.
ほとんどの端末は DB25 ポートを搭載しています.
FreeBSDが動作しているも のを含めて, PCは DB25 または DB9
ポートを搭載しています. マルチポート
のシリアルカードの場合は, RJ-12 や RJ-45
のポートを搭載しているかもし れません.
利用されているポートの種類に関しては,
ハードウェアについてきたドキュメ ントを参照してください.
また, 多くの場合, ポートの形状から判断すること
もできるでしょう.
ポートの名前
FreeBSDでは, /dev
ディレクトリ内のエントリを介
してシリアルポートへのアクセスがおこなわれます.
2種類の異なったエン トリがあります.
着信用のポートの名前は,
/dev/ttydx (
x は 0から始まるポート番号)
となっています. 一般に端末の接続には
着信用ポートを用います. 着信用のポートでは,
シリアルラインのデータ キャリア検出 (DCD)
信号がオンになっている必要があります.
発信用のポートの名前は,
/dev/cuaax
となっています.
発信用のポートは普通モデムの接続に用い, 端末の接続には
利用しません. ただ,
ケーブルまたは端末がキャリア検出信号を使えない
タイプのものの場合は,
発信用のポートを使うとよいでしょう.
詳しくは, &man.sio.4;
のマニュアルをご覧ください.
たとえば, 端末を一つ目のシリアルポート (DOS
でいうところの COM1 ) に接
続したとすると, /dev/ttyd0
がこの端末を指すことになります. また,
二つ目のシリアルポート (COM2 )
ならば /dev/ttyd1 となり,
以下この形式のデバイスエントリを使います.
各シリアルポート,
特にマルチポートのシリアルカードを利用する ために, kernel
の設定をおこなう必要がある場合がありますので, 注意してくだ
さい. 詳しくは, FreeBSD
カーネルのコンフィグレーション
をご覧ください.
設定
ここでは, 端末からのログインを可能にするために必要な
FreeBSD 側の設定について解説します.
既に端末を接続するポートが利用できるように kernel
の設定をおこない, 端末が接続されているものと考えて, 解説を進め
ます.
簡単に言えば, プロセス管理や初期化をおこなっている
init プロセス に対して,
ログイン名を読み込み login
プログラムを起動している getty
を実行するように指示します.
これをおこなうには, /etc/ttys
の内容を編集する必要があります. まず, su
コマンドで root になって, /etc/ttys
に以下の 変更を加えてください.
端末を接続するポートの /dev
のエントリが含ま れている行がまだ存在しなければ, これを
/etc/ttys に追加してく ださい.
/usr/libexec/getty
が対象となるポートに対して
実行されるように指定してください. また,
/etc/gettytab ファイ ル内の適切な
getty
タイプのエントリを指定してください.
デフォルトのターミナルタイプを指定してください.
対象となるポートを “on”
に設定してください.
そのポートが “secure”
であるかどうかを指定してください.
init に
/etc/ttys を読み込みなおさせてく
ださい.
また, 必要に応じて /etc/gettytab
を変更し, 上の 2で使用する
getty のエントリを追加してください.
このドキュメントではこの方
法については特に解説しませんので, &man.gettytab.5;
および &man.getty.8; のマニュアルをご覧ください.
以下では, 上のステップについて詳しく解説します.
実例を用いて, 何をす べきかを解説していきます. Wyse-50 と,
古い IBM の 286 マシン上で通信 ソフト Procomm を使って VT-100
エミュレーションをおこなっているものを端
末の例として紹介します. また, Wyse は 2番目のポートに,
286マシンは 6 番目のポート
(マルチポートのシリアルカード上のポート) に接続します.
/etc/ttys について,
より詳しくは, &man.ttys.5; のマニュアルをご覧
ください.
/etc/ttys へのエントリの追加
既にエントリがある場合を除いて, まず初めに
/etc/ttys
にエントリを追加しなければいけません.
/etc/ttys には,
FreeBSDシステム上のログインを許可するすべての
ポートを記述します. たとえば, 一つ目の仮想コンソール
ttyv0 のエン
トリもこのファイルにあります. このエントリのおかげで,
コンソールからの ログインが可能になっています.
このファイルには, 他の仮想コンソール, シ
リアルポートおよび仮想端末のエントリも含まれています.
端末を接続する 場合は, そのポートの
/dev のエントリを,
/dev の部分
を省略して記述します.
FreeBSD のインストール当初の状態では,
ttyd0 から ttyd3
までの, 初めの四つのシリアルポートのエントリが
/etc/ttys に記述され ています.
これらのポートのいずれかに端末を接続する場合は, 新たなエント
リを追加する必要はありません.
ここで紹介している例では,
既にファイルにエントリが存在する 2番目のシリ アルポート,
ttyd1 に Wyse-50 を接続しています.
一方, 6番目のシ リアルポートに接続する
286マシン用のエントリは, 新たに追加してやらな
ければなりません. 以下に, エントリを追加した後の
/etc/ttys か ら抜粋して示します.
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd5
getty タイプの指定
次に,
端末からのログインを処理するプログラムの指定をおこな います.
FreeBSDでは, 標準的には
/usr/libexec/getty をこの目的
で利用しています. login:
プロンプトを送り出しているのは, このプロ グラムです.
getty プログラムは,
コマンドラインパラメータとして,
getty タイプをとります. ただし,
このパラメータは必須ではあ りません.
getty タイプは,
ボーレートやパリティといった, 接続され
た端末の特徴を表すものです. getty
プログラムは, 与えられた getty
タイプに対応したこれらの特徴を
/etc/gettytab から 読み込みます.
ファイル /etc/gettytab には,
新旧の端末に関する多数のエントリ が記述されています.
ほとんどの場合, std
という文字列で始まる名前 のエントリを使えば,
接続された端末に対してログインセッションを提供す
ることができます. これらのエントリを利用した場合,
パリティは無視されま す. 110 bps から 115200 bps
までのボーレートに対応した std のエン
トリがあります. 当然,
新たなエントリを追加することも可能です.
&man.gettytab.5; のマニュアルに,
さらに詳しく解説されています.
/etc/ttys の getty タイプの設定をする際は,
端末側の通信 パラメータの設定が, getty
タイプのものと一致していることを確認し てください.
紹介している実例では, Wyse50 はパリティなし 38400 bps
で接続していま す. また, 286 マシンの方は, パリティなし
19200 bps の接続です. 以下は,
この段階でのこの二つの端末に関する
/etc/ttys の設定です.
ttyd1 "/usr/libexec/getty std.38400" unknown off secure
ttyd5 "/usr/libexec/getty std.19200"
ここで, 実行するプログラムを指定している
2番目のフィールドが, ダブルクォー
テーションに囲まれていることに注意してください.
こうしないと, getty のタイプの指定が,
つぎのフィールドとして判断されてしまう可 能性があるので,
十分注意することが必要です.
デフォルトのターミナルタイプの指定
/etc/ttys の 3番目のフィールドには,
そのポートのター ミナルタイプのデフォルトを指定します.
ダイアルアップ用のポートの場合 は,
ユーザがどのタイプの端末あるいは
通信ソフトを利用してダイアルアップ
してくるかは分からないので, unknown や
dialup を記述するの が一般的です. 一方,
直結された端末の場合, ターミナルタイプが変わるこ
とはありませんから,
このフィールドには実際のターミナルタイプを記述し
ます.
一般に, ユーザは .login や
.profile などのファイル内で
tset コマンドを使って,
ターミナルタイプをチェックし, 必要ならば
ターミナルタイプの入力を求めるプロンプトを
表示するようにします. この とき,
/etc/ttys
の中でターミナルタイプが指定されていれば,
このプロンプトを表示せずに先に進むことが可能です.
FreeBSD 上で, どのターミナルタイプを利用できるかは,
/usr/share/misc/termcap をご覧ください.
このファイルには, お
よそ 600 のターミナルタイプが定義されています.
必要ならば, 新たなエン
トリを追加することも可能です. 詳しくは &man.termcap.5;
のマニュアルをご覧ください.
紹介している例では, Wyse-50 のターミナルタイプは
Wyse-50 です (もっ
とも他のタイプをエミュレートすることも可能ですが, ここでは
Wyse-50 モー ドで使用します. ). また, 286マシン上では
Procomm が VT-100 エミュレー
ションをおこなうように設定されています. 以下が, まだ未完成の
/etc/ttys の関連部分です.
ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
ttyd5 "/usr/libexec/getty std.19200" vt100
ポートを利用可能にする
/etc/ttys のつぎのフィールド,
つまり 4番目のフィー ルドは,
そのポートをアクティブにするかどうかの設定です.
このフィールド に on を指定すると,
init プロセスが2番目のフィールドに書かれ
たプログラム, getty を実行し,
ログインのためのプロンプトを送り出 すようになります.
このフィールドに off を記述すると,
getty は起動されず,
よってこのポートからのログインもできなくなります.
ということで, 当然このフィールドには
on を指定します. 以下が
/etc/ttys です. それぞれのポートを
on にしました.
ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
ttyd5 "/usr/libexec/getty std.19200" vt100 on
``secure'' なポートの指定
とうとう最後のフィールドの設定です.
(実際にはここでは触れ ませんが,
オプショナルなwindow
の設定のフィールドも存在するので,
ほぼ最後のフィールドといった方が正確かもしれません. )
最後のフィールド では,
そのポートが安全かどうかを指定します.
ここで, “安全”
なポートとはどういうポートのことでしょう?
これは, root のアカウント (または, ユーザ ID が 0
のアカウント) がロ グインしてもよいポートということです.
安全でないポートでは, root のロ
グインは許可されません.
では, どのように安全なポートとそうでない
ポートを使えばよいでしょう?
ポートを安全ではないとすることで,
そのポートに接続された端末からは, root
のログインを禁止することができます. FreeBSDシステムの root
のパス ワードを知っている人は,
まず一般ユーザとしてログインしなければなりませ ん.
スーパユーザの特権を得るためには, そのうえで
su コマンドを
利用しなければいけません.
これによって, root アカウントが不正に利用された場合に,
その経過を調査 する上で二つの記録を利用できるようになります.
login と su
コマンドは, 共にシステムのログに記録を残します (また,
ログイン は wtmp にも記録を残します.
).
ポートを安全なものとして指定すると, その端末からの root
のログインが可 能になります. root
のパスワードを知っている人は, 単に root としてログ
インできます. この場合は, 当然ログインの記録や
su コマンドのログ は残りません.
では, どちらを使うべきでしょうか?
単純に “insecure” を使うのがよいでしょう.
公共の場所にある訳ではな い 端末や,
鍵のかかったドアの内側にある端末にも
“insecure” を指 定する方がよいでしょう.
スーパユーザの特権が必要な場合でも, ログイ ンして
su を実行するのは,
ごく簡単なことなんですから.
以下に, ようやく完成した /etc/ttys
のエントリに端末の場所を表
すコメントを追加したものを示します.
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroom
init にファイル
/etc/ttys の再読み 込みをさせる
FreeBSD をブートすると, 最初に起動されるプロセス,
init が /etc/ttys
を読み込んで, 記述されているプログラムを利用可能な
ポートに対して実行し,
ログインプロンプトを送り出させます.
/etc/ttys の編集が終わった後,
init に変更を認識させるた めに, わざわざ
FreeBSD をブートしなおしたくはないでしょう. このような
場合のために, init は,
SIGHUP (hangup) シグナルを受信すると,
/etc/ttys
を読み込みなおすようになっています.
/etc/ttys の変更を保存したら,
以下のようなコマンドを実行して, init
に対して SIGHUP を送信します.
&prompt.root; kill -HUP 1
(init プロセスのプロセス ID は
常に 1です. )
すべての設定が正しくおこなわれ,
すべてのケーブルがただしく接続されてい て,
かつ端末の電源が入っていれば,
端末にはログインプロンプトが表示され ているはずです. これで,
これらの端末からの最初のログインの準備が完了で す!
トラブルシューティング
細心の注意を払って設定をおこなっても,
ときには端末の接続がう まくいかない場合があるでしょう. 以下に,
よく見られる問題とその解決方法 を示します.
ログインプロンプトが表示されない
端末の電源が接続され,
スイッチが入っていることを確認してください. もし, PC
を端末として利用している場合は,
通信ソフトが適切なシリアルポー
トを利用する設定になっているかどうか確かめてください.
ケーブルがしっかりと端末と
FreeBSDが動作しているコンピュータの両方に接続され
ていることを確認してください. また,
正しい種類のケーブルを利用している
か確かめてください.
端末と FreeBSD
の間の通信速度とパリティの設定が一致していることを確認
してください.
出力をモニタに表示するタイプの端末の場合は, モニタ
のコントラストと明るさの設定を確認してください. また,
出力が印刷 されるタイプの端末の場合は,
紙とインクが十分にあるかどうかを確かめてく
ださい.
getty が動いていて,
端末を認識していることを確認してください. 以
下のコマンドで動作中の getty
プロセスのリストを得ることができます.
&prompt.root; ps -axww|grep getty
その端末に対する getty
の情報が表示されるはずです. たとえば, 以下
の表示例は, getty は
2番目のシリアルポート (ttyd1 ) に対し
て /etc/gettytab 中の
std.38400 のエントリを使って動作し
ているということを示しています.
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
もし, getty
プロセスが一つも動いていないようであれば,
/etc/ttys の中で,
そのポートを利用可能にする設定をしたかどう
か確かめてください. また, kill -HUP
1 を確実に実行してください.
ログインプロンプトの代わりにゴミが表示される
端末と FreeBSD
の間の通信速度およびパリティの設定が一致していることを確
かめてください. また, getty
プロセスの情報を調べて, 適切な
getty
のタイプが使用されていることを確認してください. 間違った
getty
タイプが使用されている場合は,
/etc/ttys を修正し てから,
kill -HUP 1
を実行してください.
文字が重複して表示される,
入力したパスワードが表示される
端末または通信ソフトの設定で, “半二重 (half
duplex)”あるいは“ローカ
ルエコー”となっているところを, “全二重 (full
duplex)”に変更してく ださい.
ダイアルインサービス
原作: &a.ghelmer;.
訳: &a.max;.
6 September 1996.
このドキュメントでは, FreeBSD
で外部からのモデムによるアクセスを受け付
けるための設定に関してまとめてあります. このドキュメントは筆者が
FreeBSD 1.0, 1.1 および 1.1.5.1 での経験と, 他の UNIX 系 OS
での経験を 基に書いたものですが,
必ずしも十分な内容でないかもしれませんし, 掲載し
た実例もあなたが今お使いの環境とは一致しないかもしれません.
また, 筆者 はこのドキュメントに従って行われた作業で
データが失われたりシステムが破 壊されるようなことがあっても,
一切責任をとれません.
設定を始める前に
筆者は, 読者が FreeBSD
に関する基本的な知識をもっていることを仮定して
このドキュメントをまとめました. まず, FreeBSD
が既にインストールされ ていて, UNIX
系環境においてファイルの編集の方法やシステムに付属のマニュ
アルを参照する方法を知っている必要があります. また,
以下に示すように, FreeBSD
の特定のバージョンが必要となりますし, いくつかの用語に関する
知識,
そしてモデムや多少の配線に関する知識も必要となります.
FreeBSD のバージョン
まず, FreeBSD のバージョンは 1.1 以上を使用してください
(バージョン 2.x でもかまいません. ). FreeBSD 1.0 には,
2種類のシリアル ドライバ が含まれているので,
混乱の元となり得ます. また, FreeBSD のシリアル ディバイス
ドライバ (sio ) は,
バージョンを追う毎に改善されてき ていますので,
より新しいバージョンの FreeBSD を使用することで, よりよ い,
より効率の高いドライバを利用することができるはずです.
用語解説
以下, 簡単にいくつかの用語について解説しておきます.
bps
Bits per Second の略で,
データの転送速度を表す単位.
DTE
Data Terminal Equipment の略.
たとえばコンピュータ本体のこと.
DCE
Data Communications Equipment の略で,
具体的にはモデムのこと.
RS-232
EIA (米電気産業協会)
のハードウェア間シリアル通信の標準規 格.
これらの用語やデータ通信一般に関して,
より詳しい情報が必要な場合は, The RS-232
Bible という本 (誰か ISBN 分かる方いませんか?)
が参考 になると思います.
通信においてのデータ転送速度に関して,
このドキュメントでは “ボーレー ト” (baud rate)
ではなく, “bps” (bits per second)
をその単位として 使うことにします. これは,
ボーというのは一定時間に生じる電気的状態の変
化の数を表す単位にすぎず, bps
という単位の方が実体に即しているか らです. (少なくとも,
こういう表現をしておけば, 意地の悪い人に怒られる
こともないのではないかと思います. )
外づけモデムと内蔵モデムについて
ダイアルアップのサービスに関していえば,
外づけのモデムの方が適している ようです. これは,
多くの外づけのモデムは設定を不揮発ラムに書き込んで半
永久的に保存することができますし, また RS-232
に関する重要な情報を知る
ための点滅するライトによるインディケータが
搭載されているからです. 点滅 するライトは,
システムを見に来た訪問者に強い印象を与えるという効果だけ
でなく, モデムが適切に動作しているかどうかを知るためにも
有効です.
一方, たいていの内蔵型のモデムには
不揮発性ラムが搭載されていないため, ディップ
スイッチの変更以外に設定を保存する方法がありません. また, も
しインディケータがついていても, おそらくコンピュータのケース
カバーが 外されていなければその状態を確認するのは
難しいでしょう.
モデムとケーブル
以下のことに関して, 予め知っておく必要があります.
コンピュータとモデムの間での通信が
行えるようにするための接続方 法.
(内蔵型の場合は接続の必要はありません)
お使いのモデムのコマンドについての知識,
あるいはコマンドの解説 の在処
(通信ソフトを使っての)
モデムの不揮発ラムに保存可能な設定の変更 方法
1番目のモデムの接続はたいてい簡単に行えるはずです.
ほとんどのストレー ト シリアル ケーブルが使えるでしょう.
使用すべきケーブルは, 両端に適 切なコネクタ (DB-25 または
DB-9 の雄または雌) のついた, DCE-DTE 間接 続用のもので,
以下の信号線が接続されていなければなりません.
Transmitted Data (SD )
Received Data (RD )
Request to Send (RTS )
Clear to Send (CTS )
Data Set Ready (DSR )
Data Terminal Ready (DTR )
Carrier Detect (CD )
Signal Ground (SG )
FreeBSD で 2400bps 以上の転送速度を利用する場合には,
フロー制御のため に RTS 信号と
CTS 信号が必要です. また,
接続の確立と回線の切 断を検出するために
CD 信号を利用します. さらに,
DTR 信号を使っ
て回線切断後のモデムのリセットを行います. ケーブルの中には,
総ての必要 な信号線が接続されていないものもありますので,
たとえば, 回線切断後でも ログイン
セッションが残ってしまうといった問題が発生した場合などには,
ケーブルに問題がある可能性もあります.
次に, お使いのモデムにもよりますが,
もしモデムのコマンドをよく覚えてい ない場合は,
モデムのマニュアルをすぐに参照できるようにしておいてくださ
い. このドキュメントでは例として USR Sportstar の 14,400 bps
の外づけ型 モデムのコマンドを示しておきます.
他の種類のモデムをお使いの場合も, 参
考になるかもしれません.
最後に, FreeBSDで快適にモデムを使うためにも,
モデムの設定方法を知って おく必要があります. FreeBSD も他の
UNIX 系 OS と同様, 回線の接続およ
び切断の検出や回線の切断および回線切断後の
モデムの初期化にハードウェア シグナルを利用します. FreeBSD
は, モデムに対するコマンドの送信やモデ
ムの状態の監視を行いません. パソコンで運用されている BBS
への接続に慣 れている方にとっては,
ちょっとめんどうかもしれませんね.
シリアル インタフェースについて
FreeBSD では, NS8250-, NS16450-, NS16550- および
NS16550A- に基づ いた EIA RS-232C (CCITT V.24)
規格のシリアル インタフェースをサポート しています. 8250
および 16450 ベースのディバイスには1文字のキャラクタ
バッファが搭載されています. また, 16550 系のディバイスには,
16文字分 のバッファが搭載されていて,
はるかによいパフォーマンスを得られます. (ただし, 無印の
16550 では, バグがあって 16 文字バッファが利用できませ
んので, 可能であれば 16550A
系のディバイスを利用してください. ) 1文字 のバッファの物は,
16550 系のものと比べて OS にかける負荷が大きいので, 16550A
系ディバイスの利用を強く推奨します. 多数のシリアル
ポートを利 用する場合や, 負荷の高いシステムにおいては,
16550A 系ディバイスを使う ことで,
エラー発生率を低く押さえることができます.
概要
FreeBSD は以下の手順でモデムからのログインを受付ます.
init から起 動された
getty のプロセスが, 割り当てられたシリアル
ポート (この 例では /dev/ttyd0 )
がオープンされるのを辛抱強く待ちます. ps
ax コマンドを実行すると,
以下のような出力が得られるはずです.
4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
ユーザがモデムに電話をかけ, モデム同士が接続されると,
モデムの CD が検出されます. その結果,
kernel がキャリア信号を検出して, getty
によるポートのオープンの処理が終了します.
getty は, login:
プロンプトを指定されている初期回線速度で送信します.
getty は,
正常に文字列を受信できるかどうか監視し, 通常の設定では,
もし以上な文字列を検出した場合 (理由としては,
getty の速度とモデ
ムの接続速度が異なっているような場合が考えられます. ),
正常に文字列が 受信できるまで, getty
は速度を変え続けます.
getty が正しい速度を検出すれば,
ユーザに対して login: プロン
プトが表示されるはずです. ユーザがログイン名を入力すると,
getty は
/usr/bin/login を起動して,
パスワードの入力を要求し, その
後ユーザのシェルを起動します.
それでは, 続いて設定についての解説です.
kernel の設定
通常, FreeBSD の kernel は, PC-DOS の世界で
COM1: , COM2:
, COM3: および
COM4: と呼ばれる四つのシリアル ポートを
探す
ように設定されています. また, FreeBSD では, 現在のところ
Boca の 1008
や 2016 のような, 単純なマルチポートのシリアル
インタフェースもサポー
トしています. (マルチポートのシリアル ボードに関しての
kernel の設定
については, &man.sio.4; のマニュアルを参照してください. )
デフォルト
の kernel は, COM ポートだけを探します.
搭載されているシリアル ポートのいずれかを, kernel
が認識しているかどう か確認したい場合は, kernel
起動時のメッセージを注意深く見ているか, あ るいは
/sbin/dmesg コマンドを使って,
ブート時の出力メッセージ を確認してください. 特に,
sio で始まるメッセージをよく見てくださ い.
参考までに, 以下のコマンドで sio
という文字列を含むメッセージ
だけを表示することができます.
&prompt.root; /sbin/dmesg | grep 'sio'
たとえば, シリアル ポートを四つ持つシステムの場合は,
以下のようなシリ アル ポートに関するメッセージが kernel
によって表示されます.
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A
もし, kernel に正常に認識されないポートがある場合は,
おそらくカスタマ イズした kernel
を構築する必要があるでしょう.
kernel 構築と構築のための設定に関しては, BSD System
Manager's Manual の “Building Berkeley Kernels with
Config (config コマンドによる BSD kernel の構築) ”
[ソース ファイルは /usr/src/share/doc/smm
にあります]と “FreeBSD Configuration Options” [
/sys/conf/options および
/sys/arch /conf/options.arch
の arch
の部分をたとえば i386 としたファイル ]
を参照 してください.
kernel の設定と構築をするためには, kernel のソース
(FreeBSD 1.1 では srcdist/srcsys.?? ,
FreeBSD 1.1.5.1 では srcdist/sys.?? ,
またFreeBSD 2.0 では総てのソース)を展開
する必要があります.
まだ自分のシステムの kernel 用のコンフィギュレーション
ファイルを作っ ていない場合は,
/sys/i386/conf に cd
して作成してくださ い. 初めてコンフィギュレーション
ファイルを作る場合は, まず GENERICAH
(FreeBSD 1.x で BusTek の SCSI コントローラを使っている場合は
GENERICBT ) というファイルを,
YOURSYS にコピーしてください. ここ で,
YOURSYS はあなたのシステム名で,
大文字である必要があります. このファイルを編集して,
ディバイスに関する記述を変更します.
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr
device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr
システムに搭載されていないディバイスに関する記述は,
コメントアウトまた
は削除してしまってかまいません.
Boca の BB2016 のようなマルチポートの
シリアル ボードをお持ちの場合は, &man.sio.4;
のマニュアルを見て, マ
ルチポートのボードのためのコンフィギュレーション
ファイルの記述のし方
に関して確認してください. ディバイスのフラグの
指定方法がバージョンによっ
て異なりますので, 別のバージョンの FreeBSD
で利用していたコンフィギュ
レーション ファイルを流用する場合には
十分注意してください.
なお, port "IO_COM1" ,
IO_COM2 , IO_COM3
および IO_COM4 は,
それぞれのポートの一般的なアドレスである
0x3f8 , 0x2f8 ,
0x3e8 および 0x2e8
を表します. また, 割り込 み番号 4, 3, 5 と 9 は, それぞれ
COM1: から
COM4: のポー トで一般的に使用される
IRQ です. また, ISA バスのコンピュータの場合,
一般的なシリアルポートは複数のポートで一つの IRQ
を共有することが
できません ので注意が必要です.
(マルチポートのシリアル ボードの 場合は, 複数の 16550A
ベースのポートで一つまたは二つの IRQ を共有する
ための機構を備えています. )
コンフィギュレーション ファイルの編集が終わったら,
“Building Berkeley Kernels with Config (config
コマンドによる BSD kernel の構築)” および
&man.config.8; のマニュアルにしたがって,
config コマンド を使って kernel
構築のためのディレクトリを作成した後, kernel の構築,
インストールおよびテストを行ってください.
ディバイス スペシャル ファイル
kernel に組み込まれているほとんどのディバイスは,
/dev ディレ クトリにある,
“ディバイス スペシャル
ファイル”を介してアクセスされ ます.
sio ディバイスの場合は, 着信用の
/dev/ttyd?
およ び, 発信用の
/dev/cua0?
が利用されます. さらに, FreeBSD の 1.1.5 以降では,
初期化ディバイス
(/dev/ttyi? と
/dev/cuai0? )
およびロッキング ディバイス
(/dev/ttyld?
と
/dev/cual0? )
も合わせて利用されます. 初期化ディバイスは, 通信
ポートがオープンされる度に,
そのポートの初期設定を行うために使われます. たとえば,
CTS/RTS
によるフロー制御を行うモデムが接続されてい る場合の
crtscts
などのパラメータの初期化が行われます. ロッキング
ディバイスは, ポートの設定をロックし,
他のユーザやプログラムにこれらを
変更されることのないようにするために利用されます.
通信ポートの設定, 初 期化とロックおよび設定の変更に関しては,
それぞれ &man.termios.4;, &man.sio.4; と &man.stty.1;
のマニュアルをご覧ください.
ディバイス スペシャル ファイルの作成
ディバイス スペシャル ファイルの管理は, ディレクトリ
/dev
にあるシェル スクリプト MAKEDEV
によって行います. (FreeBSD
1.1.5 の &man.MAKEDEV.8; のマニュアルの COM
ポートに関する記述は,
かなりいい加減なので無視してください. )
MAKEDEV を使って,
COM1: (ポート 0)
をダイアルアップのポートとして利用するためのディ
バイス スペシャル ファイルを作るには,
/dev に cd して
から, MAKEDEV ttyd0 と実行してください.
同様に, MAKEDEV
ttyd1 とすることで, COM2:
(ポート 1) 用のディバイス スペシャル ファイル
を作成することができます.
MAKEDEV は,
/dev/ttyd?
のディバイス ファイルだけでなく,
/dev/cua0?
(および FreeBSD 1.1.5 以降では総ての初期化ディバイ
スとロッキング ディバイスのスペシャル ファイル)
も作成します. さらに, もしシリアル端末用のスペシャル
ファイル
/dev/tty0?
が存在すれ ば, それらの削除も行います.
ディバイス スペシャル ファイルの作成後,
これらのファイルのパーミション が適切に設定されていて,
これらのディバイスを利用してもよいユーザのみが
読み書きできるようになっていることを確認してください. (特に
/dev/cua*
のパーミションには注意を払ってください. ) この確認 を怠ると,
一般のユーザがあなたのモデムを使うことができるようなことにな
りかねません. デフォルトの /dev/cua*
のパーミションは, 以下の ようになっていて,
たいていの場合適切なものだと思います.
crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01
crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01
crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01
上の設定では, ユーザ uucp と,
グループ dialer に属するユーザ
が発信用のディバイスを利用できます.
設定ファイル
FreeBSD のシステムへのダイアル
アップによるアクセスを実現するために編
集が必要と思われる設定ファイルが, /etc
ディレクトリに三つあ ります. まず,
/etc/gettytab には,
/usr/libexec/getty
デーモンの設定を記述します. つぎに,
/etc/ttys に保存されている情報から,
/sbin/init はど の
tty ディバイスに対して
getty のプロセスを実行するべきか判
断します. 最後に, お使いの FreeBSD が 1.1.5.1 以降のものならば
/etc/rc.serial スクリプトに,
それ以前のものならば /etc/rc.local
スクリプトにシリアル ポートの初期化のためのコマ
ンドを記述することができます.
UNIX にダイアル アップ モデムを接続する方法には,
二つの考え方がありま す. 一つの方法は, ダイアル
インしてくるユーザの接続速度に関係なく, 常
にモデムとローカルのコンピュータの RS-232
インタフェースの接続速度を一 定に保つように設定する方法です.
この設定の長所は, ユーザがダイアル イ ンして接続されると,
即座にシステムからのログイン プロンプトが送信され
るということです. 短所は,
システムが実際のモデム間の速度を知ることがで きないために,
Emacs のようなフル スクリーンのプログラムが, 端末との接
続速度が遅い場合でも,
そのような場合に効果的な方法で画面出力を行わない
点です.
もう一つは, モデムの RS-232
インタフェースとコンピュータの接続速度を,
モデム間の接続速度に応じて変化させるような設定です. たとえば,
モデム間 の接続が V.32bis (14.4 Kbps) ならば,
モデムとコンピュータの間の接続を 19.2 Kbps とし,
モデム間の接続が 2400 bps の時には, モデムとコンピュー タ間も
2400 bps で接続するような設定をします. この場合,
getty は, モデムが返すリザルト
コードからモデムとコンピュータの接続速度を認識す
ることができませんので, getty は,
まず初期速度で login: とい
う文字列を送信して, それに対する応答の文字列を監視します.
ここで, ユー ザ側の端末に無意味な文字列が表示された場合,
ユーザは意味のある文字列を 受信するまで
<Enter>
キーを繰り返し押さなければならない
ということを知っていると仮定しています.
もし接続速度が間違っている場合, getty は,
ユーザから送られた文字を無意味な文字列として扱い, 次の
速度を試します. そして, ここで再度 login:
プロンプトを送信します.
この一連の動作が異常な回数繰り返されることも考えられますが,
普通は1度 か2度のキー入力があれば,
ユーザはまともなプロンプトを受信できます. こ
のログインの動作が前者の固定速度による方法に
比べて美しくないのは明らか ですが, この方法では,
低速度で接続しているユーザに対するフル スクリー
ンのプログラムからのレスポンスが改善されます.
このドキュメントでは, 両方の設定方法について解説しますが,
どちらかとい うとモデム間の速度に応じて RS-232
インタフェースの速度が変化するような
設定の方に偏った説明になってしまうと思います.
/etc/gettytab
/etc/gettytab は, &man.getty.8;
の設定ファイルで, &man.termcap.5;
と同様の形式で記述されます. ファイルのフォーマットや定
義できる機能についての詳細については, &man.gettytab.5;
のマニュアルを
ご覧ください.
固定速度の設定
モデムとコンピュータ間の通信速度を固定して使う場合,
おそらく /etc/gettytab
に特に変更を加える必要はないはずです.
可変速度の設定
getty
が利用するモデムとコンピュータの接続速度に関する情報を
/etc/gettytab
に記述する必要があります. もし, 2400 bps のモ
デムをお使いになるのであれば, 既存の
D2400 のエントリがそのまま利
用できるでしょう. このエントリは FreeBSD の 1.1.5.1 の
gettytab には既に含まれていますので,
あなたの FreeBSD のバージョンでこのエント
リが存在しているのであれば,
新たに追加する必要はありません.
#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
:nx=D2400:tc=300-baud:
高速モデムをお使いの場合は, おそらく
/etc/gettytab に新たなエ
ントリを追加する必要があります. 以下の例は, 14.4 Kbps
のモデムを, 最 大インタフェース速度を 19.2 Kbps
として利用するためのエントリです.
#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
:nx=V9600:tc=std.19200:
上記の例を利用した場合, FreeBSD 1.1.5
以降ではパリティなし, 8ビットの 接続が行われます. FreeBSD
1.1 では, :np: パラメータをファイルの
先頭の
std.xxx
のエントリに追加することで, パリティなし,
8ビットの接続が行われますが,
このパラメータを追加しなければ接続は偶数 パリティ,
7ビットになります.
上記の例では, まず 19.2 Kbps (V.32bis)
によるモデムとコンピュータ間の 接続を試み, 続いて 9600 bps
(V.32), 2400 bps, 1200 bps, 300 bpsと順に 試み, 再び 19.2
Kbps による接続を試みるという循環に入ります. この接続
速度の循環は, nx= (“next
table”) の機能で実現されています. ま た,
各行はそれぞれ tc= (“table
continuation”) の機能を使って,
その他の接続速度に依存した “標準的な”
設定を取り込んでいます.
もし, お使いのモデムが 28.8 Kbps であったり, 14.4 Kbps
の圧縮転送の機 能を有効に利用したい場合は, 19.2 Kbps
よりも速い速度を利用するように 設定する必要があります.
以下に 57.6 Kbps から接続を試みる
gettytab
の設定例を示しておきます.
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
:nx=VH9600:tc=std.57600:
もし, お使いの CPU が低速のものであったり, CPU
に対する負荷が高い場合 で, 16550A 系のシリアル
ポートをお使いでない場合, 57.6 Kbps の接続に おいて, sio
の “silo”
エラーが発生するかもしれません.
/etc/ttys
/etc/ttys には,
init が監視すべき tty
のリストを記
述します. さらに, /etc/ttys は,
login に対してセキュリ
ティに関する情報を提供します. (ユーザ
root は, secure とマー
クされている tty
のみからログインできます. ) 詳しくは
&man.ttys.5; のマニュアルをご覧ください.
/etc/ttys の既存の行を変更するか,
あるいは新しい行を追加して, init
が自動的に新しいダイアル アップ サービス用のポートに対して
getty
プロセスを起動するようにしてください. 書式は, 固定速度の設
定か可変速度の設定かに関わらず, 以下のとおりです.
ttyd0 "/usr/libexec/getty xxx" dialup on
1番目の項目は, このエントリで対象とするディバイス
スペシャル ファイル です. 上の例では
ttyd0 として,
/dev/ttyd0 を getty
に監視させることを表しています. 2番目の項目
"/usr/libexec/getty
xxx "
(xxx は初期段階で使われる
gettytab のエントリ
に置き換えてください. ) が, init
がこのディバイスに対して起動する プロセスです. 3番目の
dialup は, デフォルトのターミナル
タイプで す. 4番目の on は,
この行が有効であることを init に対して示
しています. 5番目の項目に secure
を指定することもできますが, これ は,
たとえばシステムのコンソールのように,
物理的に安全な端末に対しての
み指定するようにしてください.
デフォルトのターミナル タイプ (上記の例では
dialup ) は, ローカル
のユーザの好みによって異なってきます. ユーザがログイン
スクリプトをカ スタマイズして, ターミナル タイプが
dialup の時には自動的に他のター ミナル
タイプを設定できるように, ダイアル
アップのポートのデフォルトの ターミナル タイプには
dialup が伝統的に用いられています.
しかし, 筆者のサイトでは, ほとんどのユーザが VT102
エミュレイションを使ってい るので, ダイアル
アップのポートのデフォルト ターミナル タイプとして
vt102 を指定しています.
/etc/ttys の修正がすんだら,
以下のようなコマンドを使って
init プロセスに HUP
シグナルを送り, /etc/ttys を
読み込み直させてください.
&prompt.root; kill -1 1
ただ, もし初めてシステムを設定しているのであれば,
モデムが適切に設定さ
れて接続されるまでは, init
に対してシグナルを送らない方がいいか
もしれません.
固定速度の設定
速度を固定する設定では, /etc/ttys
の中で, getty に対し
て固定速度のエントリを指定する必要があります. たとえば,
以下の例はポー トのスピードが 19.2 Kbps
に固定されたモデムのための ttys
のエント リです.
ttyd0 "/usr/libexec/getty std.19200" dialup on
別の速度でモデムのポートのスピードを固定したい場合は,
/etc/gettytab
から適切なエントリを選んで, 上の例の
std.19200 の部分を
std.speed
として, 適切な速度のも のに置き換えてください.
可変速度の設定
可変速度の設定では, ttys
のエントリが, /etc/gettytab
の中の適切な “自動速度調整”
の初期設定のエントリを参照していなければな りません.
たとえば, もし前述の 19.2 Kbps
から接続を試みる可変速度の設 定例
(V19200 の
gettytab エントリ)をそのまま
ttys に追 加したのであれば,
ttys
エントリは以下のようになります.
ttyd0 "/usr/libexec/getty V19200" dialup on
/etc/rc.serial または
/etc/rc.local
V.32, V.32bis または V.34
モデムのような高速モデムを利用する場合, ハー ドウェア
(RTS/CTS )
フロー制御を行う必要があります. FreeBSD kernel のモデム
ポートにハードウェア フロー制御のフラグを設定するため の
stty コマンドを, FreeBSD 1.1.5.1 以降では
/etc/rc.serial に, FreeBSD 1.1 では
/etc/rc.local に 記述できます.
たとえば, FreeBSD 1.1.5.1 の
/etc/rc.serial のサンプルは以下
のとおりです.
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts
この例では, termio のフラグ
crtscts をシリアル ポート #1
(COM2: ) のダイアル
インおよびダイアル アウトの初期化ディバイスに
設定しています.
古い FreeBSD 1.1 では, 以下のエントリが
crtscts フラグを設定する ために
/etc/rc.local
に追加されていました.
# Set serial ports to use RTS/CTS flow control
stty -f /dev/ttyd0 crtscts
stty -f /dev/ttyd1 crtscts
stty -f /dev/ttyd2 crtscts
stty -f /dev/ttyd3 crtscts
FreeBSD 1.1 には初期化のためのディバイス スペシャル
ファイルがないので, ディバイス
ファイルそのものにフラグを設定して, その後はフラグをクリア
してしまうような極悪人が現れないことを願うしかありません.
モデムの設定
もし, あなたのモデムがパラメータを不揮発ラムに
保存できるタイプならば, PC-DOS 上の Telix や FreeBSD 上の
tip などのような通信プログラム を使って,
パラメータを設定してください. getty
が利用する初期速度でモデムに接続して, 以下の条件を満たすよ
うに不揮発ラムの設定を変更してください.
接続時に CD 信号がオンになる
接続時に DTR がオンになり,
DTR オフで回線を切断しモ
デムをリセットする.
送信時フロー制御には CTS を利用.
XON/XOFF
によるフロー制御を行わない.
受信時のフロー制御は RTS を使用.
Quiet mode (リザルト コードを返さない)
コマンド エコーを返さない.
これらを実現するためのコマンドやディップ
スイッチの設定に関しては, モ
デムのマニュアルを参照してください.
以下に, USRobotics Sportster の 14,400 bps
の外づけモデムの設定例を示 しておきます.
ATZ
AT&C1&D2&H1&I0&R2&W
ことのついでに, たとえば, V42.bis や MNP5
のデータ圧縮を使用するかど
うかなどのモデムの他の設定について確認,
調整しておくのもよいかもしれま せん.
さらに, USRobotics Sportster の 14,400 bps
の外づけモデムでは, 以下の ようなディップ
スイッチの設定も必要です. 他のモデムをお使いの方も, 以
下の例を設定の参考にしてください.
スイッチ1: UP — DTR 標準
スイッチ2: 無視 (リザルト
コードを単語形式にするか数値形式にす るか)
スイッチ3: UP — リザルト コードを返さない
スイッチ4: DOWN — コマンド エコーを返さない
スイッチ5: UP — 自動着信
スイッチ6: UP — CD 標準
スイッチ7: UP —
不揮発ラムからデフォルト値をロードする
スイッチ8: 無視 (Smart Mode/Dumb Mode)
リザルト コードを返さないように設定しておかないと,
getty が誤っ て login:
プロンプトをコマンド モードのモデムに送信してしまった場 合に,
モデムがこの入力をエコーしたり, この入力に対するリザルト
コード を返してしまったりすることになります. この結果として,
モデムと getty
の間で延々と無意味なやりとりが続いたというケースを聞いたこ
とがあります.
固定速度の設定
固定速度の設定では,
モデムとコンピュータ間の通信速度をモデムとモデム間
の接続速度に関係なく, 常に一定に保つように,
モデムを設定する必要があり ます. USRobotics Sportster の
14,400 bps 外づけモデムの場合, 以下のコ マンドで,
モデムとコンピュータ間の速度が, コマンド送信時の速度に固定さ
れます.
ATZ
AT&B1&W
可変速度の設定
可変速度の設定では, シリアル ポートの速度が,
着信速度に応じて変化する ように設定しなければいけません.
USRobotics Sporster の 14,400 bps 外 づけモデムの場合,
以下のコマンドで, エラー訂正機能を利用した通信の場合 は,
コマンドを送信した時の通信速度にシリアル
ポートの速度を固定し, エ ラー訂正機能を利用しない接続では,
シリアル ポートの速度が変化するよう に設定されます.
ATZ
AT&B2&W
モデムの設定の確認
ほとんどの高速モデムには,
現在の設定をある程度人間にも理解できる形式に
して表示させるコマンドがあります. USRobotics Sporster の
14,400 bps 外づけモデムの場合は, ATI5
コマンドで, 現在の不揮発ラムの設定を 表示することができます.
さらに, ディップ スイッチの設定も含めた現在の
設定を確認するためには, ATZ
コマンドを送信してから, ATI4
コマンドを送信してください.
他のメーカーのモデムをお使いの場合は,
モデムのマニュアルで設定値の確認
方法を確認してください.
トラブルシューティング
以下の手順でダイアル アップ
モデムの動作を確認することができます.
FreeBSD システムの動作確認
モデムを FreeBSD システムに接続し,
システムをブートします. あなたのモ
デムにモデムの状態を確認するためのインジケータがあれば,
DTR のイ
ンジケータの状態に注目してください. もし,
システムのコンソールに login:
プロンプトが表示された時に, DTR
のインジケータが点灯 すれば, FreeBSD が適切なポートに対して
getty を起動し, モデムへ
の着信を待っている状態であることを意味しています.
もし DTR
のインジケータが点灯しない場合は, システムのコンソールか ら
FreeBSD にログインして, ps ax を実行し,
FreeBSD が 適切なポー トに対してgetty
プロセスを起動しようとしているのかどうか確認して ください.
プロセスに関する情報の中に, 以下のような行が表示されるはずで
す.
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
モデムにまだ着信がない状態の時に,
以下のように上とは異なる出力があった
場合, getty は既にモデム
ポートのオープンを終了したということに
なります.
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
getty は, CD
(carrier detect) 信号がオンの状態になるまで,
ポートのオープンを完了することはできませんので,
この場合は接続に問題が
あるか, あるいはモデムの設定に問題があることが考えられます.
もし, 適切なポートをオープンしようとしている
getty が見あたらない 場合は, 再度
/etc/ttys の内容を確認し,
書式などに誤りがないか 調べてみてください. また, ログ
ファイル /var/log/messages に
init および getty
から何か出力がないかどうかも確認してみてく ださい.
もし何かメッセージが記録されていたら, 再度
/etc/ttys ,
/etc/gettytab の二つの設定ファイルと,
ディバイス スペシャル
ファイル /dev/ttyd? を確認し,
記述に誤りがないか, 足りないエ ントリがないか,
足りないディバイス スペシャルファイルがないかといった
点について調べてみてください.
モデムで接続してみる
実際にモデムを使って別のコンピュータから
接続してみてください. この時, 8ビット, パリティなし,
1ストップ ビットで接続するようにしてください.
接続後すぐにプロンプトが返ってこない場合や,
無意味な文字列が表示される 場合は, 1秒に1回くらいの割合で
<Enter> キーを押してみて ください.
しばらくたって, なおも login:
プロンプトが現れない場合 は, BREAK
信号を送信してみてください. この時, 端末側で使って
いるモデムが高速モデムならば,
このモデムのインタフェースの接続速度を固 定してから,
再度ダイアル インしてみてください. (たとえば, USRobotics
Sportster の場合は, AT&B1 )
それでもまだ login:
プロンプトが表示されない場合は,
/etc/gettytab
の以下の点について再度確認してみてください.
/etc/ttys の対応する行の
2番目の項目で, /etc/gettytab
の中で定義されているエントリが指定されているか
各 nx= で
/etc/gettytab
の中で定義されているもの が指定されているか
各 tc= で
/etc/gettytab
の中で定義されているもの が指定されているか
もしダイアル インしても, FreeBSD
システム側のモデムが応答しない場合は, FreeBSD 側のモデムが
DTR
がオンになった時に電話にでるように設定さ
れているかを確認してください.
もしモデムの設定に問題がなさそうならば,
モデムのインジケータ (がもしあれば) で,
DTR がオンになっているか
を確認してください.
この確認のステップを数回繰り返しても
うまくいかない場合は, 一度休憩して,
しばらくたってから挑戦してみましょう. それでもだめなら,
おそらく &a.questions;
にあなたのモデムについての情報と問題を書いたメールを送れ ば,
メーリング
リストのメンバーが問題の解決を助けるべく努力してくれる
でしょう.
謝辞
以下の方々から,
多くのコメントやアドバイスをいただきました. ここに謝意
を表します.
Sean Kelly
<kelly@fsl.noaa.gov> 多くのすばらしい助言をいた
だきました
ダイアルアウトサービス
原作: FAQ からの情報
訳: &a.jp.tmaruya;.
31 December 1996.
以下はモデムを利用して他のコンピュータと
接続する方法を説明しています.
これはリモートホストとターミナル接続を確立するための
適切な方法です.
これは BBS に接続するときによく使います.
この種の接続は PPP 接続に問題がある場合, Internet
上にあるファイルを 転送するのに非常に役に立ちます. FTP
で何らかのファイルを転送したいのに PPP
接続を確立できない場合は, ファイルを FTP
転送するためにターミナルセッション を利用します. そして ZMODEM
を利用してファイルを転送します.
tip や cu
が実行できないはなぜ?
あなたのシステムで tip や
cu というプログラムは
uucp や dialer
というグループに所属しているユーザのみが
実行できるようになっているのでしょう. リモートホストやモデムを
利用できる dialer
のグループにあなたのアカウントを 加えましょう.
もしくは下記のコマンドを使うことによって, そのシステムで
tip や cu
を誰でも使えるようになります:
&prompt.root; chmod 4511 /usr/bin/tip
このコマンドは cu
に対しておこなう必要はありません, それは
cu は tip
に対するハードリンクだからです.
私の Hayes モデムはサポートされていません,
どうしよう?
実際, tip の
マニュアルページは古くなっています. 既に Hayes
ダイアラが組み込まれています. /etc/remote
ファイル中で at=hayes
を使ってください.
Hayes ドライバは, 最近のモデムの新しい機能である
BUSY , NO DIALTONE ,
CONNECT 115200 などのメッセージを
認識できるほど賢くはなく, 単に混乱を起こすだけです.
tip を使う場合には,
(ATX0&W とするなどして) これらの
メッセージを表示させないようにしなくてはいけません.
また, tip のダイアルのタイムアウトは
60秒です. モデムの タイムアウト設定はそれより短くすべきであり,
そうしないと tip
は通信に問題があると判断するでしょう.
ATS7=45&W を実行してください.
実際, デフォルトの tip は Hayes
の完全なサポートを しているわけではありません. 解決方法は
/usr/src/usr.bin/tip/tip の下の
tipconf.h を変更することです.
もちろんこれにはソース配布ファイルが必要です.
#define HAYES 0 と記述されている行を
#define HAYES 1 と変更し, そして
make , make install
を実行します. これでうまく動作するでしょう.
これらの AT コマンドを入力するには?
/etc/remote ファイルの中で
“direct” エントリを作ります. たとえばモデムが
1番目のシリアルポートである /dev/cuaa0
に接続されている場合, 次のようにします:
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
モデムがサポートする最大の bps レートを br
フィールドに使います. そして tip cuaa0
を実行すると, モデムが利用できるようになります.
/dev/cuaa0
がシステムに存在しない場合は, 次のようにします:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV cuaa0
または root になって以下のように cu
コマンドを実行します:
&prompt.root; cu -lline -sspeed
line
にはシリアルポートを指定します (例えば
/dev/cuaa0 ). そして
speed には接続する速度を指定します
(例えば 57600 ). その後 AT
コマンドを実行したら, ~.
と入力すれば終了します.
pn 機能の @ 記号が使えません!
電話番号 (pn) 機能の中での @ 記号は,
tip に /etc/phone
にある電話番号を参照するように伝えます. しかし
@ の文字は /etc/remote
のような 設定ファイルの中では特殊文字となります.
バックスラッシュを使ってエスケープをおこないます:
pn=\@
コマンドラインから電話番号を指定するには?
“generic” エントリと呼ばれるものを
/etc/remote に追加します.
例えば次のようにします:
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
そして
&prompt.root; tip -115200 5551234
のように利用できます.
tip より cu を使いたい場合,
cu の generic エントリを使います:
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
そして
&prompt.root; cu 5551234 -s 115200
と実行します.
毎回 bps レートを入力しなければいけませんか?
tip1200 や cu1200
用のエントリを記述し, 適切な通信速度を br
フィールドに設定します. tip は 1200 bps
が正しいデフォルト値であるとみなすので,
tip1200 エントリを参照します. もちろん 1200
bps を使わなければならないわけではありません.
ターミナルサーバを経由して
複数のホストへアクセスしたいんです.
毎回接続されるのを待って
CONNECT <host> と入力する
かわりに, tip の cm 機能を使います.
例えば, /etc/remote
に次のようなエントリを追加します:
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
これで, tip pain や
tip muffin と実行すると
pain や muffin のホストに接続することができ,
tip deep13
を実行するとターミナルサーバに接続します.
tip を使ってそれぞれのサイトの
複数の回線に接続できますか?
これは大学に電話回線がいくつかあって
数千人の学生が接続しようとする 場合によくある問題です.
あなたの大学のエントリを /etc/remote
ファイルに作成して, pn のフィールドには
@ を使います:
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
そして /etc/phone
ファイルに大学の電話番号の一覧を書きます:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
tip は一連の電話番号を試みて,
最終的に接続できなければあきらめます.
リトライを続けさせたい場合は, tip を while
ループに入れて 実行します.
CTRL+P を 1回送るために 2度押す必要があるのはなぜ?
CTRL+P は通常 “force (強制)” 文字であり,
tip に次の文字が
リテラルデータであることを伝えます. force
文字は“変数の設定” を意味する
~s
エスケープによって他の文字にすることができます.
~sforce=single-char
と入力して改行します. single-char
は, 任意の 1バイト文字です.
single-char を省略すると NUL
文字になり, これは CTRL+2 や CTRL+SPACE
を押しても入力できます.
いくつかのターミナルサーバで使われているのを 見ただけですが,
single-char に SHIFT+CTRL+6
に割り当てるのもよいでしょう.
$HOME/.tiprc
に次のように定義することで, 任意の文字を force
文字として利用できます:
force=<single-char>
打ち込んだ文字が突然すべて大文字になりました??
CTRL+A を押してしまい, caps-lock
キーが壊れている場合のために設計された tip
の “raise character” モードに入ったのでしょう.
既に述べたように ~s を使って,
raisechar をより適切な値に
変更してください. もしこれら両方の機能を使用しないのであれば,
force 文字と同じ設定にすることもできます.
以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs
ユーザにうってつけの. tiprc ファイルのサンプルです:
force=^^
raisechar=^^
^^ は SHIFT+CTRL+6 です.
tip でファイルを転送するには?
もし他の UNIX のシステムと接続しているなら,
~p (put) や ~t (take)
でファイルの送受信ができます. これらのコマンドは
相手のシステムの上で cat や
echo を実行することで 送受信をします.
書式は以下のようになります:
~p
ローカルのファイル名
リモートのファイル名
~t
リモートのファイル名
ローカルのファイル名
この方法ではエラーチェックをおこないませんので, zmodem
などの他のプロトコルを使った方がよいでしょう.
tip から zmodem を実行するには?
ファイルを受信するには,
リモート側で送信プログラムを起動します. そして ~C
rz と入力すると, ローカル側へのファイルの受信が
始まります.
ファイルを送信するには,
リモート側で受信プログラムを起動します. そして ~C sz
files と入力すると,
リモート側への ファイルの送信が始まります.
-
-
+
+
シリアルコンソールの設定
- &a.yokota; と &a.wpaul:
+ 原作: &a.yokota;, &a.wpaul;
この文書はほとんどが &a.wpaul; 氏の
/sys/i386/boot/biosboot/README.serial
に基づいています.
導入
FreeBSD/i386 オペレーティングシステムは, コンソールとして
シリアルポート上のダム端末しか持たないシステムでも起動できます.
この様な構成はきっと次のような二種類の人達に便利でしょう. それは,
キーボードやモニタのない専用のファイル/演算/端末サーバに
FreeBSD をインストールしたいシステム管理者と,
カーネルやデバイスドライバをデバッグしたい開発者です.
バージョン 3.1 から, FreeBSD/i386 は 3 ステージ構成ののブートストラップ
を用いるようになりました. 最初の 2 つのステージは,
ブートディスクにある FreeBSD スライスの最初に格納されている,
ブートブロックのコードが行います.
それからブートブロックは, 第 3 ステージのコードとしてブートローダ
(/boot/loader ) を読み込み, 実行します.
(ブートプロセスの詳細については &man.boot.8; と &man.loader.8;
をご覧下さい.)
シリアルコンソールを設定するためには, ブートブロックコード,
ブートローダコード, カーネルを設定する必要があります.
FreeBSD バージョン 3.0 では, ブートローダはないので
ブートストラップは 2 ステージです. つまり, ブートブロックが直接
カーネルをメモリに読み込みます. もしあなたが FreeBSD 3.0 を使って
いるなら, このセクションでブートローダについて述べている部分は無視してください.
それでもシリアルポートをコンソールとして使うのに支障はありません.
FreeBSD バージョン 2.X と 3.X のシリアルポートドライバ
&man.sio.4 は全く違いますので, 設定も異なった方法で行う必要があります.
この章ではバージョン 2.X システム用の設定については扱っていません.
もしあなたが古いバージョンの FreeBSD を使っているなら, かわりに
/sys/i386/boot/biosboot/README.serial
を調べてみてください.
シリアルコンソールを設定するための 6 ステップ
シリアルケーブルを用意してください.
ヌルモデムケーブル,
もしくは標準シリアルケーブルとヌルモデムアダプタが必要となります.
シリアルケーブルについては をご覧下さい.
キーボードをはずして下さい.
たいていの PC システムは Power-On Self-Test (POST)
の間にキーボードを検出し, もし見つからなければエラーと
なります. また, キーボードがないことを大きな音で知らせ,
キーボードが接続されるまでは起動を中断するようなマシンもあります.
コンピュータがエラーを表示していても,
とにかく起動するなら特別な対応は必要ありません.
(私の手元にある Phoneix BIOS を搭載しているマシンは,
単に Keyboard failed とだけ
表示した後, 起動は正常に行なわれます.)
あなたのコンピュータがキーボードを接続していない状態で
起動しないようなら, (もし可能ならば) エラーを無視するように
BIOS を設定する必要があります. 設定方法の詳細については,
マザーボードのマニュアルを調べてください.
BIOS の設定でキーボードを “Not installed”
にするということは, キーボードを使えないということを
意味しているわけではありません . これは, BIOS
がキーボードがなくても文句を言わないように, 電源投入時には
キーボードを探すな, と指示するだけです. このフラグを
“Not installed” にしていてもキーボードを
接続したままにできますし, ちゃんと動作します.
あなたのシステムが PS/2 マウスを使っているなら,
おそらくマウスもキーボード同様にはずす必要があるでしょう.
というのは, PS/2 マウスは部分的にキーボードとハードウェアを
共有しており, マウスを接続したままにしていると,
キーボードも存在する, と誤って検出してしまう可能性があるからです.
AMI BIOS を持つ Gateway 2000 ペンティアム 90Mhz システム
はこれに該当すると言われています.
一般的にこれは問題ではありません. なぜなら, どっちにしても
マウスはキーボードなしではたいして役に立たないからです.
COM1: (sio0 )
にダム端末を接続してください.
ダム端末がなければ, かわりに古い PC/XT でモデム
プログラムを走らせて使ったり, シリアルボートに他の UNIX
マシンを繋いだりできます. もしも COM1:
(sio0 ) がなければ, 作成してください.
今のところ, COM1: 以外のポートを
選択するためにはブートブロックの再コンパイルが必要です.
すでに COM1: を他の装置に
使っていた場合は, 一時的にその装置をはずして
いったん FreeBSD がうまく動作してから,
新しいブートブロックとカーネルをインストールしてください.
(上記はとにかくファイル/演算/端末サーバの
COM1: が利用可能であると仮定して
います. あなたが本当に何かのために
COM1: が必要 (で, なおかつその何かを
COM2: (sio1 )
に付け替えることができない) ならば, 多分, そもそも
悩んでる場合ではありません.)
カーネルコンフィグファイルの COM1:
(sio0 ) に適切なフラグを
設定していることを確認してください.
関連するフラグ:
0x10
このポートのコンソールサポートを有効にします.
このフラグが設定されない場合, 他のフラグは無視されます.
現在のところ, 一つのポートしかコンソールサポートを有効に
できません. (config ファイルに書かれた順番で) 最初にこのフラグを
指定されたポートが選択されます.
なお, このオプションを指定するだけでシリアルポートが
コンソールとして使えるわけではありません.
このフラグと一緒に, 以下のフラグも指定するかもしくは
-h オプションも使ってください.
0x20
後述される -h オプション
を無視して, (他に優先度の高いコンソールがない限り)
このポートをコンソールとして指定します.
このフラグは FreeBSD バージョン 2.X の
COMCONSOLE オプションに対応するものです.
フラグ 0x20 は必ず
フラグ 0x10 と一緒に指定されなければなりません.
0x40
(0x10 と組み合わせることで)
このポートを予約し, 通常のアクセスができない
ようにします.
このフラグは, シリアルコンソールとして使いたいポートに
指定すべきではありません.
唯一の使い道は, ユニットがカーネルのリモートデバッグ用
であることを指定することです.
リモートデバッグの詳細については
を参照してください.
FreeBSD 4.0-CURRENT 以降では,
フラグ 0x40 の意味が若干異なり,
シリアルポートにリモートデバッグを指定するためには,
別のフラグを使います.
例:
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4
詳細については &man.sio.4; を参照して下さい.
もしこれらのフラグがセットされていなければ, (別のコンソールで)
UserConfig を実行するか,
カーネルを再コンパイルする必要があります.
ブートドライブの a パーティションの
ルートディレクトリに boot.config
を作成してください.
このファイルは, ブートブロックコードに対してどのように
システムを起動したいかを教えます.
シリアルコンソールを活かすためには, 以下のオプションを幾つか
dash; 複数の場合も一行で, 設定する必要があります:
-h
内蔵コンソールとシリアルコンソールの切替えを行います.
これを使用してコンソールデバイスを変更できます.
例えば, 内蔵 (ビデオ) コンソールからブートした場合,
カーネルとブートローダがコンソールデバイスとして
シリアルポートを使用するようにするため,
-h を使って指示できます.
反対に, シリアルポートからブートした場合,
ブートローダとカーネルがコンソールとして代わりに
ビデオディスプレイを使用するようにするため,
-h を使用できます.
-D
シングルとデュアルのコンソール設定を切り替えます.
シングル設定では, 上記の -h
オプションの状態によって,コンソールは内蔵コンソール
(ビデオディスプレイ)かシリアルポートのいずれかになります.
デュアルコンソール設定では, ビデオディスプレイと
シリアルポートの両方が, -h
オプションの状態によらず, 同時にコンソールになります.
しかし, デュアルコンソール設定は, ブートブロックが
実行されている間でしか効果を持ちません.
一旦ブートローダに制御が移ると, -h
オプションによって指定されたコンソールが
唯一のコンソールになります.
-P
ブートブロックがキーボードを検出するようにします.
キーボードが発見できなかった場合には,
-D と -h
オプションが自動的にセットされます.
現バージョンのブートブロックでは容量の制限により,
-P オプションは拡張キーボードしか
検出できません. キーが 101 個より少ない (そして F11
と F12 がない) キーボードは検出されない可能性があります.
この制限から, いくつかのラップトップコンピュータの
キーボードは正しく検出されないでしょう.
残念ながら, この問題の回避策はありません.
-P オプションを使ってコンソールを
自動的に選ぶか, -h オプションを使って
シリアルコンソールを有効にしてください.
さらに &man.boot.8; で説明されている他のオプションも使う
ことができます.
-P 以外のオプションはブートローダ
(/boot/loader ) に渡されます.
ブートローダは, -h オプションだけの状態を
調べることで内蔵ビデオとシリアルポートのどちらがコンソールに
なるのか決めます.
つまり, /boot.config の中で
-D オプションを指定して
-h オプションを指定しなかった場合,
ブートブロック実行中でのみシリアルポートをコンソールとして
使うことができます. ブートローダは内蔵ビデオディスプレイを
コンソールとして使います.
マシンを起動する.
FreeBSD を起動したとき, ブートブロックは
/boot.config の内容をコンソールに表示
します. 例えば,
/boot.config: -P
Keyboard: no
行の二番目は,
/boot.config にオプション
-P が指定してあるときだけ表示され,
キーボードが存在するかどうかを表します.
これらのメッセージは, シリアルか内蔵のいずれか,
あるいはその両方のコンソールに表示されます.
どちらに表示されるかは,
/boot.config の設定によって変わります.
オプション指定
メッセージの表示される場所
なし
内蔵
-h
シリアル
-D
シリアルと内蔵の両方
-Dh
シリアルと内蔵の両方
-P , キーボードが存在する場合
内蔵
-P , キーボードが存在しない場合
シリアル
このメッセージが表示された後,
ブートブロックがブートローダのロードを再開し,
他の全てのメッセージがコンソールに表示されるまで,
若干時間がかかります. 通常の環境では, ブートブロックに
割り込みをかける必要はありませんが,
ちゃんとセットアップされているかどうか確かめるために,
割り込みをかけることができるようになっています.
ブートプロセスに割り込みをかけるには,
コンソールの(Enter/Return キー以外の)キーをたたいて下さい.
ブートブロックはその時, 操作を指定するためのプロンプトを表示します.
こんな風に表示されるでしょう.
>> FreeBSD/i386 BOOT
Default: 0:wd(0,a)/boot/loader
boot:
上に示したメッセージが, シリアルか内蔵,
あるいはその両方といった, /boot.config
で指定したとおりのコンソールに表示されることを確認して下さい.
メッセージが正しいコンソールに表示されたら, Enter/Return
キーを押してブートプロセスを継続してください.
もし, シリアルコンソールを利用するように設定しているのに
シリアル端末にプロンプトが出てこない場合は,
設定のどこかに間違いがあります.
ブートブロック(とブートローダ, カーネル)に対して
シリアルポートをコンソールに使うことを伝えるため,
割り込みをかけた時に -h を入力し,
(可能ならば) Enter/Return キーを押して下さい. そして,
一度システムを起動させてから, どこが悪いのかをチェックして下さい.
ブートローダがロードされ, ブートプロセスの第三ステージに
いる時には, まだ内蔵コンソールとシリアルコンソールを切り替えることができます.
それにはブートローダの環境変数を適切に設定すれは良いのですが,
詳細については を参照してください.
まとめ
このセクションで扱ったさまざまな設定と,
最終的に選択されるコンソールに関するまとめです.
Case 1: sio0 の flags に 0x10 をセットした場合
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4
/boot.config 内のオプション
ブートブロック実行中のコンソール
ブートローダ実行中のコンソール
カーネルのコンソール
なし
内蔵
内蔵
内蔵
-h
シリアル
シリアル
シリアル
-D
内蔵, シリアルの両方
内蔵
内蔵
-Dh
内蔵, シリアルの両方
シリアル
シリアル
-P , キーボードが存在する場合
内蔵
内蔵
内蔵
-P , キーボードが存在しない場合
内蔵, シリアルの両方
シリアル
シリアル
Case 2: sio0 の flags に 0x30 をセットした場合
device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4
/boot.config 内のオプション
ブートブロック実行中のコンソール
ブートローダ実行中のコンソール
カーネルのコンソール
なし
内蔵
内蔵
シリアル
-h
シリアル
シリアル
シリアル
-D
内蔵, シリアルの両方
内蔵
シリアル
-Dh
内蔵, シリアルの両方
シリアル
シリアル
-P , キーボートが存在する場合
内蔵
内蔵
シリアル
-P , キーボードが存在しない場合
内蔵, シリアルの両方
シリアル
シリアル
シリアルコンソールを利用する上で役に立つ情報
シリアルポートの通信速度をもっと速いものに設定するには
デフォルトのシリアルポート通信速度は, 9600 ボー,
8 ビット, パリティなし, ストップビット 1 です.
通信速度を変更したい場合には, 少なくとも
ブートブロックの再コンパイルが必要になります.
/etc/make.conf に次のような行を追加して,
新しくブートブロックをコンパイルして下さい.
BOOT_COMCONSOLE_SPEED=19200
もし, シリアルコンソールがブート時の -h
オプション以外の方法で設定されていたり,
カーネルが利用するシリアルコンソールが
ブートブロック実行中のものと異なる場合には,
カーネルコンフィグレーションファイルに次のオプションを追加して,
新しくカーネルをコンパイルしなければなりません.
options CONSPEED=19200
sio0 以外のシリアルポートを
コンソールとして使うには
sio0
以外のポートをコンソールとして使うには, 再コンパイルが必要です.
それがどんな理由であれ, 他のポートを使用する場合には
ブートブロック, ブートローダ, カーネルを
次のようにして再コンパイルして下さい.
カーネルソースを取得する.
/etc/make.conf を編集し,
BOOT_COMCONSOLE_PORT に
使用したいポートのアドレス(0x3F8, 0x2F8, 0x3E8 or 0x2E8)を
設定してください. 使用可能なのは
sio0 から
sio3 (COM1:
から COM4: ) までで,
マルチポートシリアルカードは使えません.
また, ここで割り込みの設定をする必要はありません.
設定を変更するために新たなカーネルコンフィグレーションファイルを作成し,
使いたいシリアルポートのフラグを適切に設定します.
例えば, sio1
(COM2: ) をコンソールにしたければ,
device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3
または,
device sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3
とします. その際,
他のシリアルポートにコンソールフラグをつけてはいけません.
ブートブロックを再コンパイルし, インストールする.
&prompt.root; cd /sys/boot/i386/boot2
&prompt.root; make
&prompt.root; make install
ブートローダを再コンパイルし, インストールする.
&prompt.root; cd /sys/boot/i386/loader
&prompt.root; make
&prompt.root; make install
カーネルを再構築し, インストールする.
&man.disklabel.8;
を使ってブートブロックをブートディスクに書き込み,
新しいカーネルから起動する.
シリアルポートから DDB デバッガを起動するには
シリアルコンソールからカーネルデバッガを起動したい(これは
リモートで診断する際に便利ですが, もしおかしな BREAK
信号がシリアルポートに送られるような場合には危険です!)
場合には, 次のオプションを使ってカーネルをコンパイルして下さい.
options BREAK_TO_DEBUGGER
options DDB
シリアルコンソールにログインプロンプトを表示させるには
シリアルコンソールからブートメッセージを確認したり,
シリアルコンソールを経由してカーネルデバッグセッションに入ることが
できるので, これは必要がないかもしれませんが,
login プロンプトをシリアルポートに
出力するように設定することもできます.
これには, 次のようにします.
エディタで /etc/ttys というファイルを開き,
次に示す行に移動して下さい.
ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure
ttyd0 から
ttyd3 は,
COM1 から
COM4 に対応しています.
設定したいポートの off を
on に変更して下さい.
また, もしシリアルポートの通信速度を変更しているなら,
std.9600 が実際の通信速度になるように,
例えば std.19200 のように変更して下さい.
さらに, 実際のシリアル端末に合わせて,
端末タイプを unknown から変更することも可能です.
ファイルの編集が終了したら,
変更を有効化するために kill -HUP 1
を実行しなければなりません.
ブートローダからコンソールを変更するには
前セクションは, ブートブロックの設定を変更することでシリアルコンソールを
セットアップする方法について解説していました.
このセクションでは, ブートローダへのコマンド入力と環境変数設定で
コンソールの指定を行なう方法を紹介します.
ブートローダがブートブロックの後,
ブートプロセスの第三ステージとして呼び出されたとき,
ブートローダの設定には, ブートブロックの設定がそのまま使われます.
シリアルコンソールをセットアップする
ブートローダとカーネルに対して
シリアルコンソールを使用するように設定するには,
単に /boot/loader.rc
のファイルに, 次のような一行を書くだけで実現できます.
set console=comconsole
これは, 前セクションで扱ったブートブロックの設定に
全く関係なく機能します.
上に示した行は,
/boot/loader.rc
の最初の行に書き込まなくてはいけません.
これはできるだけ早く, ブートメッセージをシリアルコンソールに
出力させるために必要なことです.
同様にして, 次のように内蔵コンソールを指定することもできます.
set console=vidconsole
もし, ブートローダの環境変数
console が設定されていない場合,
ブートローダ, そしてその次に起動するカーネルは
ブートブロックで指定された -h オプションに
示されたコンソールを使用します.
3.2 以降のバージョンにおいては
/boot/loader.rc ではなく,
/boot/loader.conf.local や
/boot/loader.conf
にコンソール指定を書き込みます.
その場合,
/boot/loader.rc
は次のようになっていなければなりません.
include /boot/loader.4th
start
それから, /boot/loader.conf.local
を作成して, 次の行をそこに追加して下さい.
console=comconsole
か, もしくは
console=vidconsole
です. 詳細については, &man.loader.conf.5; を参照して下さい.
その際, ブートローダはオプション指定なし
(ブートブロックに -P オプションが指定されたのと等価)になり,
キーボードの存在を調べて
内蔵コンソールとシリアルコンソールを自動的に選択する機能は働きません.
sio0 以外のシリアルポートを
コンソールとして使うには
sio0 以外のシリアルポートを
コンソールとして使うには, ブートローダを再コンパイルする必要があります.
それには,
に書かれている説明にしたがって下さい.
注意
シリアルコンソールというアイデアは,
グラフィック出力用のハードウェアやキーボードが接続されていない
専用サーバのセットアップを可能にするためのものです.
(ほとんど?)全てのシステムはキーボードなしで起動できますが,
不幸にも,グラフィックアダプタなしでは起動できないシステムはたくさんあります.
AMI BIOS を採用しているマシンでは, CMOS 設定の
`graphics adapter' を `Not Installed'
にするだけで,
グラフィックアダプタがなくとも起動できるように設定することができます.
しかしながら, 多くのマシンはこのようなオプションを持っていませんし,
ディスプレイハードウェアがシステムに存在しないと起動しないように
なっています. そのようなマシンでは,
モニタを接続する必要がなかったとしても,
適当なグラフィックカード(モノクロのジャンク品でも構いません)を
挿入したままにしておく必要があるでしょう.
また, AMI BIOS をインストールする, という手もあります.