前書き
以前Fedora Core 3(もう古いですなぁ)で作ったファイルサーバが我が家では活躍している。なにせ、WinとMacが混在した環境で、さらにMacはOS9とOSXとが混在しているのだ。最近になり、ようやく安価なNASでもこんな変な環境に対応したものが出てきたが、そのころはさほど無かったようだし、しかも高かったし、さらに自分自身でLinuxの勉強をするために、ということで、ファイルサーバを作ったのだった。
先日、OS9用にプリンタを購入した。EPSONのPM-D600である。年賀状は未だにOS9のPhotoshop 5で作成しているのだが、以前から使っていたPM-780Cのインクヘッドが不調のために、新しいのを買うことにしたのだった。
#蛇足だが、先日発表されたEPSONの新製品は、OS9非対応となった。時代の流れか…。
このPM-D600もネットワークプリントできるように、EPSONのPA-W11G2やcoregaのCG-FPSU2BDSなどのプリントサーバを用意しようかと思った。しかし、やはりいずれも定価で2万円弱するため、なかなか気軽に手を出せない。そこで、いま機嫌良く動いているファイルサーバにプリントサーバ機能を追加しようと考えたのだった。
自分用のメモ書きだが、他の方にも役立てば、と思い、久しぶりに書き込むことにした。
ファイルサーバへのプリンタ登録など
ひとまず、Winから打ち出すならば、SAMBAを使えばよいのだろうと思い、その関係でググってみた。
まず役立ったのがこのページ。
���v�����^�T�[�o�[�̐ݒ聞���S�҂̂��߂�Linux�T�[�o�[�\�z�u��(CentOS �����T�[�o�[�Ή�)�����֗��T�[�o�[.com��
ひとまずこのページの手順でやっていくことにした。
まずはUSBにPM-D600を接続してみる。さらにファイルサーバにはsshでログインして
$ sudo su -
でrootになる。引き続き、
# printconf
というCUIのプリンタ設定を使ってPM-D600を登録した。登録時のポイントは、プリンタドライバを入れずに直接印刷(RAW)の設定にすること。
#上記のページでは日本語だったが、うちのFC3では英語だった。設定を英語のままにしていたのかな。ちょっと忘れた。
また、
# ntsysv
でCUPSが自動起動するように設定しておく。
SAMBAの設定
上記のページでは、SAMBAの設定はSWATで行うのだが、うちのファイルサーバのSWATのバージョンが低いのか、詳細な設定が行えなかった。このため、/etc/samba/smb.confを直接いじることにした。smb.confの末尾に以下を追加した。
[PM-D600] printer = PM-D600 printable = yes path = /var/spool/samba allow hosts = 192.168.1.0/255.255.255.0
もちろん、allow hostsのところは自分のネットワークにあったサブネットにする必要がある。
Windows側にプリンタドライバを入れる
続いて、Windows XPにPM-D600のドライバをダウンロードしてきて、ドライバのインストールを行った。EPSONのインストーラは、自らのUSBポートにプリンタを接続した状態である、という前提で動くので、大体のドライバファイルがインストールされた時点で接続認識を行う画面になるのだが、そのときに手動認識を選んで逃げるのがポイント。しかし勝手にポートがLPT1であるプリンタドライバが作成されてしまうので即刻削除する。
ネットワークプリンタのドライバ設定
上記のページの「WindowsOSクライアントへのプリンタドライバの導入」を参考にして、ひとまずファイルサーバに見える\\fileserver\PM-D600をダブルクリックすると、ドライバをインストールするダイアログが出るので、それに従って設定していく。XPがSP2であるためか、セキュリティの警告が出た後にドライバのインストール要求、それから機種選択という順番で設定を行っていく。
ユーザ設定
これでもう設定できたも同然、簡単なもんだ、と思ったのだが、そうは問屋が卸さない。
テストプリントしようとするも、アクセス拒否に遭う。上記のページでも「printer adminに記述されていないユーザからはプリントできないことがある」などの記載があるため、また/etc/samba/smb.confの末尾を若干変更した。
[PM-D600] printer = PM-D600 printable = yes path = /var/spool/samba allow hosts = 192.168.1.0/255.255.255.0 printer admin = rio,campos,@riocampos
ちなみにユーザが複数有る場合はカンマで区切っていき、グループを登録したい場合は@のあとにグループ名を入れるようである。グループは要らないと思うが、何となく設定してみた。もしかすると、グループだけでいけるかもしれない。
CUPS設定
これで大丈夫、と思ったら、アクセス拒否は無くなったのだが、やはり打ち出せない。
ものの本をぱらぱら見てみると、プリントサーバはSAMBAからCUPSに引き渡してプリントアウトするので、CUPSが動く設定にする必要がある、とのこと。
ということで、再度検索。
http://iaq.homeip.net/cups_printer.php
これに従い、まず /etc/cups/mime.typesの末尾にあるRaw Print関係でコメントアウトしてあるapplication/octet-streamを有効にする。
######################################################################## # # Raw print file support... # # Uncomment the following type and the application/octet-stream # filter line in mime.convs to allow raw file printing without the # -oraw option. # application/octet-stream
また/etc/cups/mime.convsの、やはり末尾にあるRaw Print関係でコメントアウトしてある部分を有効にする。
######################################################################## # # Raw filter... # # Uncomment the following filter and the application/octet-stream type # in mime.types to allow printing of arbitrary files without the -oraw # option. # application/octet-stream application/vnd.cups-raw 0 -
さらに、おそらくここが勘所だと思うのだが、/etc/cups/cupsd.confでlocalhostだけが許可されているアクセス制限をLAN内に拡張する。なお、ここに関してはこのページが参考になった。CUPSの設定にはlocationという概念があることが分かったのは非常に有りがたかった。
CUPSでLinuxのプリンタ (PIXUS) を共有する | Netsphere Laboratories
まず1つ目。
Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From @LOCAL
これはルート(/)のlocationの設定変更、と思われる。つまり設定全般におけるアクセス許可。Allow From @LOCALを追加した。Allow From 192.168.1.0/24でも良いと思うのだが、@LOCALという簡単な記述法があったので使ってみた。
2つ目。
# # You definitely will want to limit access to the administration functions. # The default configuration requires a local connection from a user who # is a member of the system group to do any admin tasks. You can change # the group name using the SystemGroup directive. # AuthType Basic AuthClass System ## Restrict access to local domain Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From @LOCAL #Encryption Required
こちらは/adminにおけるアクセス許可。やはりAllow From @LOCALを追加した。
CUPSが…動いてない(;_;)
この後にCUPSを再起動すれば、変更した設定が読み込まれて万々歳、のはずなのだが、問題がまだ残っていた。なぜかうちのファイルサーバでは、CUPSが動いていなかった。結果から言えば/etc/rc.d/init.d/cupsと/etc/rc.d/init.d/cups-config-daemonが実行可能になっていなかった。
ということでchmod 755として実行可能にして
# /etc/init.d/cups restart
とやれば、ちゃんとCUPSが起動してくれた。
#こうあっさり書いているが、どうすれば動いてくれるのか3時間ぐらい悩んだ。Linuxさわるのは久しぶりだったので。CUPSの再インストールもしようとしたのだが、makeに失敗したので中断した。ひとまず、かなりしんどかった。
プリントできた
ここまで設定して、ようやくSAMBAからCUPS経由で打ち出しが出来た。
CUPS直接で
しかし、SAMBAのネットワークプリンタだと、なぜかやたらと遅い。CUPSで直接打ち出せるならSAMBAを使う必要もない。ということで先ほどのCUPSでLinuxのプリンタ (PIXUS) を共有する | Netsphere Laboratoriesを参照しつつ、プリンタドライバの設定を行った。しかし、なんだか上手くいかなかったので、ちょっといじってみた。/etc/cups/cupsd.confの末尾に、自動的に作られた設定だと思われる記述があった。
# Lines below are automatically generated - DO NOT EDITOrder Deny,Allow Deny From All Allow From 127.0.0.1 AuthType None Browsing On BrowseProtocols cups BrowseOrder Deny,Allow BrowseAllow from @LOCAL Listen 127.0.0.1:631
この/printers/PM-D600のlocationにAllow From @LOCALを追加した。
また、/etc/cups/cupsd.confの中程に
######## Network Options ######## # # Ports/addresses that we listen to. The default port 631 is reserved # for the Internet Printing Protocol (IPP) and is what we use here. # # You can have multiple Port/Listen lines to listen to more than one # port or address, or to restrict access: # # Port 80 # Port 631 # Listen hostname # Listen hostname:80 # Listen hostname:631 # Listen 1.2.3.4 # Listen 1.2.3.4:631 #
というのがあったので、
Listen 192.168.1.xx:631
というのを追加してみた。(もちろんファイルサーバのIPアドレス)
これだとSAMBA経由に比べてやたら速い。ありがたい。
プリンタ電源切ったら設定が消えた
しかし。
やはり
# Lines below are automatically generated - DO NOT EDIT
と書いてあるところをいじって設定したためか、翌日にはAllow From @LOCALが消えていた。
#いや、もしかしたら/etc/rc.d/init.d/cups-config-daemonって何だろう、と思って実行したせいかな?よく分かりません。
ということで、以下のような場所に移し替えてみた。
## # You may wish to limit access to printers and classes, either with Allow # and Deny lines, or by requiring a username and password. # Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From @LOCAL AuthType None Browsing On BrowseProtocols cups BrowseOrder Deny,Allow BrowseAllow from @LOCAL Listen 127.0.0.1:631 Listen 192.168.1.xx:631
もちろん別の場所に書いていたListen 192.168.1.xx:631は削除した。
ドライバ
まずはドライバ探し。Gimp-PrintというのでEPSONのプリンタへの出力が出来ることは知っていたので、Gimp-Printの最新版を探してみた。すると、名前が変わっていた。
Gutenprint - Top Quality Printer Drivers download | SourceForge.net
これをインストールすると、ちゃんとPM-D600のドライバも入っている。ありがたい。
プリンタ設定ユーティリティの設定
続いて、CUPSでの出力。ユーティリティのプリンタ設定ユーティリティを起動し、optionキーを押しながら「追加」ボタンをクリックする。そうすると「詳細」という項目が選択できる。
#内容は異なるが3/3 古いプリンタをMacで使う [Mac OSの使い方] All Aboutに「詳細」項目が表示されているので参考に。
ここで「装置名」から「Internet Printing Protocol(IPP使用)」または「Internet Printing Protocol(HTTP使用)」を選択し、装置名に「PM-D600」、装置のURIに「ipp://192.168.1.xx:631/printers/PM-D600」(IPPの場合。HTTPの場合には冒頭をhttp://に変更する)というように入力する。また、「プリンタの機種」はEPSONを選択し、さらにその下に出てくる名前から「Epson PM D600 - CUPS+Gutenprint v5.0.0」を選択した。
色ずれ
これでMac OSXからPM-D600へ印刷が出来るようになった。たしかにできる。
しかし。色ずれが生じている。PM-D600は4色インクなのだが、黒と青(シアン)は正しい位置に印刷されているが、赤(マゼンタ)はその1cmほど下、黄色はさらにその1cmほど下に印刷されている…。これでは使えん。
'08/12/25追記:
EPSON Stylus Photo R240を選択することで色ずれなく印刷できた!
Gutenprint 5.2.3でLeopardからSMB経由でプリンタPM-D600へ印刷 - 子子子子子子(ねこのここねこ)