|
Einleitung Dieses HOWTO beschreibt wie man einen über USB angeschlossenen Drucker an einem OpenBSD-Server so einrichtet dass andere User von ihren Arbeitsplatzrechner aus diesen Drucker nutzen können. Die hier beschriebene Vorgehensweise funktioniert für meine Bedürfnisse und ist in dieser Form seit OpenBSD 3.3 im Einsatz. Problemlos lassen sich mit dieser Lösung eine ganze Anzahl von Dateiformaten wie ASCII, PDF, PS, HTML-Seiten und Bilder mit einem nicht PostScript fähigen Drucker auch in Farbe zu Papier bringen. Die vom mir verwendeten Drucker sind HP Tintenstrahldrucker vom Type "`Photo Smart P1000"' und "`DeskJet 990 CXI"'. Beide arbeiten fleißig und problemlos jeweils als zentraler Drucker für das Netzwerk und als direkt angeschlossener Drucker für meine Workstation bzw. für meine Notebook. Voraussetzung Voraussetzung ist zunächst einmal ein fertig installiertest System mit OpenBSD in der Version 3.4. Das System sollte auf dem aktuellen Stand sein (Stable) und dies sollte auch für den Portstree auf dem System gelten, auf dem der Druck-dienst angeboten werden soll. Das System muss natürlich in der Lage sein den angeschlossenen Drucker zu erkennen und sollte dies entsprechend Melden. Ein Blick in die Ausgabe von dmesg auf dem System, an dem der Drucker angeschlossen ist sollte darüber Aufschluss geben. Auf dem Testsystem sieht der relevante Teil der Meldung so aus: . usb0 at uhci0: USB revision 1.0 uhub0 at usb0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered . ulpt0: Hewlett-Packard PhotoSmart P1000, rev 1.00/1.00, addr 2, iclass 7/1 ulpt0: using bi-directional mode ulpt0: at uhub0 port 2 (addr 2) disconnected ulpt0 detached ulpt0 at uhub0 port 2 configuration 1 interface 0 ulpt0: Hewlett-Packard PhotoSmart P1000, rev 1.00/1.00, addr 2, iclass 7/1 ulpt0: using bi-directional mode ulpt0: at uhub0 port 2 (addr 2) disconnected ulpt0 detached ulpt0 at uhub0 port 2 configuration 1 interface 0 ulpt0: Hewlett-Packard PhotoSmart P1000, rev 1.00/1.00, addr 2, iclass 7/1 ulpt0: using bi-directional mode ulpt0: at uhub0 port 2 (addr 2) disconnected ulpt0 detached ulpt0 at uhub0 port 2 configuration 1 interface 0 ulpt0: Hewlett-Packard PhotoSmart P1000, rev 1.00/1.00, addr 2, iclass 7/1 ulpt0: using bi-directional mode Software ARRAY(0x3c284ab4) Alles was wir an Software benötigen, bringt OpenBSD entweder in Form von bereits vorgefertigten Paketen (Packages), oder in Form von so genannten Ports mit. Ports sind Gerüste zum Herunterladen, Patchen, Konfigurieren und Bauen von Anwenderprogrammen. Für dieses HOWTO werde ich das Installieren von Packages beschreiben. Es steht aber jedem frei die aufgeführten Programme aus dem Portstree zu Übersetzen wenn man genügend Zeit und Kaffee hat. Dreh und Angelpunkt des Druck-Dienstes ist das Programm apsfilter. Apsfilter ist seit der Version 3.4 von OpenBSD offiziell dabei. Benutzer die eine ältere Version von OpenBSD verwenden müssen aber nicht auf apsfilter verzichten, sondern können das Programm einfach vom CVS-Server in den Portstree auschecken. Um mit möglichst vielen Formaten fertig zu werden, benötigt Apsfilter noch einige Programme zur Unterstützung. Einige davon werden auf Grund von so genannten Abhängigkeiten beim Installieren von Anwendungen mit installiert andere müssen explizit installiert werden. Es sei an dieser Stelle noch erwähnt das einige dieser Anwendungen davon ausgehen das XF4 auf dem System installiert ist. Auch wenn ein X11 auf einem Server nicht gebraucht wird, so sollte man, um Schwierigkeiten aus dem Weg zu gehen die entsprechenden Pakete beim Aufsetzen des Server mit installieren. Dies ist ja bei den heute gängigen Plattengrössen kein Problem und die entsprechenden Programme finden die benötigten Bibliotheken. Übersicht: * apsfilter
* ghostscript
* ImageMagick
* teTeX
* hpijs
* psutils
* a2ps
Installation Spool-Software OpenBSD wird mit lpd(8) ausgeliefert und damit wir uns nach dem nächsten Reboot nicht wundern warum das Drucken nicht funktioniert, sorgen wir erst einmal dafür das dieser Dienst beim Neustart des Systems auch geladen wird. Dazu nehmen wir in der Datei /etc/rc.conf folgende Änderung vor: $ sudo vi /etc/rc.conf Hier ändern wir den folgenden Eintrag von: lpd_flags=NO # for normal use: "" (or "-l" for debugging) nach: lpd_flags="-l" # for normal use: "" (or "-l" for debugging) Programme Wie bereits erwähnt werden wir zur Installation der Programme Packages nutzen. Diese können wir von einem der vielen OpenBSD-Mirror herunterladen, oder viel eleganter gleich von einem solchem Mirror mit Hilfe von pkg_add(1) installieren. Wir suchen uns also einen Mirror in unserer Nähe z.B. ftp://openbsd.bay13.net/pub/OpenBSD/ und gehen wie folgt vor: # setenv PKG_PATH ftp://openbsd.bay13.net/pub/OpenBSD/3.4/packages/i386 # # pkg_add hpijs-1.3.1.tgz # pkg_add teTeX_base-2.0.2.tgz # pkg_add ImageMagick-5.2.9p0.tgz # pkg_add apsfilter-7.2.5p0.tgz Wenn alles gut gelaufen ist, dann können wir mit pkg_info(1) nach schauen um welche Programme unser System erweitert wurde. Die Liste sollte dann im Wesentlichen die folgenden Programme enthalten: # pkg_info . . psutils-1.17-a4 manipulating PostScript documents a2ps-4.13b-letter format ascii files for printing on PostScript printers ghostscript-7.05p1 GNU PostScript interpreter hpijs-1.3.1 HP Inkjet driver for ghostscript texi2html-1.64 texinfo to HTML converter teTeX_texmf-2.0.2 TeX distribution, common support files t1lib-5.0.0 Type 1 rasterizer library for UNIX/X11 teTeX_base-2.0.2 TeX distribution, executables transfig-3.2.4 tools to convert Xfig's .fig files mpeg_lib-1.3.1 collection of C routines to decode MPEG movies jbigkit-1.2 lossless image compression library ImageMagick-5.2.9p0 display and manipulate images under X11 apsfilter-7.2.5p0 filter to print a wide range of file formats Konfiguration ARRAY(0x3c284c70) Nach der Installation von apsfilter wird folgenden Meldung angezeigt: +--------------- | To configure the apsfilter-7.2.5p0 package, you have to run" | | /etc/apsfilter/basedir/SETUP | | as root. | usw. Das wollen wir jetzt tun. # /etc/apsfilter/basedir/SETUP Als Erstes Akzeptieren wird die Lizenzen (GPL und Postcard License) von apsfilter. Dann arbeiten wir uns bis zu dem Punkt vor, an dem die Berechtigungen für das Verzeichnis /var/spool/lpd angezeigt werden. Wir bestätigen hier einfach mal was dort steht mit (y) obwohl unter OpenBSD 3.4 ein solches Verzeichnis gar nicht existiert und somit auch nicht die Eigentümer daemon und wheel haben kann. Beim nächsten Punkt wählen wir dann (a) oder (o) um einen neuen Drucker einzurichten. Nach dem wir uns für das Einrichten eines neuen Druckers entschieden haben, gelangen wir in das Hauptmenü das wie folgt ausschaut: ========================================================== A P S F I L T E R S E T U P -- MAIN MENUE -- ========================================================== (D) Available Device Drivers in your gs binary (R) Read Ghostscript driver documentation (devices.txt) (1) Printer Driver Selection [$PRINTER] (2) Interface Setup [$INTERFACE] (3) Paper Format [$PAPER] (4) Printing Quality [$QUALITY] (5) Color Mode [$COLOR] (6) Print Resolution in "dots per inch" [$RESOLUTION] (7) Default Printing Method [$METHOD] (A) Abort installation (don't do anything) (Q) ==> Finish installationWir wählen jetzt mit (1) einen Treiber für unseren Drucker aus.
PRINTER DRIVER SELECTION
Please select the type of printer you want to install:
1) PostScript printer (generic)
2) PostScript printer (with ghostscript drivers)
3) printer driver natively supported by ghostscript
4) gimp-print (stp driver; version 4.2.x)
5) gimp-print (ijs driver; version 4.2.1 and later)
6) hpdj
7) pcl3 (successor to hpdj)
8) IBM Omni
9) various HP Deskjet drivers
10) PPA printer
11) official HP DeskJet drivers (hpijs 0.97)
12) official HP DeskJet drivers (hpijs 1.1 and later)
13) Epson printer (official drivers)
14) Lexmark inkjet printer
15) miscellaneous other drivers
16) non-printer devices (caution! -- read the handbook)
0) return to main menu
Für den für das HOWTO verwendeten Drucker ist (12) die richtige Wahl und aus der Liste der verfügbaren Modelle sucht man das passende Modell heraus und gibt die Nummer unter der das Modell aufgeführt ist ein. Danach muss die Auswahl noch einmal bestätigt werden und man gelangt wieder in das Hauptmenü. Jetzt ist es an der Zeit ein Interface auszuwählen und dafür gibt man (2) ein.
--------------------------------------------------------
A P S F I L T E R SETUP -- Interface Setup --
--------------------------------------------------------
The easiest way, to connect a printer to your computer is by
using the parallel interface, because it's usually *faster*,
more standardized and therefore much easier to configure.
When configuring a serial printer, the installation dialogue
asks you many questions about how to configure the serial
interface of your computer, so that it works well with your
printers current settings.
When using the serial interface, then you have to choose special
cables, depending on the communication protocol between computer
and printer (hardware/software handshaking). Many pitfalls here !
currently selected: Interface: [$INTERFACE]
Device: [$DEVICE]
configure local / remote printer
1) local parallel/USB 2) local serial
3) Unix/network printer (lpd) 4) Windows / NT (samba)
5) AppleTalk 6) Novell NetWare
Da unser Beispieldrucker über USB an den Server angeschlossen ist, geben wir (1) ein und gelangen in das nächste Menü.
----------------------------------------------------------------
A P S F I L T E R Parallel Interface Settings -- Device --
----------------------------------------------------------------
Depending on your flavour of Unix, you have to enter the
*full path* to your parallel Interface. In case of trouble please
contact your local system administrator or read your operating
systems technical documentation, FreeBSD handbook or Linux HowTo.
Some examples:
FreeBSD, NetBSD, OpenBSD: LPT1: /dev/lpt0 LPT2: /dev/lpt1
USB under *BSD: /dev/ulpt0 /dev/ulpt1
USB (no reset): /dev/unlpt0 /dev/unlpt1
Linux: LPT1: /dev/lp0 LPT2: /dev/lp1
with devfsd: /dev/printers/0 /dev/printers/1
USB under Linux: /dev/usb/lp0 /dev/usb/lp1
SunOS4: /dev/bpp0 /dev/bpp1
currently selected: Interface: [$INTERFACE]
Device: [$DEVICE]
Für unseren Beispieldrucker muss also an dieser Stelle /dev/ulpt0 eingegeben werden. Dann landen wir auch schon wieder im Hauptmenü. Unter (3) wird jetzt noch das Papierformat a4 ausgewählt und dann sind wir auch schon bereit eine erste Testseite zu Drucken. Das Hauptmenü hat sich nach der Auswahl des Papierformats geändert und bietet nun an, mit der Eingabe von (T) eine Testseite zu Drucken. Wenn wir nun (T) eingeben dann sollte nach einer kurzen Weile die erste Testseite den Drucker verlassen. Unser Beispieldrucker muss dafür eingeschaltet werden, andere Modelle wie der "`HP 990 cxi"' schalten sich von alleine ein. Wenn alles prima funktioniert hat dann können wir nun mit dem Menüpunkt (I) aus dem Hauptmenü unser Ergebnis abspeichern. Dazu muss man noch einen Queue-Namen vergeben unter dem man später den Drucker ansprechen möchte z.B. (lp). Nun kann die Installation mit dem Beenden der Konfiguration (Q) abgeschlossen werden. Eine kleine Anpassung muss allerdings noch gemacht werden. Apsfilter hat freundlicherweise für uns das Verzeichnis /var/spool/lpd angelegt, doch die vergeben Berechtigungen erlauben uns noch nicht zu Drucken. Wir ändern die Berechtigung für /var/spool/lpd/lp so dass wheel in das Verzeichnis schreiben darf. # chmod g+w /var/spool/lpd/lp # # ls -ld /var/spool/lpd/lp/ drwxrwxr-x 2 daemon wheel 512 Dec 17 12:19 /var/spool/lpd/lp/ Damit nun auch noch andere Systeme den unseren angebotenen Druck-dienst nutzen können, müssen wir den Zugriff von diesen Systemen erlauben. Nähere und ausführliche Erläuterungen sind in in lpd(8) und in hosts.equiv(5) zu finden. Für unser Beispiel erlauben wir dem System mit der IP 192.168.10.99 den Zugriff. Dazu tragen wir in die Datei /etc/hosts.lpd diesen Rechner ein. $ cat /etc/hosts.lpd # $OpenBSD: hosts.lpd,v 1.2 1996/07/20 00:28:28 deraadt Exp $ # as described in lpd(8), place one legal access hostname per line 192.168.10.99 Fertig. Um sicher zu stellen dass unser System auch nach einem Neustart funktioniert, rebooten wir das System und überprüfen danach ob der lpd (line printer spooler daemon) gestartet wurde. section Nach dem der Server nun bereit ist Druckaufträge für uns anzunehmen und zu Papier zu bringen, müssen wir noch dafür sorgen das diese Druckaufträge auch den Server erreichen. Dazu müssen wir an unserem Arbeitplatzrechner noch einige wenige Einstellungen vornehmen. Spool-Software Auch auf dem Arbeitsplatzrechner brauchen wir lpd(8) um die Druckaufträge anzunehmen und dann zu unserem Druck-Server zu senden. Also sorgen wir auch hier mit Hilfe einer kleinen Änderung in der Datei /etc/rc.conf dafür dass der lpd(8) bei einem Neustart des Systems geladen wird. Hier ändern wir den folgenden Eintrag von: lpd_flags=NO # for normal use: "" (or "-l" for debugging) nach: lpd_flags="-l" # for normal use: "" (or "-l" for debugging) Die Option -l ist nicht wirklich erforderlich, jedoch gerade zu Beginn der Konfiguration ist es hilfreich wenn mann in den Logfiles nachschauen kann, warum etwas nicht funktioniert. Druckerbeschreibung subsection In die Datei /etc/printcap müssen wir nun noch Eintragen wie unser Drucker heißt und wie und wo er zu erreichen ist. Nähere Erklärungen gibt wie immer die manpage zu printcap(5). Wir waren bei der Wahl des Namens unseres Druckers bzw. des Queue-Namens nicht sehr kreativ und haben zum leichteren Verständnis auf dem Server lp gewählt. Diesen Namen verwenden wir nun auch in der Konfigurationsdatei /etc/printcap auf unserem Arbeitsplatz. Wir tragen also in die Datei /etc/printcap folgendes ein:
lp|remote line printer:\
:lp=:rm=mein_servername:rp=lp:sd=/var/spool/output:lf=/var/log/lpd-errs:
Damit wir unser Werk auch gleich einmal ausprobieren können starten wir den lpd(8) mit dem folgenden Aufruf von Hand: $ sudo /usr/sbin/lpd -l Eine Datei Drucken Jetzt, wo alles bereit ist, drucken wir mit Hilfe von lpr(1) unsere erste Datei remote aus: $ lpr /etc/hosts Wenn dies erfolgreich war, dann wiederholen wir dies mit anderen Dateiformaten wie *.pdf oder *.ps. Wenn man Anwendungen wie Mozilla oder Gimp entsprechend konfiguriert, so ist auch das Ausdrucken von HTML-Seiten und Bildern kein Problem mehr. References 1 OpenBSD Homepage http://www.openbsd.org 2 Apsfilter Homepage http://www.apsfilter.org/ _________________________________________________________ Franz-Dieter Hansen |