The Linux Printing HOWTO Grant Taylor Version 3.30, 1999/11/19 06:00:35 Japanese FAQ Project v3.30j1, 10 December 1999 この Linux Printing HOWTO は、Linux (およびその他一般的なUNIX) で文書 などを生成・プレビュー・印刷・ FAX する方法についての情報を集めたもの です。 ______________________________________________________________________ 目次 1. はじめに 1.1 History 1.2 Copyright 2. どのように印刷するのか 3. カーネルのプリンタデバイス 3.1 lp デバイス (2.1.32 以前) 3.2 parport デバイス (kernel 2.1.33 以降) 3.3 シリアルデバイス 4. サポートされているプリンタ 4.1 PostScript 4.2 非 PostScript 4.3 どのプリンタが動くの? 4.3.1 プリンタの互換性リスト 4.4 プリンタの買い方 5. どのスプールソフトウェアを使う? 6. どのように動作するのか、基本 7. どうやって設定するのか、基本 7.1 伝統的な lpd の設定方法 7.2 ファイルの許可制限 8. 印刷ソフトウェアを入手する 9. ベンダ(配布パッケージ)ごとの解決方法 9.1 Red Hat 9.2 Debian 9.3 その他のディストリビューション 10. Ghostscript. 10.1 Ghostscript を起動する 10.2 Ghostscript の出力を調整する 10.2.1 出力の位置とサイズ 10.2.2 ガンマ、ドットサイズ、その他 11. ネットワーク越しのプリンタへの印刷方法 11.1 Unix/lpd のホストに対して 11.1.1 lpd を使って 11.1.2 rlpr を使って 11.2 Win95 や WinNT、LanManager、Samba のプリンタに対して 11.3 NetWare のプリンタに対して 11.4 EtherTalk (Apple) のプリンタに対して 11.5 HP やその他のイーサネットプリンタに対して 11.5.1 古い HP のプリンタに対して 11.6 リモートプリンタに if を実行する 11.7 Windows から 11.8 Apple から 11.9 Netware から 12. Windows 専用プリンタ 12.1 Ghostscript - Windows 変換ドライバ 12.2 pbm2ppa プログラム 12.3 Lexmarks 13. ファックスを用いた印刷の方法 13.1 ファックスモデムを使う 13.2 遠隔印刷サービスを使う 14. 印刷するブツを作る方法 14.1 マークアップ言語(Markup languages) 14.2 WYSIWYG 型ワープロ 15. 印刷可能なものの画面上でのプレビュー 15.1 PostScript 15.2 TeX dvi 15.3 Adobe PDF 16. lpd の下でのシリアルプリンタ 16.1 printcap の設定 16.2 文字落ちする古いシリアルプリンタ 17. クレジット 18. 日本語訳について ______________________________________________________________________ 1. はじめに この Printing HOWTO はあなたの Linux Box で印刷サービスを設定するため に必要となるような情報全てを含んでいるはずです。人生がそうであるよう に、マイクロソフトやアップルのクリックひとつだけですむ世界よりも多少難 しいでしょうが、その分だけ柔軟性があり、大中規模の LAN(large LANs) の 管理者にとっては確実に簡単であるはずです。 このドキュメントはほとんどの人は前半部分ぐらいを読むだけで済むように構 成されています。多くのより分かりにくく、また状況に依存した (situation- dependant) 情報は後半部分にあり、簡単に目次から探すことができますが、 多くの方は 9 章や 10 章の情報が必要となるでしょう。 ご存じの通りバージョン 3.x(このドキュメントのバージョンの事)は完全に書 き直されましたので、前の版からの情報の多くは無くなりました。これは、以 前の HOWTO は非常に大きく、印刷すると 60 ページにも及び、まるで死んだ 亀の生涯を語るような長い長いお話になってしまったために意図的に行いまし た。このドキュメントから答えを見つけられなかった場合、a) Printing HOWTO Home Page にある以前のバ ージョンを調べ、b) このドキュメントにあるべきものが抜けていることを私 に教えてください。 Printing HOWTO Home Page は最新 版のドキュメントを見つけるのに良い場所ではありますが、当然 Metalab (metalab.unc.edu) や近くの LDP ミラーサイトからも配布されます。 1.1. History この文章は 3 世代目(つまり 3 回目の大改訂)の Printing HOWTO です。 PHT(Printing HowTo) の歴史はこのように綴られる。 1. comp.os.linux での印刷に関する非常に多くの質問への回答として、 1992 年に printing-howto を書いて投稿しました。これは HOWTO プロジェクト 発足よりも数ヶ月前だったため、`howto' と呼ばれる最初の FAQ パンフ レット (FAQlet)となりました。この版は単なるテキストファイル(plain ASCII)でした。 2. HOWTO プロジェクトに参加後、Printing-HOWTO は Brian McCauley の Lpd FAQ とマージされました。私たちは 2 年ほど、協力して PHT の共同執筆を行いました。いくつかは Karl Auer の物も取り入れました。この時の PHT は TeXinfo で書かれていましたが、PS, HTML, ASCII, そして Info 形式でも 入手できました。 3. PHT はその後 1 年以上も放置されて痛んで腐ってしまい、その後他の人に 文書のメンテナンスを引き継ぐことにも失敗した後、改定の話が持ち上が りました。現在の PHT は LinuxDoc DTD と SGML-Tools-1 パッケージを使 用して SGML で書かれています。バージョン 3.27 からは、扱いやすいプ リンタ (companion printer)のサポートデータベースの要約(summary)が含 まれています。 3.27 より以前はこの HOWTO に、プリンタ互換性リス ト(compatibility list)はありませんでした(!)。 1.2. Copyright This document is Copyright (c) 1992-1999 by Grant Taylor. Feel free to copy and redistribute this document according to the terms of the GNU General Public License, revision 2 or later. (訳注: 読者の利便を考え日本語訳をしますが、原文の Copyright が優先しま す) このドキュメントは、Grant Taylor が著作権を有します((c) 1992-1999)。 GNU General Public License revision 2(GPL2) 以降に従う限り自由にこのド キュメントをコピー及び再配布を行っても構いません。 2. どのように印刷するのか 既に lpd を設定していてプリンタが使用可能になっているか、システム管理 者が設定してくれているか、もしくはベンダが代わりに設定してくれていたの であれば、必要なのは lpr コマンドの使い方を学ぶことだけです。Printing Usage HOWTO Printing Usage HOWTO がこれに ついて網羅しています。そして印刷キューを操作するいくつかのコマンドにつ いては既にご存知なことでしょう。 しかし、新品のシステムやプリンタを持っていれば、印刷が可能になる前に何 らかの方法で印刷サービスを設定する必要があるでしょう。 3. カーネルのプリンタデバイス パラレルポートのデバイスドライバは、全く異なるものが二つ存在していま す。あなたがどちらをお使いかは、そのカーネルのバージョン (uname -a と コマンドを打てばわかります) によります。ドライバの変更は Linux 2.1.33 で行われました。 これら二つのドライバには似ているところもあります。特に気をつけておくべ きは、PC BIOS の "Plug and Play" を無効にしておかないと、 Linux はパラ レルポートを検知しない、ということでしょう (驚くことじゃありません。 Windows などでの非 PCI デバイスの PnP 接続追跡情報はある意味災厄でした から...)。 3.1. lp デバイス (2.1.32 以前) 2.1.32 以前のカーネルでは、lp デバイスを組み込むかロードしておけば (ロ ードされてれば cat /proc/devices の出力に lp デバイスが入るはず)、 /dev/lp0, /dev/lp1, /dev/lp2 のうちのどれか (あるいは複数個) が使えま す。これらのデバイスは動的に割り当てられるものでは *ありません*。そう ではなく、それぞれが特定のハードウェア I/O アドレスに関連づけられてい るのです。つまり一番目に接続したプリンタが lp0 となるか lp1 となるかは ハードウェアしだいです。両方試してみましょう。 何人かのユーザからの報告によれば、単方向 (unidirectional) 用の古いプリ ンタケーブルを使っていると、双方向 (bidirectional) の lp ポートが認識 されないことがあるそうです。ちゃんとしたケーブルを使っているか確かめて おきましょう。 plip ドライバと lp ドライバは、一つのポートに同時に使うことはできませ ん (2.0 以下では)。しかし、必要に応じてどちらかのドライバを選択してロ ードすることは可能です。これは手動で、あるいは 2.x (及び 1.3.x の後期) カーネルなら kerneld を使って行うことができます。割り込みなどを注意深 く設定すれば、おそらく plip を一つのポートで、 lp を別のポートで動作さ せることが可能でしょう。こいつをうまいことコマンドラインだけで成功させ た例があるようなら、私はその話がとても聞きたいです。 さて、世の中には tunelp という小さなユーティリティがあります。これを root 権限で用いれば、 Linux 2.0 lp デバイスに対して、割り込みの利用法 やポーリングレートなどのオプションを調整することができます。 lp ドライバがカーネルに直接組み込まれているときは、カーネルは lp= オプ ションを受け付けるようになり、ドライバが利用する割り込みと I/O アドレ スを設定できます。例えば LILO や LOADLIN のコマンドラインを用いて、ド ライバの使うポートアドレスと割り込みを設定できます。 書式: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] 例; lp=0x378,0 または lp=0x278,5,0x378,7 など。 この機能を使ったときは、必要となるポートを *ぜんぶ* 指定しなければいけ ません。デフォルトで有効となるポートはありません。なお lp=0 とすれば組 み込みのドライバを無効にすることもできます。 モジュールとしてロードされる場合には、 I/O アドレスと割り込みを insmod のコマンドラインから (あるいは /etc/conf.modules で kerneld に設定し て) 通常のモジュール引数の指定方法で設定できます。パラメータは io=port0,port1,port2 と irq=irq0,irq1,irq2 です。より詳しいことを知り たい場合は insmod のマニュアルページを読んでください。 必要なときに標準のポート番号を思い出せない人 (わたしもそうです) のため にコメントを。二つは上記の二番目の例に出ています。もう一つ (lp0) は 0x3bc にあります。標準の割り込み、に関しては、ちょっと知識がありませ ん。 Linux 2.0 パラレルポートドライバのソースコードは /usr/src/linux/drivers/char/lp.c にあります。 3.2. parport デバイス (kernel 2.1.33 以降) カーネル 2.1.33 から (カーネル 2.0.30 用のパッチもありますが)、 lp デ バイスは新たに導入された parport デバイスの単なるクライアントになりま した。 parport デバイスが追加されたことによって、以前の lp デバイスド ライバにあった多くの問題が是正されました。 lp が他のドライバとポートを 共有できるようになりましたし、利用できるパラレルポートをデバイス番号に 動的に割り当てることも可能になりました (以前は I/O アドレスとポート番 号の関係は固定されていました)。 parport デバイスの登場によって、 Zip ドライブや Backpack CD-ROM, ディ スクなど、新たなパラレルポートデバイスが何でも利用できるようになりまし た。これらのうちのいくつかは 2.0 カーネルでもバージョンによっては利用 できます。 web を捜し回ってみてください。 お気づきになると思いますが、印刷に関連する主な違いは、 parport ベース のカーネルでは lp デバイスがパラレルポートに動的に割り当てられる、と言 うことです。ですから Linux 2.0 で lp1 だったポートが Linux 2.2 では lp0 になるかもしれません。 lp ドライバのカーネルから parport ドライバ のカーネルにアップグレードするときは、この点のチェックを忘れないように してください。 このデバイスについて一番ありがちな問題は、設定のミスから起こるようで す: ディストリビューション Linux ディストリビューションのなかには、きちんと設定された /etc/modules.conf (ないしは /etc/conf.modules) が入っていないた め、ドライバが、必要となる場面で、ちゃんと読み込まれないようなも のがあります。 modules.conf の正しい `魔法の' 設定行は、最近の modutils ではこんなふうになります: alias /dev/printers lp alias /dev/lp* lp alias parport_lowlevel parport_pc BIOS パラレルポートを Plug and Play にしようとする PC の BIOS はいっ ぱいあります。でもこれは、「いつだってそこにある」完璧に単純なデ バイスに、無用な複雑さを植え付けるだけです。 Linux のドライバが パラレルポートを検出してくれない場合は、パラレルポート (``LPT1'' となっている BIOS が多いです) の Plug and Play 設定を切ってくだ さい。正しい設定内容は、``legacy'' とか ``ISA'', ``0x378'' など です。 ``disabled'' にしてしまうのは、おそらく間違いでしょう。 カーネルソースの Documentation/parport.txt を読むか、 parport web site に目を通してみてくださ い。 3.3. シリアルデバイス Linux ではシリアルデバイスには /dev/ttyS1 のような名前がつきます。 stty ユーティリティを用いれば、シリアルポートの設定をインタラクティブ に閲覧・設定できます。 setserial を使うと、さらに高度な属性を制御で き、標準的でないポートに対して IRQ や I/O アドレスを設定することもでき ます。 Linux でのシリアルポートに対するより詳しい議論は Serial-HOWTO にあるでしょう。 遅いシリアルプリンタにフロー制御を使うと、プリントジョブが捨てられてし まうことがあります。これはおそらくシリアルポートのせいで、デフォルトの 動作では送信されなかった文字を、ポートがクローズされた 30 秒後にバッ ファにから捨ててしまうからです。バッファは 4096 文字まで保持できます が、プリンタでフロー制御が使われており、かつプリンタの速度が遅くて、印 刷を行ったソフトウェアがポートをクローズした後 30 秒の間にデータを受け 切れない場合には、バッファの内容の末尾の部分が失われることになります。 コマンド cat file > /dev/ttyS2 を行って、短いファイルなら完全にプリントアウトされ、長いファイルでは尻 切れになるようなら、おそらくこの状況にあります。 30 秒のインターバルは setserial (バージョン 2.12 以降) の "closing_wait" コマンドラインオプションによって調整できます。通常マシ ンのシリアルポートは rc.serial というブートファイルから setserial を呼 び出すことによって初期化されています。問題になっている印刷用シリアルポ ートへのこの setserial の実行を修正して、そのポートへの他のパラメータ の設定と同時に closing_wait も設定するようにすれば良いでしょう。 4. サポートされているプリンタ Linux のカーネル自体はシリアルかパラレルのコネクタに接続できるほとんど 全てのプリンタをサポートしています。しかし (電気信号的には) Linux と会 話ができるにも関わらず、利用することができないプリンタがあることに注意 しないといけません。こういった互換性の無いプリンタは、一般的に ``Windows'' プリンタや ``GDI'' プリンタと呼ばれているものです。こう呼 ばれるのは、プリンタの制御言語の一部または全て、そして印刷の仕組みにつ いての詳細な仕様がドキュメント化されていないためです。通常こういったプ リンタの販売者は、 Windows 用のドライバを供給し Windows ユーザのみに向 けて販売して満足しています。これがこの種のプリンタが Windows 専用プリ ンタ と呼ばれる理由です。場合によっては販売者が NT 用、OS/2 用、その他 OS 用のドライバを供給することもあります。 これらのプリンタの多くは Linux 上では動作しません。動くものはわずか で、いくつかは少しだけしか動きません (通常は誰かがプリンタにデータを送 る方法を解読したおかげです)。個々のプリンタについての詳細は後述するプ リンタサポートリストを参照してください。 この中間に位置するプリンタもいくつかあります。例えば NEC のいくつかの モデルにはシンプルな標準的プリンタ言語である PCL が組み込まれているた め、 PCL を話せるソフトウェアからは 300dpi で印刷することができます が、 600dpi の最大解像度で印刷する方法は NEC しか知りません。 もし既にこういった Windows 専用プリンタをお持ちの場合でも、 Linux から 印刷する手段が無いわけではありません。でもそれらは洗練されているとはい いがたく、私自身は試したこともありません。Windows 専用プリンタについて は、第 12 章でもっと詳しく述べているのを参照してください。 4.1. PostScript Linux で動作するプリンタは数々ありますが、一番良い選択は PostScript を 標準でサポートしているプリンタを買うことです。印刷が可能である Unix の ソフトウェアのほとんど全ては PostScript 形式で印刷データを出力するた め、当然 PostScript を直接サポートしているプリンタを使うのが望ましいわ けです。残念なことに、通常 PostScript はレーザープリンタ以外では装備さ れておらず、また高価なオプションであることがしばしばです。 Unix のソフトウェア、そして出版業界では、一般的にプリンタ制御言語とし ては PostScript が標準となっています。これにはいくつかの理由があります - タイミング PostScript は、80年代のデスクトップ出版革命に大いに寄与した Macintosh とその完璧な相棒である Apple LaserWriter で組まれたシ ステムの一部として世に現れました。 デバイスへの非依存性 PostScript プログラムは、そのプログラムを変更することなしに、ピ クセルスクリーン、ベクタースクリーン、ファックス装置、その他ほと んど全ての種類の印刷装置に出力することができます。 PostScript の 出力は、いかなる PostScript 装置を使っても、その装置の性能の範囲 内で同じように表示されます。 PDF の出現以前は、複雑なドキュメン トをオンラインで交換するには PostScript が使われていました。この 標準が "継続" しなかったのは、通常 "Windows" マシンには PostScript のプレピューアが付いていなかったのが唯一の理由です。 そのため Adobe は PostScript にハイパーリンクと圧縮機能を付け加 え、これを PDF と名付け、そのプレビューアを配布し、 "PDF蒸留" ツ ールの市場を生み出しました (この PDF 操作には Ghostscript の ps2pdf と pdf2ps プログラムも使用できます)。 真のプログラミング言語 PostScript は完全なプログラミング言語です。ほとんど全てのことを 行なえるソフトウェアを記述することができます。これは、ドキュメン ト中に何度も何度も現れる複雑なもの、ロゴや背景の大きな "下書き" マークのようなものをプログラムの冒頭でサブルーチンとして定義する 際に特に有用となります。 オープンな仕様 PostScript は一般に入手可能である様々な書籍(大きな書店で見つかる でしょう)によって仕様が公開されています。 Adobe が発明し、商業的 な市場を支配する実装を供給していますが、 Aladdin のような他のベ ンダによって独自に開発された実装も存在します。 4.2. 非 PostScript (より高額な) PostScript プリンタを購入する費用が捻出できなかったとして も、本物の PostScript プリンタの代わりとして利用できるフリーな PostScript のインタプリタである Ghostscript がサポートしているプリンタ ならどれでも使用することができます。 Ghostscript Home Page にサポートされているプリンタと最新お よび開発中のドライバについての情報と現状のリストがあります。これは最新 版の Ghostscript がサポートしているプリンタの一覧で、ほとんどの Linux ディストリビューションに含まれる Ghostscript は、ライセンスの都合上か らどうしても多少古い版となってしまうということに注意してください。幸い なことに、たいていの場合はパッケージ済の新しい Ghostscript を各ディス トリビューションの contrib エリアから入手することができるでしょう。 Ghostscript サポートページを充実させるために、あなたのプリンタがうまく 動いたか、または動かなかったかを質問に沿ってレポートしてくださることを お願いします。 Adobe は "PrintGear" と呼ばれる新しいプリンタ言語を作りました。これは 多少 PostScript の流れを汲みますが、PostScript との互換性は無い非常に 単純化されたバイナリフォーマットの言語のようです。そして Ghostscript がこれをサポートするという話は聞いたことがありません。けれどもいくつか の PrintGear プリンタは、PCLのような他の言語もサポートするようで、これ らのプリンタは(もし PCL が組み込まれるのがプリンタ自体であって Windows のドライバ内でなければ)、Linux 上でも動作するでしょう。 4.3. どのプリンタが動くの? もしもあるプリンタを買いたいのなら、それが動くかをいくつかの場所で調べ ることができます。共同して更新されている Printing HOWTO プリンタデータ ベース は、Linux のプリンタサポートに関しての総合的な一覧となることを目的とし ています。その要約を以下に示します。詳細情報とどのドライバを使用するか の情報を必ずオンラインでチェックするようにしてください。 ※はねさんのハードウェア実績リスト も御覧ください。 Ghostscript の プリンタの互換性のページ には動作するプリンタの一 覧と、他のページへのリンクがあります。そして Dejanews には "動く" と "動かない" の証言が何百もありま す。この三つ全てを試してみましょう、それが終わったら、データベース にそのプリンタ が存在するかを確認し訂正して、このドキュメントに将来は正しく掲載される ようにしましょう。 4.3.1. プリンタの互換性リスト 本セクションはオンライン版の要約です。オンライン版には基本的な仕様、注 意、ドライバ情報へのリンク、ユーザによるドキュメント、製造者へのリン ク、等々が含まれています。このオンライン版のリストはまた対話的でもあり ます。利用者はいつでもプリンタを追加でき、実際常に追加されていますの で、チェックを怠らないようにしてください。最後に、もしお使いのプリンタ が掲載されていなかった場合はぜひ追加を! ここではプリンタを三種類に区分しています。 完璧 完璧なプリンタは完璧に動作します - カラー、最高の解像度、その他 を含め、プリンタの能力を完全に利用して印刷ができます。ドキュメン ト化されていない "拡張された解像度" が動作しないプリンタが "完 璧" としてリストされているケースもまれにありますが、通常は印刷品 質の違いは非常に小さいので気にすることはないでしょう。 大体 きれいに印刷できますが、印刷やその他の機能にいくつかの制限がある でしょう。 一部のみ 印刷はできます、ただしカラーじゃないか、または低解像度のみでです が。これらの制限についての情報は、オンライン版の注意コーナーを参 照してください。 置き物 このくそったれでは印刷できません。通常は、ドライバが無い、そし て/または、ドライバを書くためのドキュメントが無いことが原因で す。 全てのケースにおいて、この情報は多数の人間によって提供されたものである ため、正確であると保証されたものは全くありません。もっとも、ドライバの ウェブページと製造者のウェブサイトで確認することは簡単でしょうが。 能書きはこのくらいにして、これがプリンタの互換性リストです - Apple 完璧 LaserWriter 16/600, LaserWriter II NTX, LaserWriter Select 360. 大体 12/640ps. 置き物 StyleWriter 2500. Avery 完璧 Personal Label Printer+. 大体 Personal Label Printer. Brother 完璧 HL-1070, HL-10V, HL-10h, HL-1260, HL-2060, HL-4Ve, HL-630, HL-730, HL-760, HL-8. 大体 HJ-400, HL-1040, HL-1050, HL-1060, HL-1250, MFC 6550MC. 一部のみ MC-3000, MFC 7150C. 置き物 HL-820. Canon 完璧 BJ-10e, BJ-20, BJ-200, BJ-330, BJ-5, BJC-210, BJC-250, BJC-4000, BJC-4100, BJC-4200, BJC-4300, BJC-4400, BJC-600, BJC-6000, BJC-610, BJC-620, BJC-70, BJC-800, LBP-1260, LBP-1760, LBP-4+, LBP-4U, LBP-8A1, LBP-8II, LIPS-III. 大体 BJ-300, BJC-1000, BJC-2000, BJC-240, BJC-4310SP, BJC-7004, BJC-80, LBP-4sx. 一部のみ BJC-4550, BJC-7000, BJC-7100, MultiPASS C2500, MultiPASS C3500, MultiPASS C5000, Multipass C3000, Multipass C5500. 置き物 BJC-5000, LBP-460, LBP-660, Multipass L6000. Citizen 完璧 ProJet II, ProJet IIc. 一部のみ printiva600C. DEC 完璧 DECWriter 500i, DECwriter 110i, DECwriter 520ic, LN03. 一部のみ 1800. Dymo-CoStar 完璧 ASCII 250, ASCII+, EL40, EL60, LabelWriter II, LabelWriter XL, LabelWriter XL+, SE250, SE250+, Turbo. Epson 完璧 ActionLaser 1100, LP 8000, LQ 850, SQ 1170, Stylus Color, Stylus Color 400, Stylus Color 440, Stylus Color 640, Stylus Color 800, Stylus Color 850, Stylus Color II, Stylus Color IIs, Stylus Pro XL. 大体 EPL 5700, Stylus 300, Stylus Color 3000, Stylus Color 500, Stylus Color 740. 一部のみ Stylus Color 300, Stylus Color 900, Stylus Photo 700, Stylus Photo 750, Stylus Photo EX. Fujitsu 完璧 PrintPartner 10V, PrintPartner 16DV, PrintPartner 20W, PrintPartner 8000. HP 完璧 2000C, 2500C, Color LaserJet 4500, DeskJet 1200C, DeskJet 1200C/PS, DeskJet 1600C, DeskJet 1600Cm, DeskJet 310, DeskJet 400, DeskJet 420C, DeskJet 500, DeskJet 500C, DeskJet 510, DeskJet 520, DeskJet 540, DeskJet 550C, DeskJet 600, DeskJet 610C, DeskJet 610CL, DeskJet 612C, DeskJet 660C, DeskJet 670C, DeskJet 672C, DeskJet 682C, DeskJet 690C, DeskJet 694C, DeskJet 697C, DeskJet 810C, DeskJet 812C, DeskJet 850C, DeskJet 855C, DeskJet 882C, DeskJet 890C, DeskJet 970Cxi, LaserJet 1100, LaserJet 1100A, LaserJet 2 w/PS, LaserJet 2100M, LaserJet 2P, LaserJet 3, LaserJet 3P w/PS, LaserJet 4, LaserJet 4 Plus, LaserJet 4050N, LaserJet 4L, LaserJet 4M, LaserJet 4P, LaserJet 5, LaserJet 5000, LaserJet 5L, LaserJet 5M, LaserJet 5MP, LaserJet 5P, LaserJet 6L, LaserJet 6MP, LaserJet 6P, LaserJet 8000, LaserJet 8100, Mopier 320, PaintJet XL300. 大体 DesignJet 650C. Designjet 750 C Plus, DeskJet 1120C, DeskJet 870C, DeskJet 880C, DeskJet 895C, DeskJet 895Cxi, DeskJet 970Cse, LaserJet 2, LaserJet 2100. 一部のみ DeskJet 1000C, DeskJet 710C, DeskJet 712C, DeskJet 720C, DeskJet 722C, DeskJet 820C, OfficeJet 500, OfficeJet 600, OfficeJet 625, OfficeJet Pro 1150C. 置き物 LaserJet 3100. IBM 完璧 4019, 4029 10P, 4303 Network Color Printer, Page Printer 3112, ProPrinterII. Kyocera 完璧 F-3300, FS-1700+, FS-600, FS-800, P-2000. 大体 FS-3500. Lexmark 完璧 Optra Color 1200, Optra Color 1200, Optra Color 1275, Optra Color 40, Optra Color 45, Optra E, Optra E+, Optra E310, Optra Ep, Optra K 1220, Optra R+, Optra S 1250, Optra S 1855, Valuewriter 300. 大体 1000, 1100, 2070, 5000, 5700, 7000, 7200. Partially 1020 Business, 2030, Winwriter 400, Z51. 置き物 1020, 2050, 3000, 3200, Winwriter 100, Winwriter 150c, Winwriter 200, Z11. Minolta 完璧 PagePro 6, PagePro 6e, PagePro 6ex, PagePro 8. 一部のみ PagePro 8L. NEC 完璧 P2X, SilentWriter LC 890, Silentwriter2 model 290, SuperScript 660i. 一部のみ SuperScript 100C, SuperScript 1260, SuperScript 150C, SuperScript 650C, SuperScript 750C, SuperScript 860, SuperScript 870. 置き物 SuperScript 660plus, SuperScript 660, Oce 完璧 3165. Okidata 完璧 8p, OL 410e, OL 600e, OL 610e/PS, OL 800, OL 810e/PS, OL400ex, OL810ex, OL830Plus, Okipage 10e, Okipage 12i, Okipage 20DXn, Okipage 6e, Okipage 6ex, Okipage 6w, Okipage 8c. 大体 OL 400w, Okipage 4w, Super 6e. 一部のみ ML 192+, OL 610e/S. 置き物 Okijet 2010, Okijet 2500, Okipage 8w. Olivetti 完璧 JP350S, JP450, PG 306. PCPI 完璧 1030. Panasonic 完璧 KX-2135, KX-P1123, KX-P1124, KX-P1150, KX-P2023, KX-P2150, KX-P4410, KX-P4450, KX-P5400, KX-P8420, KX-P8475. 大体 KX-P2123, KX-P6150. 一部のみ KX-P6500. 置き物 KX-P6100, KX-P6300 GDI, KX-P8410. Printrex 一部のみ 820 DL. QMS 完璧 2425 Turbo EX. 大体 ps-810. Ricoh 完璧 4801, 6000. 置き物 Aficio Color 2206, Afico FX10. Samsung 完璧 ML-5000a. 置き物 ML-85G. Seiko 完璧 SpeedJET 200. 大体 SLP, SLP 120, SLP 220, SLP EZ30, SLP Plus, SLP Pro. Sharp 完璧 AR-161. Star 完璧 NL-10. 大体 LC 90, LC24-200. 置き物 WinType 4000. Tally 完璧 MT908. Tektronix 完璧 4696, 4697, Phaser 780, Phaser IISX, Phaser PX. Xerox 完璧 DocuPrint 4508, DocuPrint C55, DocuPrint N17, DocuPrint N32. 大体 DocuPrint P12, DocuPrint P8e, Document Homecentre, XJ6C. 一部のみ WorkCentre 450cp, XJ8C. 置き物 DocuPrint P8, WorkCentre XD120f. (訳注:本リストに記載されたメーカおよび型番は、一般に米国国内で販売され ているものです。日本国内で販売されている物は、型番が似ていても搭載され たプログラムやフォントが異なるために本リストと動作が変わる可能性があり ます) 4.4. プリンタの買い方 最近は、プリンタ選びもずいぶん難しくなってきています。山のように機種が あります。選ぶときのコツをいくつか: コスト 出した値段に見合ったものが手にはいるのは何についても同じことで す。 200 ドル以下のプリンタでも十分きれいに印刷できるものがほと んどですが、 1 ページ印刷するごとのコストはかかります。カート リッジの 1 個か 2 個が、新品のプリンタ本体の値段に匹敵してしまう ような機種もあります! また、これも同じような話ですが、劇安のプ リンタはそんなに長くは持ちません。例えば、もっとも安いプリンタの MTBF は 3 ヶ月程度だったりします! (訳注: MTBF は Mean Time Between Failures の略, 平均故障間隔) インクジェット インクジェットのプリンタヘッドは時間が経つと詰まって使えなくなる ものなので、なんらかの方法でヘッドを交換できることが機能の一つで す。また、インクジェットのプリンタヘッドは高価なので、必要なとき だけヘッドを交換できるということも機能に入ります。 Epson の Stylus シリーズは固定式ヘッドを持つものが多く、 HP の DeskJet シ リーズのヘッドのカートリッジと統合されているようです。 Canon の カートリッジは 3 つの部分に分かれていて、インクのタンクだけを独 立して交換できます。私はこの設計、気に入ってます。一方、HP のカ ートリッジはそう無茶苦茶に高いわけでもないし、より良い製品ライン を揃えています。印刷品質という観点からは、Canon はしばしば選択肢 の三番手どまりだったりします。ま、こんなもんですね。 レーザープリンタ レーザープリンタはドラムとトナーを消費します。一番安い設計のもの は、トナーとドラムを大きなカートリッジの中に一緒に納め、性能より もコストを重視したデザインとなっています。大量印刷向けの良い製品 はトナー粉そのままを使うようになっていたり、ないしは少なくともト ナー・カートリッジとドラムを分離させた設計になっています。 写真 最高の写真印刷出力を求めるなら、 Tektronix Phasers (粘性の高いイ ンクのもの) のような連続トーンのプリンタか、 Alps シリーズ (ドラ イ・インク・プロセスの類) です。 Alps プリンタの中には実際に手頃 な値段のものも少しあるのですが、まだ Linux では動きません (私の 記憶が確かならば、そう書いてあったはず). より一般的な、写真に特 化したインクジェット・プリンタは 6 色の CMYKcm 印刷や、時には 7 色の CMYKcmy プロセスさえも備えていますが、 Linux で動くのは PostScript のサポートがあるモデルだけです。 Ghostscript が、これ らのカラーモデルをサポートしていないのが原因です。とはいえ、CMYK でも、うまく出力すれば、なかなか馬鹿にはできないものです。写真に 特化したプリンタは、みな運用に高コストがかかります。使い果たすの はいつも青インクなのにカートリッジ全体を交換しないといけなかった り、ハイ・エンドな写真プリンターで特定の色を補充するのには腕力が 必要だったりします。 スピード 速度は処理能力、帯域幅、そして一般的にプリンタにかけるコストに比 例します。最速のプリンタは、強力なプロセッサを内部に積んだネット ワーク接続されたポストスクリプト・プリンタになるでしょう。コン シューマ・レベルのプリンタでは、部分的に Ghostscript のレンダリ ング速度に依存するでしょうし、その場合はそこそこ強力なマシン本体 を使えばかなり改善を図れます。また、フルページのカラー印刷の場合 は、特にホストのメモリを大量に消費することでしょう。 ドット・マトリクス カーボン紙に印刷したい場合は (訳注: カーボンの付いた複写紙) イン パクト・プリンタが必要になります。多くの企業がいまだにドット・マ トリクス・プリンタを製造していますし、そのほとんどは旧来の EPSON モデルをエミュレートするものですから、ちゃんと使えます。 ラベル サポートされているラベル・プリンタには、二つの流れがあります。 Dymo-Costar か Seiko SLP シリーズを探してください。これ以外の機 種は、動くかもしれないし、動かないかもしれません。 Avery 社 が、8.5x11 インチのフォーマットに則った様々な大きさのステッカー 式ラベルを作っています。これなら普通のプリンタでも使えます。 プロッター 最近では、大きなドラフティング・フォーマットは巨大なインクジェッ トプリンタでサポートされています。HP が一般的な選択です。もう少 し小さめのものの印刷には、中型の (11x17 インチ) インクジェットも よく使われています。この手のプロットのほとんどは RTL や HP-GL, HP-GL/2 といった言語で行われます。これらはすべて HP が規格を権利 占有しているベクタ言語で、一般にはアプリケーション・ソフトウェア 自体から直接生成されます。 5. どのスプールソフトウェアを使う? ごく最近まで、Linux ユーザの選択肢は極めて単純でした。皆同様に BSD の Net-2 コードをほとんどそのまま使っただけの古い lpd を実行していたので す。現在に至っても、多くのベンダはこのソフトウェアを出荷し続けていま す。しかし徐々に変革が始まっています。Sun Microsystems の Solaris を含 む SVR4 の流れを汲むシステムでは、 lpsched を中心とする従来のものとは 完全に異なる印刷スプールのパッケージを持っています。そしていくつかの Linux ベンダは、それ程昔のものではないフリーな印刷スプールの仕組みを移 植した LPRng を提供する傾向があります。 LPRng では複数のプリンタ(シリ アルプリンタや lpd が対応していないネットワークプリンタも含む)を導入す る際に、はるかに管理しやすくなっています。また lpd に蓄積されたものと 比べると、はるかにましなコードを基本としています。それは本当に安全であ るとさえ言えるのです。SUID されたバイナリは存在しませんし、PGP や Kerberos を利用した認証をサポートします。 こういった状況に登場した興味深い新顔に、インターネット印刷プロトコル (Internet Printing Protocol) の実装である ``CUPS'' というのがありま す。このプロトコルは、あの素晴らしい …とはいえ、古い… lpd プロトコル を置き換えようとするもので、 RFC で定義されています。これの最初の実装 は、商用製品である ``Easy Print'' のオープン・ソースなコンポーネント で、インテリジェントなスプーラと、 Ghostscript の周辺として構築された 商用プリンタドライバのコレクションです。 当面は新しい選択肢を考慮してみたとしても、おそらく多くの Linux ユーザ にとって lpd は優れた選択肢でしょう。それがしゃれたシステムではないと しても、一度設定してしまえば問題なく動作します。またよく知られたもので あるため、サード・パーティーから出版されている Unix 関連の本にも詳細に 記述されています。 LPRng についてより多くの情報が必要でしたら、LPRng Web Page を御確認ください。将来的には この HOWTO に LPRng と正規の lpd 両方の情報を載せることになるでしょ う。 6. どのように動作するのか、基本 印刷を行うためには、lpd システムがどのように動作するのか理解する必要が あります。 LPD は Line Printer Daemon の頭文字をとっています。また文脈によっては そのデーモンという意味で用いられたり、印刷のスプールを実行する一連のプ ログラム全体という意味で用いられたりします。これらは以下のようなもので す。 lpd スプールを行うデーモンです。マシン上のあらゆることを制御するため にこれらの 1つが実行されています。プリンタが印刷している間は、印 刷するプリンタ毎にさらにもう 1つが実行されます。 lpr ユーザがスプールを実行させるコマンドです。lpr は lpd と連絡をと り、新たな印刷ジョブをスプールの印刷キューに入れます。 lpq 印刷キューの中の印刷待ちジョブ・リストを表示します。 lpc lpd システムを制御するコマンドです。このコマンドを用いることで、 印刷キューを止めたり、キューを開始させたり、キューの中の順番を変 更する、といったようなことが可能になります。 lprm lprm は印刷のスプールから印刷ジョブを削除します。 コマンドとデーモンはそれぞれどのように連携して印刷を行うのでしょうか? システムの起動時に lpd が起動します。 lpd は自分がどのプリンタのスプー ルを管理しているのか知るために、/etc/printcap ファイルを参照します。 lpr コマンドが実行されるごとに、lpr は /dev/printer というデバイス名の ソケットを経由して lpd と連携をとります。そして印刷するファイル、誰が 印刷するのか、どうやって印刷するのか、といったようないくつかの情報を lpd に与えます。それから lpd はファイルを適切なプリンタ上で順番に印刷 するのです。 lp システムは、かつてほとんどのプリンタが ascii 文字のみを印刷するライ ンプリンタだった頃に元々デザインされたものです。そのため、現在の印刷 ジョブ (PostScript、テキスト、 dvi といったようなもの) のために lpd を 問題なく動作させるには、わずか数行ではありますが追加でスクリプトを記述 しなければならない、ということがわかります。 7. どうやって設定するのか、基本 7.1. 伝統的な lpd の設定方法 lpd に対する最小限の設定は、キューにファイルを取り込み、それを印刷でき るようにすることです。プリンタがそのことを理解するかどうかに注意を払う 必要はありません。ただ、魅力的な出力はおそらく得られないでしょう。それ でも、理解する為の第1段階です。読み続けてください! 基本的に、lpd に印刷キューを追加するには、/etc/printcap の中にエントリ を追加し、/var/spool/lpd の下に新しいスプール用のディレクトリを作成す る必要があります。 /etc/printcap のエントリは以下のようになっています。 # LOCAL djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh: この設定では、lp や dj または deskjet と呼ばれるスプールを定義 し、/var/spool/lpd/dj ディレクトリにスプールします。そしてジョブ毎の最 大サイズを制限せず、/dev/lp0 に指定されたデバイスから印刷します。大見 出しページ (印刷する人の名前等を含んでいるもの) を印刷ジョブの先頭に加 えることはしません。 さぁ、printcap の man ページを読んでみてください。 上記の設定は実に単純ですが、実際は落とし穴があります。Deskjet 500 が理 解できるファイルを送っているにもかかわらず、Deskjet は奇妙な印刷を行っ てしまいます。例えば、通常の Unix のテキストファイルを送って も、Deskjet は文字どおりに newline を翻訳してしまうのです。つまり、こ んな具合になってしまいます。 This is line one. This is line two. This is line three. どうしたものでしょう。この設定で PostScript のファイルを印刷したなら、 この "階段効果" をともなう、美しいけれどもなんの役にも立たない PostScript コマンドの列記された出力が得られることでしょう。 明らかに何かが必要です。そしてこれがフィルタを使う目的なのです。 printcap の man ページを読んだ観察力の鋭いあなたなら、スプールの属性で ある if と of に気がついているかもしれません。 if つまり入力フィルタ が、まさにここで必要なものなのです。 newline の前にキャリッジリターンを付け加える filter と呼ばれる小さな シェル・スクリプトを書けば、この階段状の印刷は除去されます。もちろ ん、printcap のエントリに if の行を追加する必要があります。 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh: 簡単な filter スクリプトはこのようになるでしょう。 #!perl # The above line should really have the whole path to perl # (上記の行は perl への完全なパスでなければいけません) # This script must be executable: chmod 755 filter # (このスクリプトは実行可能でなければいけません。 # chmod 755 filter を実行してください) while(){chop $_; print "$_\r\n";}; # You might also want to end with a form feed: print "\f"; # (印刷の最後に改頁が必要なら、print "\f"; を入れてください) 上記のようなことが終われば通常の Unix テキストファイルを印刷できるよう なスプールになり、意味のある結果が得られます (このフィルタを書く非常に 多くのよりよい方法がありますが、実例となるものはほとんどありません。あ なたはより有効なものを作ってください)。 残っている問題は、単なるテキストファイルを印刷することではなく、 PostScript やその他のフォーマット、またはグラフィクスを含む出力を可能 にすることです。そしてそれ自体は可能ですし、簡単なことです。方法は前述 した改行修正を行うフィルタの単純な拡張です。入力として様々な形式のファ イルを受け入れ、それぞれに Deskjet のようにきれいな出力を得られるフィ ルタを書くことができたのなら、本当に賢い印刷スプールになったといえま す。 そのようなフィルタは、マジックフィルタ(magic filter) と呼ばれていま す。奇妙なものを印刷するつもりでなければ、頭を悩ませて自分でフィルタを 書く必要はありません。ネット上には、既に多くの素晴らしいスプールが存在 しているのです。 APS フィルタは最良の選択肢の一つです。もしくはあなた の Linux ディストリビューションに、これを簡単に設定できるツールが用意 されているかもしれません。 7.2. ファイルの許可制限 広く需要があるため、私はシステム上の重要なファイルについて、以下のリス トにあるような許可制限を与えています。何種類ものより良い方法があります が、理想的には SGID されたバイナリだけを使用すべきで、SUID root を何に でも適用すべきではありません。しかし、私のシステムはこのように設定され ていて、問題なく動作しています(率直に言うなら、ベンダでさえきちんと動 作する lpd を出荷できないのですから、それは荒馬を乗りこなそうとするよ うなものでしょう)。 -r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/ 小さい番号 (low-numbered) の lp サービスポートに接続されるため、現在の ところ lpd は root として実行される必要があります。バインドされた後 は、おそらく UID lp.lp または何かになるべきででしょう。しかし、私はそ れが何をするのかは考えません。あしからず。 8. 印刷ソフトウェアを入手する 多くの印刷前処理フィルタパッケージ(そして、他のプリンタ関連ソフトウェ ア)は、Metalab から 手に入れることができます。psutils、a2ps、mpage、dvitodvi、 flpr などの ようなユーティリティは、全てここから見つけることができます。 しばらくの間、プリンタ設定を容易にしようとしていた いくつかのパッケー ジがありました。それらはすべて、現在もあるはずです。しかし、メニューに より printcap の設定ができ、想定されるほとんどの入力を処理できる Andreas Klemm さんの APS フィルタパッケージが、最新でかつ最良のうちの 一つです。もしも、ベンダが気の利いたプリンタ設定ツールを出荷していない なら、APS Filter を使ってください。 9. ベンダ(配布パッケージ)ごとの解決方法 このセクションはもちろん完璧なものではありません。あなたのお気に入りの ディストリビューションの細部について、気づいたことを送ってください。 9.1. Red Hat Red Hat には リモートプリンタと、ローカルなデバイス上のプリンタを加え ることができる GUI プリンタ管理ツール (control panel 内) があります。 それは Ghostscript がサポートするプリンタタイプと、印刷先の Unix デバ イスファイルを選択させ、そして /etc/printcap へプリンタキューを設置 し、gs と nenscript 用の PostScript とアスキーを変換する短いマジック フィルタを書き出します。 お使いのプリンタを Red Hat が標準で提供している Ghostscript (Aladdin のものというよりは、GNU の方に近いものです。サポートしているプリンタも 少なくなっています)がサポートしていない場合にはうまくいきません。も し、手持ちの Red Hat ソフトウェアで正確に印刷することができないのに気 づいたら、前出(または online ) のプリンタ互換 性リストで調べてください。もしプリンタがRed Hat のツールによりサポート されないのなら、 Aladdin Ghostscript の contributed verison をインスト ールする必要があるかもしれません。そして、新しい Ghostscript がサポー トしているプリンタに関するすべてを知っている apsfilter パッケージを利 用する方がずっといいでしょう。 9.2. Debian Debian の場合には、 普通の lpd か LPRng のどちらかを選択できます。プリ ンタ設定ツールも同様に選択可能となっていると思います。私は Debian が同 じく、プリンタ設定ツールの選択を提示すると信じています。 apsfilter version 5 以降が、LPRng と Ghostscript's uniprint driver scheme のサポ ートが加わったので最良の選択です。 9.3. その他のディストリビューション どうか私に、他のディストリビューションならばどうするかについて知らせて ください。 10. Ghostscript. Ghostscript は Linux で印刷を行うのにとても重要なプログラムです。 Unix 環境での印刷用ソフトウェアのほとんどは PostScript を作成します。プリン タにPostScript をサポートする機能をつけると通常 100 ドルほどのオプショ ンになります。しかしながら Ghostscript は無料で PostScript からお使い のプリンタの言語を作り出します。お使いの lpd 入力フィルタと連動し、仮 想の PostScript プリンタとなり、印刷をとても簡単にします。 Ghostscript は 2 つの形態で入手できます。 Aladdin Ghostscript と言われ るものは Ghostscript の商用版で、個人使用に関しては自由に使うことがで きますが、商用の Linux ディストリビューションでの配布はできません。 Aladdin Ghostscript はフリーの Ghostscript の1年ほど先を進んでいます。 たとえば本ドキュメント時点での最新版は、旧版の Ghostscript ではサポー トしていない多くのカラーインクジェットドライバをサポートしています。 Ghostscript のフリー版は GNU Ghostscript で、単にGNU に寄贈された Aladdin Ghostscript の旧版です(このような配慮について Aladdin への称賛 - ソフトウェアベンダが完全にオープンな GPL ディストリビューションを扱 うことができないなら、 ソフトウェアベンダはこのような方法でどんどんフ リーソフトウェアをサポートするとよいでしょう)。 gs で何かをするときはいつでもファイルアクセスを無効(-dSAFER)にするオプ ションを使うべきです。PostScript は充分に機能的な言語ですが、よくない PostScript プログラムは頭痛の種になります。 Adobe の Portable Document Format(PDF) は、実際には圧縮ファイルにまと められた PostScript よりちょっとはましなものです。Ghostscript は PostScript を扱うのとほとんど同様に PDF を扱うことができます。そういう わけで Ghostscript を使えば、あなたは街で最初に PDF を印刷できるプリン タを持つことができるわけです。 10.1. Ghostscript を起動する 一般的に Ghostscript はあなたが設定したどんなマジックフィルタを使って も起動しますが(もしお使いのベンダがあなたが都合がよいものを提供してい ないなら、 aps フィルタを使うことをお勧めします)、デバッグのために、し ばしばそれを直接動かすようにするのが便利です。 gs -help というコマンドはオプションと利用できるドライバ(このリストはコ ンパイル時に組み込まれたリストで、利用できるすべてのドライバリストでは ありません)について簡単なヘルプリストを示します。テストするつもりで gs を動かしてみましょう。 gs options -q -dSAFER -sOutputFile= か ら入手できます。 11.2. Win95 や WinNT、LanManager、Samba のプリンタに対して Printing to Windows mini-HOWTO があり、ここよりも豊富な情報が書かれて います。 smbclient プログラム(samba の一部)によって lpd のキューを TCP/IP ベー スの SMB 印刷サービスに向けることができます。これを行なう smbprint と いうスクリプトが samba に含まれています。簡単に言うと、対象となるプリ ンタのための設定ファイルをスプールディレクトリに置いて、smbprint スク リプトを if として設定してください。 /etc/printcap のエントリはこのような感じになります - lp|remote-smbprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint: この設定方法に関するこれ以上の情報については smbprint スクリプトに含ま れるドキュメントを読むべきでしょう。 smbclient を使って、lpd を介さずに SMB の印刷サービスにファイルを直接 投げることもできます。 man ページをご覧ください。 11.3. NetWare のプリンタに対して ncpfs スイートは、 nprint と呼ばれるユーティリティを含んでいます。これ は NetWare を対象としているという点を除けば smbprint と同じ機能を提供 します。 Metalab から ncpfs を入手することができます。バージョン 0.16 の LSM エントリより - ncpfs を使って、NetWare サーバのボリュームを Linux にマウン トすることができます。NetWare の印刷キューに印刷したり、Net- Ware の印刷キューを Linux の印刷システムにスプールしたりする こともできます。カーネルは 1.2.x または 1.3.54 以降のバー ジョンが必要です。 ncpfs は 1.3.54 より前の 1.3.x カーネルで は動作しません。 nprint を lpd 経由で動作させるには、標準入力を NetWare のプリンタに印 刷するためのちょっとしたシェルスクリプトを作成して lpd の印刷キューの if として設定してください。このような感じになるでしょう - sub2|remote-NWprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script: nprint-script は大体このような感じになるでしょう - #! /bin/sh # You should try the guest account with no password first! # まずはパスワードなしのゲストアカウントを試すべきです! /usr/local/bin/nprint -S net -U name -P passwd -q printq-name - 11.4. EtherTalk (Apple) のプリンタに対して netatalk パッケージは nprint や smbclient のようなものを含んでいます。 Apple のネットワークから、もしくは Apple のネットワークへ印刷する手順 を私がやろうとしているよりよっぽどうまく文書にまとめられている方がいま す - Linux Netatalk-HOWTO を ご覧ください。 11.5. HP やその他のイーサネットプリンタに対して HP や他のいくつかのプリンタには lpd を使って直接印刷できるようなイーサ ネットインタフェースがついてきます。あなたのプリンタやネットワークアダ プタに付属の説明書に従うべきですが、一般的にはそのようなプリンタは lpd を「実行して」おり、印刷可能なひとつかそれ以上のキューを提供していま す。例えば、HP ではこのような printcap で動作するかもしれません - lj-5|remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=printer.name.com:rp=raw: Jet Direct インタフェースを備えた HP Laserjet プリンタは、一般に二つの 組み込み lpd キューをサポートしています -- PCL を(もしかしたら PostScript も)受け付ける "raw" と、ただの ascii を受け付ける(また自動 的に階段効果に対処する) "text" です。 JetDirect Plus3 3 ポートボックス を持っているなら、キューは "raw1", "text2" などというように名付けられ ます。 ISS 会社が HP Jetdirect インタフェースをハングアップさせる種々のサービ ス不能攻撃を確認していることに注意してください。これらのほとんどは 98 年の初秋に明らかにされました。 大規模な環境、中でも特にいくつかのプリンタが PostScript をサポートして いないような環境では、ひとつの専用プリントサーバを設置して、全てのマシ ンがそれに対して印刷を依頼し、全ての Ghostscript のジョブがそこで実行 されるようにすると便利かもしれません。 また、これは Linux ボックスをプリンタのスプールサーバとして動作させる ことで、ネットワークのユーザが印刷ジョブを素早く完了させ、プリンタが誰 か他の人が送信した他のジョブを印刷している間待たずに済むようにできま す。修正不可能な古い HP Jetdirect を持っている場合にも言えます - これ によってプリンタが動かなくなってしまう頻度を低減します。 これを行なうためには、Linux ボックスのキューをイーサネットを装備した HP LJ を指すように(先述のように)設定してください。次に LAN の全てのク ライアントをその Linux キューを指すように設定してください(例えば先述の 例の lj-5 のように)。 いくつかの HP のネットワークプリンタは、クライアントによって送信された バナーページ設定に気づかないようです - プリンタに telnet してリターン キーを 2 回押し、 "banner: 0" と入力した後 "quit" と入力することで、内 部的に生成されたバナーページを取り消すことができます。この方法で同様に 変更できる設定が他にもあります - リストを見るには "?" と入力してくださ い。 全ての設定は HP の WebJet ソフト ウェアによって制御することができます。このパッケージはデーモンとして動 作し、指定されたポートに対する HTTP リクエストを受け付けます。また、 ネットワーク上の HP のプリンタを制御できるフォームと Java アプレットを 提供します。理論的には Unix の印刷キューも制御できるのですが、 rexec サービスを使用して実現しており、これは全く安全性に欠けているので、この 機能を使用することはお勧めしません。 11.5.1. 古い HP のプリンタに対して いくつかのプリンタ (と、プリンタをネットワーク対応にする「ブラックボッ クス」の類) は、安っぽく貧弱でプロトコルなしの基本的な TCP 接続しかサ ポートしていません。この種のもので有名なのは、JetDirect (いくつかの JetDirectEx を含む)の初期モデルです。基本的に、このプリンタに印刷する には、プリンタの決められたポート (一般的には 9100 か 3 ポートボックス では 9100, 9101, 9102)に対して TCP コネクションをオープンし、印刷ジョ ブを流し込まなければいけません。 LPRng (この節を読んでいるならこちらを 代わりに使うべきです) には印刷ジョブを適当な(random) TCP ポートに流し 込むためのサポートが組み込まれています。しかし、 BSD lpd ではこれほど 簡単にはいきません。おそらく一番いい方法は、 netcat と呼ばれている小さ なユーティリティを手にいれて使うことでしょう。さもなくば、他の手を使っ て実装してしまうのもありです。Perl で書くなら - #!/usr/bin/perl # Thanks to Dan McLaughlin for writing the original version of this # script (And to Jim W. Jones for sitting next to Dan when writing me # for help ;) # このスクリプトの最初のバージョンを書いた Dan MacLaughlin に # 感謝します(それと Dan が私に助けを求めるメールを書いているときに # Jim W. Jones が彼の隣に座っていてくれたことに ;-) $fileName = @ARGV[0]; open(IN,"$fileName") || die "Can't open file $fileName"; $dpi300 = "\x1B*t300R"; $dosCr = "\x1B&k3G"; $ends = "\x0A"; $port = 9100 unless $port; $them = "bach.sr.hp.com" unless $them; $AF_INET = 2; $SOCK_STREAM = 1; $SIG{'INT'} = 'dokill'; $sockaddr = 'S n a4 x8'; chop($hostname = `hostname`); ($name,$aliases,$proto) = getprotobyname('tcp'); ($name,$aliases,$port) = getservbyname($port,'tcp') unless $port =~ /^\d+$/;; ($name,$aliases,$type,$len,$thisaddr) = gethostbyname($hostname); ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them); $this = pack($sockaddr, $AF_INET, 0, $thisaddr); $that = pack($sockaddr, $AF_INET, $port, $thataddr); if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) { # print "socket ok\n"; } else { die $!; } # Give the socket an address. # ソケットにアドレスを与えます。 if (bind(S, $this)) { # print "bind ok\n"; } else { die $!; } # Call up the server. # サーバに接続します。 if (connect(S,$that)) { # print "connect ok\n"; } else { die $!; } # Set socket to be command buffered. # ソケットをコマンドバッファリングするように設定します。 select(S); $| = 1; select(STDOUT); # print S "@PJL ECHO Hi $hostname! $ends"; # print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends"; # print S $dpi300; # Avoid deadlock by forking. # fork してデッドロックを避けます。 if($child = fork) { print S $dosCr; print S $TimesNewR; while () { print S; } sleep 3; do dokill(); } else { while() { print; } } sub dokill { kill 9,$child if $child; } 11.6. リモートプリンタに if を実行する lpd の奇妙な点のひとつは、if がリモートプリンタのためには実行されない ということです。if を実行する必要があるとわかった場合、キューを二重に 設定し、ジョブを再度キューに入れることで実現できます。例えば、このよう な printcap を考えてみてください - lj-5:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :if=/usr/lib/lpd/filter-lj-5: lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\ :rp=raw:sd=/var/spool/lpd/lj-5-raw: このような filter-lj-5 スクリプトがあるとします - #!/bin/sh gs -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5 lpr の -U オプションは lpr がデーモンとして実行されているときにのみ、 機能します。これは、再送されたキュー中のジョブに関して投げた人の名前を 正確に設定します。ユーザ名が第 5 引数ではない場合があるので、ユーザ名 を取得するにはもっと頑健な手段を使用するべきでしょう。 printcap の man ページをご覧ください。 11.7. Windows から Windows (とおそらく OS/2 も)クライアントから Linux サーバへの印刷は samba パッケージを使用することにより SMB 越しに直接サポートされていま す。また samba パッケージは Windows クライアントとの Linux ファイルシ ステムのファイルの共有もサポートしています。 samba はかなり完成度の高いドキュメントを含んでおり、それをカバーする優 れた samba FAQ もあります。 Linux ボックスのマジックフィルタを設定して それに対して PostScript を印刷することもできますし、全ての Windows マ シンにプリンタ固有のドライバをインストールしてまわってそれらに対して フィルタなしのキューを用意することもできます。 Windows のドライバにま かせるほうがより良い出力を得ることができる場合もありますが、 Windows ボックスがたくさんあるときには、少々管理の苦労は増えることになります。 ですから、まず PostScript を先に試してみてください。 11.8. Apple から Netatalk は、 Apple クライアントからの EtherTalk 越しの印刷をサポート します。さらなる情報が必要ならば Netatalk HOWTO Page をご覧ください。 (訳注: Linux Netatalk 日本語版 もどうぞ) 11.9. Netware から ncpfs パッケージは、NetWare の印刷キューに対するサービスを提供するため に使用できる pserver という名前のデーモンを含んでいます。私の理解する ところでは、このシステムは Bindery-based NetWare すなわち bindery アク セスを有効にしている 2.x か 3.x, 4.x を必要とします。 ncpfs と pserver プログラムに関してもっと知りたければ、 ncpfs の FTP サイト をご覧ください。 12. Windows 専用プリンタ すでに議論したように、普通のプリンタ言語をしゃべらないため、本質的にサ ポートされていないプリンタがあります。それらのプリンタは、コンピュータ の CPU がビットマップを描画して、一定速度でその画像情報をプリンタに送 るしくみになっています。たまに PCL のような通常の言語をしゃべることも ありますが、それはまれなケースです。通常のパラレル接続を使わずに、ベン ダのドライバによってハードウェアの動作 (もっとも大切なものはフロー制 御) をエミュレートするプリンタさえも存在します (本当にローエンド機種で すが)。 いずれにしても、あなたがそういった欠陥商品のおかげで行き詰まってしまっ たときには、いくつかの方法を試すことができます。 12.1. Ghostscript - Windows 変換ドライバ 印刷を実行する前に、Ghostscript を介してプリントジョブを処理する Windows のプリンタドライバ (mswinpr2) を手に入れることができます (UNIX LPD の if フィルタのようなものです)。また、Windows の GDI コールを利用 してプリントをする新しい Ghostscript ドライバも存在します。これらを使 えば、Windows マシンからWindows 専用プリンタへの PostScript 印刷が、ベ ンダに提供されたドライバを使うことによって可能となるはずです。 それがうまくいったら、今度は Linux から Windows プリンタへネットワーク 経由でプリントする上記の説明に従えば、Unix (そしてほかの Windows、Mac、その他) のホストから欠陥プリンタへとプリントをすることが できるようになります。 念のため断っておきますが、私は Windows 専用プリンタを持っていないた め、この方法を試したことはありません。ですから、ここに書いた方法通りに すればうまくいくかどうかは分かりませんし、ほかの方法を使う必要があるか もしれません。ここに記したすべてのソフトウェアは、Ghostscript のホーム ページから入手可能です (この文書の Ghostscript の章にあるリンクを参 照)。 12.2. pbm2ppa プログラム HP プリンタの中には、「プリント実行機構 (Printing Performance Architecture) 」を使っているものがあります (``we were too cheap to implement PCL'', ``PCL を実装したんだけど、安すぎ'' というのが宣伝文 句)。これは、Tim Norman さんが書いた pbm2ppa 変換ソフトウェアを介し た、まわりくどい方法によってサポートされています。基本的に は、Ghostscript によって PostScript から pbm 形式のビットマップイメー ジを描画して、 pbm2ppa によってプリンタに依存する ppa 形式のビットマッ プ形式に変換し、それをプリンタに送るのです。このプログラムは、今では Ghostscript ドライバ版が入手可能かもしれません。 ppa ソフトウェアは、ppa のホームページ から入手可能です。pbm2ppa は HP 720, 820, 1000 のいくつかのモデルをサポートしています。 ppa のプ リンタサポートについて、より詳しくはパッケージ内の文書を読んでくださ い。 12.3. Lexmarks 安価な Lexmark インクジェットプリンタのほとんどは、メーカ専売の言語を 使っているため、Windows 専用プリンタだということができます。しか し、Henryk Paluch さんが Lexmark 7000 に白黒印刷ができるプログラムを書 きました。もしかしたら、彼がカラー印刷の方法を明らかにして、さらにほか の Lexmark インクジェットへサポートを広げるようになるかもしれません。 より詳しくは、ここ を参 照してください。 同様に、5700 や 1000, 1100, 2070, その他についても新しいドライバがあり ます。入手に関しては、上にある「サポートされているプリンタ」のセクショ ンや私の Web サイトを見てください。 13. ファックスを用いた印刷の方法 13.1. ファックスモデムを使う ファックスの送受信をするためのプログラムはいくつもあります。Sam Leffler さんのHylaFax はその中でももっとも複雑なものの一つです。 ftp.sgi.com から入手できます。このプログラムは、複数モデムの使用から一 斉送信に至るあらゆる機能を備えています。 SuSE (訳注: Linux ディストリビューションの一つ)は Java HylaFax を提供 しています。どの Java プラットホームでも(Windowsおよび Linux を含む) 利用できるということです。 efax も利用可能です。Linux 機の場合にはたいていこちらを選ぶ方が賢明で しょう。これはファックスを送信するだけの簡単なプログラムです。受信には gettyプログラムである mgetty が使えます(モデムによってはボイスメールも 取り扱えます)。 13.2. 遠隔印刷サービスを使う 印刷したいものを電子メールといっしょに送付すれば、どこにあるファックス 機からでもそれを印刷できるというサービスを提供する実験が行われていま す。サポートされているのは PostScript のような精密な形式のものです。世 界中どこでも利用できるというわけにはいきませんが、とても有用なサービス と言えるでしょう。遠隔プリントサービスを介する印刷の詳細については、遠 隔印刷の WWW サイト をご覧下さい。 14. 印刷するブツを作る方法 現在私たちは、まさにソフトウェアのネズミの巣に迷い込んでいます。いくら かの程度の差はありますが、Linux で何種類ものバイナリを走らせることがで きます。Linux/x86、 Linux/Alpha、 Linux/Sparc、 Linux/foo、 iBCS、 Win16/Win32s (dosemu やそのうちに wine を使うことによって)、 Mac/68k (Executor を使用して)、 そして Java です。このドキュメントでは Linux 本体でのやり方と一般的な UNIX のソフトウェアについて述べます。 Linux 本体に関して言うと、選択肢は UNIX 汎用のものにおおむね限られてい ます。 14.1. マークアップ言語(Markup languages) だいたいのマークアップ言語は、大きなプロジェクトや繰り返し作業の多いプ ロジェクトにより適しています。コンピュータに文書のレイアウトを制御さ せ、見栄えを統一したいような場合です。 nroff これは UNIX の最初のマークアップ言語の1つでした。 man page は *roff マクロで書式化された物の最も代表的な例です。nroff に対して 悪口を言う人も多く、少なくとも私にとっては必要以上に難解な構文を 持ちますので、新しく作業をするときの選択肢にはなりにくいです。で すが groff を使用することによって、man page を直接 PostScript に することができるということを知っておく価値はあります。ほとんどの man ではこれは man -t foo | lpr を実行することによって可能です。 TeX TeX とそれのマクロ集である LaTeX は UNIX 上で最も広く使われてい るマークアップ言語の一つです。テクニカルな記述は、しばしば LaTeX で書かれます。その理由としては文章のレイアウトを決める作業を非常 に簡単にして、また依然として、数学的記述を完全にサポートする数少 ないテキスト処理システムの一つだからです。TeX の出力フォーマット は dvi で、dvips か dvilj によって PostScript やヒューレットパッ カードの PCL へと変換できます。TeX か LaTeX をインストールしたい 場合、teTeX グループの全てのパッケージをインストールしてくださ い。これには全てが含まれています。 (訳注:日本語の組版 (縦組み) に対応した TeX としては、 pTeX があります) SGML 少なくとも一つの Unix/Linux 用の free の sgml パーサーがありま す。それは Linuxdoc-SGML ドキュメントシステムの根底を成すもので すが、他の DTD もサポートしています。 HTML 単純な仕事だったら、HTML で書いて Netscape で印刷するだけで十分 だよ、と誰かが示唆してくれました。私はそうは思いませんが、まああ なたにおまかせします。 14.2. WYSIWYG 型ワープロ WYSIWYG 型のワープロには、もはや何の不足もありません。完全なオフィスス イート(office suite)なものもいくつか入手可能で、中には個人利用の場合に はフリーな物もあります(StarOffice)。 StarOffice サン・マイクロシステムズは Linux 用の StarOffice をネットでフリ ーで配布しています。この成熟したオフィススイートは、あなたが期待 する機能すべてを備えているはずで、また値段の点でも非の打ち所があ りません。どのように入手し、インストールするのかが記述された mini-HOWTO がそこらに転がっています。StarOffice は PostScript 、 もしくは PCL を生成しますから Linux 上の他のプログラムで使えてい るプリンタならどこででも動作するはずです。見たところこれは Office クローンで、少々多機能すぎるところがあります; そう、(多機 能すぎについての)、今や同様の実例が二つあるってわけですよ! WordPerfect Corel は Word Perfect 8 基本バージョンの Linux 版をフリーで配布 しています。また Corel Draw と Quattro Pro もポーティングが終わ り次第、同様に配布しようと提示しています。ARM マシンをお持ちの場 合、おそらくこれはベストな選択肢です。Corel は ARM ベースの Netwinder Linux コンピュータを作っており、また全てのプロダクトの ARM Linux 版を提供することはほぼ確実です。完全機能のバージョンや サポート付きのバージョンを買うこともできます。両方一緒に購入する こともできますし、別々にも購入できます。Linux WordPerfect Fonts and Printers ページには WordPerfect を Ghostscript や内蔵のプリンタドライバ (見たところ WP8 (for Linux) についてるプリンタドライバは DOS のものと明らか に同じものです。ですからWP8 にあなたのプリンタのドライバがなけれ ば、DOS 版から取ってきてしまいましょう) で使うときの設定について の情報があります。 Applix Applix はクロスプラットフォーム (各種 UNIX 系、Windows、その他) なオフィススイートで、Applix 社より販売されています。Red Hat と SuSE はそれが単なるおもちゃにすぎなかった時から、自分たちで販売 していました。現在の販売元は Applix に戻っています。 AbiWord AbiWord は GPL ベースの WYSIWYG なワードプロセッサ開発プロジェク トのうちの一つです。これは、ユーザインタフェースを受け持つ実用的 な基本プログラムとして制作されました。 GNOME デスクトップ環境と の統合作業が進んでいます。 Lyx Lyx は LaTeX のフロントエンドで、非常に将来性があります。詳しく は LyX Homepage を参照してください。Klyx と呼ばれる、KDE スタイルの LyX もあります。LyX の著者と KDE の発 案者(instigator)は同一人物です。 Maxwell Maxwell はシンプルな MS RTF フォーマットベースのワープロで、当初 は商用のプロダクトでしたが現在は GPL で配布されています。 The Andrew User Interface System AUIS は ez という WYSIWYG 型のエディターを持ち、これは基本的なワ ープロ機能、HTML 、MIME に完全対応した email 及びニュースグルー プのサポート機能があります。AUIS はもうメンテナンスされていませ ん。 Koffice KDE プロジェクトは完全なオフィススイートを目指しています。私とし ては、まだ晴れ舞台に上がる力が備わっているとは思っていませ ん。KDE のワープロは明らかに LyX を基にしています。 GNOME GNOME プロジェクトも各種 GNU ライセンスのオフィス系ツールを目指 しています。現在はまだ何もありませんが。 他のベンダのかた、どうかお気軽に、製品情報についてお知らせください。 15. 印刷可能なものの画面上でのプレビュー 印刷できるものはほとんど全て画面に表示することもできます。 15.1. PostScript Ghostscript には X11 用のドライバが付属しており、これは PostScript の プレビューアである gv から使うととても便利です。これらのプログラムの最 新版は、PDF ファイルも表示できるはずです。gv は古いプレビューアである "Ghostview" に取って代わっています。 gv の新しいインタフェースは、古く て簡単な Athena ウィジェットを使った Ghostscript の GUI よりもずっと格 好良くて高機能です。 15.2. TeX dvi TeX の dvi ファイル(デバイス独立ファイル, DeVice Independant files) は xdvi を使って X11 上で表示できます。最近のバージョンの xdvi は、Ghostscript を呼び出すことにより、special 命令で埋め込んだ PostScript ファイルを表示することができます。 VT100 用のドライバもあります。これは dgvt と呼ばれます。 Linux と svgalib しか使えなければ、Tmview という手もあります。 15.3. Adobe PDF Adobe の Acrobat Reader には Linux 版があります。これは Adobe の WWW サイト からダウンロードすることができます。 xpdf も利用できます。これはフリーウェアですし、ソースコードも付いてい ます。また現在の Ghostview は、gs を使って X11 上で PDF ファイルを表示 することができるはずです。 16. lpd の下でのシリアルプリンタ 16.1. printcap の設定 /etc/printcap には 5 つの設定項目があり、これを設定することによって、 プリンタが接続されているシリアルポートの設定を全て制御することができま す。 printcap のオンラインマニュアルを読んで、br#, fc#, xc#, fs#, xs# の意味を覚えておいてください。この属性のうち最後の 4 つは、ポートの使 い方の設定を示すフラグ設定です。 br# は単なるボーのレートであり、例え ば `br#9600' のように設定します。 stty の設定を printcap のフラグ設定に書き直すのはとても簡単です。書き 直す必要があるならば、とりあえず stty のオンラインマニュアルを見るとい いでしょう。 stty を使ってプリンタポートを設定し、ファイルを cat コマンドで流し込め ば正しく印刷できるようにしましょう。筆者のプリンタポートの設定では、 `stty -a' の出力は以下のようになります - dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke この設定とシステムの起動時に初期化される設定との違いは、 -clocal, -crtscts, ixon だけです。シリアルポートの設定は、プリンタがどのように フロー制御を行っているのかによって変わってくることがあります。 実際のところ、stty コマンドの使い方はちょっと珍しいものです。stty は stty の標準入力に接続されている端末を操作するので、与えられたシリアル ポートの操作は、先の例のように `<' 文字を使って行います。 stty の設定がうまくできたら(`cat file > /dev/ttyS2' (筆者の場合)でファ イルをプリンタに送れるようになります)、次は /usr/src/linux/include/asm-i386/termbits.h ファイルを見てください。こ のファイルにはたくさんの #define といくつかの構造体が書かれています (このファイルをプリンタに cat コマンドで送り(ちゃんと動きますか?)、こ れを下書き用紙にするとよいでしょう)。以下の部分から始まるセクションを 見つけてください。 /* c_cflag bit meaning */ #define CBAUD 0000017 このセクションには fc# ビットと fs# ビットの意味が列挙されています。読 者の皆さんも、ボーのレートの後にあるそれぞれの名前が stty コマンドの出 力行のどれかと一致することに気づかれることでしょう。これは簡単だろうっ ていいませんでしたっけ? stty コマンドの出力では、これらの設定それぞれの前に「-」が付く点に注意 してください。これらの数(8 進値です)を全て足してみてください。これはク リアしようとしているビットを表すので、その結果は fc# のケーバビリティ となります。もちろん、クリアを行った後に直接ビット値を設定することもで きるので、単に `fc#0177777' を使うこともできます(筆者はそうしていま す)。 今度は、stty コマンドの出力において頭に「-」が付いていない設定(同じセ クションにあるもの)についても同じことを行ってください。本文の例で重要 なのは CS8 (0000060), HUPCL (0002000), CREAD (0000200) です。ボーレー ト(筆者の場合は 0000015)を表すフラグも覚えておきましょう。これらを全部 足し合わせてください。本文の例ではこの値は 0002275 になります。これが fs# の機能です(本文の例では `fs#02275' でうまく動作しています)。 このインクルードファイルの次のセクションである「c_lflag ビット」につい ても、設定とクリアを同じように行ってください。筆者は何も設定しておら ず、 `xc#0157777' と `xs#0' だけを使っています。 16.2. 文字落ちする古いシリアルプリンタ Jon Luckey さんの指摘によると、シリアルインタフェースが安物でバッファ も小さいシリアルプリンタには、フロー制御の際に本当に止まってしまうもの もあるそうです。この文字落ちの問題を回避するために彼が見つけた方法は、 setserial コマンドを使って Linux マシンの 16550 シリアルポートの FIFO を無効にすることです(これを行うには、単に UART のタイプとして 8250 を 指定すれば良いみたいです)。 17. クレジット smbprint の関する情報は、Marcel Roelofs さん() の記 事からいただきました。 Netware に接続されたプリンタを使うための nprint に関する情報は、 Michael Smith さん()にご教示いただきました。 「lpd の下でのシリアルプリンタ」の章は Andrew Tefft さん ()から頂きました。 ガンマ値と gs に関する情報は Andreas さん ()から頂きました。 30 秒間に設定されているシリアルドライバの closing_wait オプションに関 する 2 つの節は、Chris Johnson さん()に頂きました。 Robert Hart さんは、ネットワーク接続された HP マシン向けのプリントサー バの設定に関する素晴らしい説明を送ってくださいました。これは本文書にそ のままの形で載せています。 また、長年に渡って文章中のタイプミス・URL の誤り・間違いを指摘してくだ さった多くの方々に深い感謝を捧げます。 18. 日本語訳について 日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見 は JF プロジェクト 宛に連絡してください。 改訂履歴を以下に示します。 v3.12, 28 July 1997 翻訳: 田所 裕之 v3.29, 9 March 1999 翻訳: o 早川 仁 (1,14 章) o 田中雄一郎 (2,5,6,7 章) o 中野武雄 (3 章) o 伊藤祐一 (4 章) o やまさき しんじ (8,9 章) o 中谷千絵 (10 章) o 野村淳一 (11 章) o 関 勝寿 (12 章) o 佐藤亮一 (13 章) o 藤原輝嘉 (15,16 章) 訳語統一・校正: o 武井 伸光 o 長谷川靖 v3.30, 1999/11/19 追従: 森本 淳