Slackware12でLBP3300が動いたどぉ
CanonのサイトでLBP3300用のLinuxドライバがあるけど、これはFedora、SuSe、Debianといったメジャーなディストロ対応。Slackwareのようなマイナーなディストロには対応していない。というわけで、この週末に汗をかいて対応した。
Slackware11での経験を活かして、まずはccpdを次のように変更。Slackware12では、起動プロセスをRedHat系に準じた方式も採用しているので、ここは要注意。
--- ccpd.orig 2007-04-12 13:37:37.000000000 +0900 +++ ccpd 2007-07-27 10:22:07.000000000 +0900 @@ -2,8 +2,12 @@ # startup script for Canon Printer Daemon for CUPS (ccpd) if [ -f /etc/rc.d/init.d/functions ]; then - . /etc/rc.d/init.d/functions - SYS_F="RH" + if [ -f /etc/slackware-version ]; then + SYS_F="Sl" + else + . /etc/rc.d/init.d/functions + SYS_F="RH" + fi elif [ -x /sbin/startproc ]; then SYS_F="Su" elif [ -x /sbin/start-stop-daemon ]; then @@ -41,6 +45,10 @@ if [ "$SYS_F" = "De" ]; then start-stop-daemon --stop --quiet --oknodo --signal 15 --exec ${DAEMON} echo "." + elif [ "$SYS_F" = "Sl" ]; then + kill -KILL `pidof ${DAEMON}` + [ "$?" = "0" ] && rm -f ${LOCKFILE} + echo else killproc ${DAEMON} [ "$?" = "0" ] && rm -f ${LOCKFILE}
変更したccpdを起動するのに/etc/rc.d/rc.localに次の行を追加。
if [ -f /etc/init.d/ccpd ]; then /etc/init.d/ccpd start fi
最後にfifo0を生成。
mkdir /var/ccpd mkfifo -m 600 /var/ccpd/fifo0 chown lp:lp /var/ccpd/fifo0
これでテスト印刷をすれば動くはずなんだけど、LBP3300はウンともスンとも言わない。ps auで動いているかを確認したところ、captmonが暴走してプロセスがどんどん増えていく。これでは印刷できません。海外のgentooユーザ会で同じような現象が以前にあったようで、同じお呪いを。
mkdir /var/captmon chown lp:lp /var/captmon
これでテスト印刷が成功。Slackware11では安定性に欠ける傾向があったが、実はcaptmonが暴走することが原因だったかも。安定しているのが嬉しくて、何度もテスト印刷を繰り返す。本当はそれが目的じゃないはず。