Slackware12でLBP3300が動いたどぉ

CanonのサイトでLBP3300用のLinuxドライバがあるけど、これはFedoraSuSeDebianといったメジャーなディストロ対応。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が暴走することが原因だったかも。安定しているのが嬉しくて、何度もテスト印刷を繰り返す。本当はそれが目的じゃないはず。