Roads to Linux - プリンタの接続
EPSONのLP-800というページプリンタを購入しました。自宅で仕事用の書類を印刷したりするためです。最近はページプリンタも安くなっており、購入したLP-800よりも安い物もあったのですが、印刷スピードの速さと、Windows専用でない点が選択理由となりました。せっかくのページプリンタですから、Linuxサーバに接続できなくては意味がありません。
■printcapの修正
Linuxのlprシステムにプリンタを認識させるため、/etc/printcapの既存のlp定義をコメントアウトし、かわりに以下を追加します。
lp|escpages printer on local port:\
:sd=/var/spool/lp1:\
:lf=/var/log/lp-err:\
:lp=/dev/lp1:sh:\
:if=/usr/sbin/escpagesf:\
:pw#80:pl#66:
ifに指定されているescpagesfは、PJEに含まれるフィルタプログラムです。LP-800でESC/PSが使用できるため、このフィルタを使用します。
sdに指定したスプールディレクトリはSlackwareの場合既存しますが、lfに指定したログファイルは存在しないので、一応touch等で作成しておきます。
次に、コマンドラインから、lprシステムにprintcapの設定変更を通知します。
lpc restart all
これがうまく行けば、実際に印刷を行ってみます。ここではホームディレクトリに存在する日本語(euc)含みのファイルtodo.txtを印刷してみます。
lpr todo.txt
おお、素晴らしい。設定がうまくいった事もさることながら、LP-800の印刷スピードの切れの良さもなかなか。
■Sambaのための修正
Linux上から印刷できるようになったので、次にWindows 95マシン上からSambaを通じて印刷を行えるようにします。
まず、先程修正した/etc/printcapに、新たに以下を追加します。
LP-800|EPSON LP-800:\
:sd=/var/spool/LP-800:\
:lf=/var/log/lp-err-LP-800:\
:lp=/dev/lp1:sh:\
:pw#80:pl#66:
先程のlpエントリとの違いは、フィルタを使用していない点です。escpagesfフィルタは、生のテキストに対してESC/PSコードで加工してプリンタに送るのが役目ですが、Windows側から送られてくる印刷データは、既にWindows上のプリンタドライバによってそういった加工がなされています。これをそのままescpagesfフィルタを含んだlpに送ると、加工を重複して行う事になってしまいますから、ここではWindows上で使うためだけのエントリを新たに作成する事で問題を回避しています。
また、スプールに使用するディレクトリやログファイルも、念のためlpとは異なる場所を指定します。このスプールディレクトリとログファイルは以下のようにして作成し、モード等も既存のlp1に合わせておきます。
cd /var/spool
mkdir LP-800
chmod 775 LP-800
chgrp lp LP-800
touch /var/log/lp-err-LP-800
で、先程と同じくlprシステムに変更通知を行い、次に/usr/local/samba/lib/smb.confを修正し、以下を追加します。
[LP-800]
comment = LP-800 raw printer
path = /var/spool/LP-800
printer name = LP-800
printable = yes
public = yes
writable = no
create mask = 0700
Windows 95側からは、一切加工を行わないLP-800定義以外は見える必要がないため、一般的にSambaの設定例として使われている[printers]は使用せず、明示的にLP-800のみを指定しています。
そして設定変更を反映させるため、ps ax | grep mbdとして、動作中のsmbd/nmbdデーモンを探してkillしておきます
Windows 95マシン側では、ネットワークコンピュータからLP-800を探し、これに対してプリンタ付属のドライバをインストールします。
ドライバインストール後、印刷を行ってみると、テキストもグラフィックも正しく印刷されました。よかったよかった。
LP-800をこのようにネットワークプリンタとして使用する時に残念なのは、付属のEPSON Remote!というユーティリティが使用できない点です。これは、クライアントから、プリンタの状態や紙の残量、トナーの残りまで随時チェックできるというものなのですが、残念ながらプリンタの接続されているマシンのOSはWindowsに限定されているようです。まあ、こういうツールは、あればあったでろくに使わないし、トラブルが起きた時も家庭内LANなのでプリンタまで歩いた方が速かったりするので、素直にあきらめる事にしました。