Freitag, 21. November 2008

nwal003 [printserver unter slugos - cups]

während cups [common unix printing system] quasi out-of-the-box seit mehr als einem halben jahr bei mit unter unslung gelaufen ist, war es zeit diese software entsprechend auf slugos zu portieren. die nachteile von unslung habe ich ja bereits ausführlich erörtert, zudem wollte ich weg von dem heterogenen gemisch, hin zu einem einheitlichen standard meiner nslu2 devices.
vorab sei gesagt, daß die schwierigkeit der implementierung dieser software unter slugos lediglich darauf zu führen ist, daß unterschiedliche installations-anleitungen im internet zu verfügung stehen. es hilft hier nichts einen leitfaden für cups unter unslung oder openslug oder debian zu folgen, vielmehr sind die hinweise aller howto’s entsprechend zu beachten. im folgenden eine anleitung und eine auflistung möglicher fallen wie der druckserver unter slugos von mir implementiert wurde, mit einem augenmerk auf vorhandene anleitungen und deren entscheidenden abweichungen zu slugos.
cups steht als package [ipkg] in den meisten distributionen zur verfügung. Während aber unter unslung ein ‚ipkg install cups’ bereits das fundament darstellt, muß unter slugos zunächst einmal gepatcht werden [optware]. es gibt leider kein ‚stable package cups’, dennoch wird man auch für slugos im ‚optware feed’ fündig. cups [version 1.3.9-1] kann hier [http://ftp.easysw.com/pub/cups/1.3.9/cups-1.3.9-source.tar.bz2] downgeloadet werden. damit aber die ‚package chain’ [abhängigkeiten zu anderen packages] berücksichtigt wird, sollte zunächst ipkg einem manuellen bootstrap unterzogen werden. ipkg in der grundinstallation bietet ‚considered stable packages’ als feed an. ‚ipkg update’ hält unter /var/lib/ipkg listen der angebotenen packete zur verfügung. will man aber auf optware repositories [ /opt/lib/ipkg/lists/ ] zugreifen muß man eben ipkg patchen. die grundanleitung gibt es hier.
somit können wir von nun an lediglich durch setzten der path-variable steuern ob wir ipkg mit stable oder eben unstable [optware ] feeds ausführen wollen. beginnend mit
#export PATH=/opt/bin:/opt/sbin:$PATH
setzten wir entsprechend ipkg auf optware-feed [ /opt/bin/ipkg wird nun zuerst berücksichtigt]. weiter der anleitung folgend:
#ipkg install cups
#ipkg install cups-doc [ die statischen html-seiten des web-guis ]
die abhängigen packages libjpeg, libpng, libtiff, openssl, zlib, openldap-libs werden ohne zutun automatisch installiert! wir wechseln in das konfigurations-directory /opt/etc/cups und erkennen die entscheidende config-datei cupsd.conf . [diese ist sehr groß gehalten, und für den ersten schnellen erfolg ungeeignet – security probleme, basic authentication und location directiven werden hier zur ersten unüberwindlichen hürde !!] wir erstellen eine minimalistische cupsd.conf:

cupsd.conf

[!achtung! – es hat sich herausgestellt, daß eine default policy zieht, falls nicht bestückt wird, die seines zeichen auf basic-authentication beruht. man sieht das sehr schön, wenn man cups hochfährt im error-log.


I [21/Nov/2008:10:14:00 +0100] Creating CUPS default administrative policy:
I [21/Nov/2008:10:14:00 +0100] <Policy default>
I [21/Nov/2008:10:14:00 +0100] <Limit Send-Document Send-URI Cancel-Job Hold-Job Release-Job Restart-Job Purge-Jobs Set-
I [21/Nov/2008:10:14:00 +0100] Order Deny,Allow
I [21/Nov/2008:10:14:00 +0100] Require user @OWNER @SYSTEM
I [21/Nov/2008:10:14:00 +0100] </Limit>
I [21/Nov/2008:10:14:00 +0100] <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer
I [21/Nov/2008:10:14:00 +0100] Order Deny,Allow
I [21/Nov/2008:10:14:00 +0100] AuthType Default
I [21/Nov/2008:10:14:00 +0100] Require user @SYSTEM
I [21/Nov/2008:10:14:00 +0100] </Limit>

wir wollen aber diese erste falle vermeiden und definieren eben schön eine policy mit AuthType None !]
damit ist die cupsd.conf konfiguration abgeschlossen und wir widmen uns der eigentlichen printer-installation und treiberdefinition. der mit cups mitgelieferte printers.conf in /opt/etc/cups/ weist einen hp990c drucker aus. dieser ist natürlich nicht meiner, ich verwende vielmehr einen hp deskjet f2100. wesentlich ist aber die device definition unter slugos. wir werden /dev/lp0 als standard drucker device verwenden, obwohl wir eigentlich keinen lp0 – also eine parallele schnittstelle – haben. unter unslung funktionierte derselbe drucker unter /dev/usb/lp0. für die korrekte umsetzung des notwendigen devices wird ein weiteres kernel module zuständig sein. [! achtung ! ipkg feed ist nun cross oder stable – wir entfernen /opt/bin:/opt/sbin aus dem pfad ]


#export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
#ipkg install kernel-module-usblp
#depmod –a /lib/modules/2.6.21.7/kernel/drivers/usb/class/usblp.ko

und editieren unser printers.conf folgedermassen:
printers.conf

jetzt schreiben wir noch ein startskript damit alles richtig zusammenspielt, dabei verwenden wir das mit cups mitgelieferte template /opt/doc/cups/S88cups.
zwei kleine adaptionen sind hierbei notwendig:

  • ersetzten der printertreiber-definition
    if ( !(lsmod | grep "^printer" -q) ); then
    insmod /opt/lib/modules/printer.o
    fi

    mit siehe [ http://www.nslu2-linux.org/wiki/OpenSlug/InstallCups ]

    if ( !(lsmod | grep "^usblp" -q) ); then
    modprobe usblp
    fi

  • ein vollständiges /etc/init.d/cups.sh script erstellen
    [! Bei einem boot wird das device /dev/lp0 zurückgesetzt auf root:root – wir benötigen aber lp:users ]… somit das vollständige script
    /etc/init.d/cups.sh


und die entsprechende verlinkung
#cd /etc/rc3.d
#ln –s ../init.d/cups.sh S88cups
#ln –s ../init.d/cups.sh K11cups

wir starten cups mittels /etc/init.d/cups.sh start
und testen mit einem browser das web-gui http://nwal003:631 – die cupsoberfläche erscheint.
da ich aber primär über windows drucke, werde ich nicht auf das web-gui eingehen, es soll lediglich einen ersten eindruck ergeben.
unter windows installiere ich den druckertreiber, wir haben kein .ppd file in cups hinterlegt [der printer dient quasi als raw device]. Wir definieren ihn als gültigen tcp-netzwerkdrucker und können ab sofort die druckersteuerung vom druckmanager ausführen.

1 Kommentar:

  1. klasse anleitung. aber stell doch bitte die configs / scripts nicht als images sondern als code ein, dann kann man die sachen leichter für sich verwenden.

    AntwortenLöschen