Einrichtung eines Druckers unter QNX 4.x und Photon 1.12 oder höher

Inhaltsverzeichnis

Eintragsstruktur


Einleitung
Konfiguration unter QNX 4.x
Netzwerkdrucker
Konfiguration für Photon 1.12 oder höher


Eintragstruktur

Die Einträge zu den einzelnen Punkten sind wie folgt gegliedert:

Motivation
Warum der Standardzustand auf Dauer nicht tragbar ist.

Abhilfe
Der prinzipielle Lösungsweg.

Durchführung
Die konkret notwendigen Befehle zur Lösung des Problems.

Fallen und Fußangeln
Unerwünschte Seiteneffekte und/oder notwendige Voraussetzungen.

Weitere Informationen
Wo nachgelesen werden kann, wie es sich im Detail verhält.



Einleitung

Motivation

In dieser Anleitung soll gezeigt werden, wie ein Drucker unter QNX4 und unter Photon 1.12 eingerichtet wird. Mit höheren Versionen sollte das meiste auch funktionieren. Bei Bedarf ist in den entsprechenden Handbüchern nachzuschauen.

QNX4 unterstützt ein Ressourcensharing, d.h. daß prinzipiell jeder Knoten in einem Netzwerk auf die Ressourcen (Festplatte, Modem, Drucker etc.) eines anderen Knoten des Netzwerkes zugreifen kann. Da ein Drucker zur Zeit jeweils nur ein Druckauftrag bearbeiten kann, ist es in einem Netz sinnvoll, einen Druckmanager zu haben, der beliebig eingehende Druckaufträge geeignet verwaltet.

Abhilfe

QNX4 bietet die Möglichkeit einen Spooler einzurichten. Dieser Spooler legt die eingehenden Druckaufträge in temporären Dateien ab, und gibt sie der Reihe nach an den frei gewordenen Drucker aus. Zu diesem Zweck wird auf einem Rechner im Netz der Spooler eingerichtet.


Konfiguration unter QNX 4.x

Durchführung

Der Printspooler für das QNX-Netzwerk wird durch Ausführen des Printservers lpsrvr & gestartet. Dieses Utility sucht und liest als erstes die Datei /etc/config/lpsrvr.node#. Findet es diese Datei nicht, so verwendet es die Datei /etc/config/lpsrvr, die bei der Installation angelegt wird. Diese Datei erwartet einen Postscript Drucker an /dev/par (Achtung: QNX4 legt default /dev/par1 an).

In der Datei /etc/config/lpsrvr.node# wird festgelegt, wie eine Datei beim Drucken umgewandelt wird, und an welchen Drucker sie weitergeleitet wird. Die zu druckenden Dateien liegen in verschiedensten Formaten vor, z.B. ASCII oder Postscipt, und jedes Format muß für jeden Drucker aufbereitet werden, d.h. für jeden Drucker und jedes Format muß eine eigene Queue eingerichtet werden.

Die Umgebungsvariable LPDEST gibt den default (standard) Drucker an. Dieser Drucker wird automatisch benutzt, sobald kein anderer Drucker angegeben wird. Die Umgebungsvariable LPSRVR gibt den default Spooler an. Dieser Spooler wird automatisch benutzt, sobald kein anderer Spooler angegeben wird. Unter Photon lassen sich eigene Printspooler einrichten.

Um die Drucker-Utilities lp, lpc, lprm, lpq verwenden zu können, muß in diesem Fall die Variable LPSRVR auf den Spooler-Namen gesetzt sein, welcher mit diesen Utilities angesprochen werden soll.

Aufbau der Datei /etc/config/lpsrvr.node# für einen Drucker, der das PCL-Format (z.B. HP-Deskjet) verarbeiten kann und an /dev/par1 angeschlossen ist.

  • Defaultname für QNX Printspooler: /qnx/spooler
    []
    sp = /qnx/spooler
    cd = /tmp

  • Dokument im ASCII-Format
    [txt]
    ta = lpt1
    co = pr -h"$(fname)" $(spfile) > $(device)

  • Dokument im PCL-Format
    [pcl]
    ta = lpt1
    co = cat $(spfile) > $(device)

  • Name des Targets
    [-lpt1]
    dv = /dev/par1

In der ersten Zeile stehen leere, eckige Klammern. Ihnen folgt der Spooler-Name und der Verzeichnispfad für temporäre Dateien. Diese temporären Dateien werden nach Beendigung des Druckauftrages automatisch gelöscht. Diese beiden Angaben sind nicht zwingend notwendig. Mit diesen zwei bzw. drei Zeilen weiß der Print-Server, wo er die Print-Queue verwalten und wo er temporäre Dateien erzeugen darf. Darauf folgt in eckigen Klammern der Name einer Print-Queue, welche man nach dem Start des Print-Servers im Verzeichnis /dev/spool wiederfindet. Nachdem die Queue bekannt ist, wird definiert, wie eine Datei bearbeitet wird, um sie dem Drucker anzupassen. In der folgenden Zeile wird das Ziel der Ausgabe (ta = Target), der Drucker, festgelegt. Das Target selbst wird festgelegt durch den, mit einem vorangestellten Minuszeichen, in eckigen Klammern gefaßten, Namen und den folgenden Pfad des Devices, z.B. dv=/dev/par1. Alle Druckaufträge an lpt1 werden über das Device /dev/par1 geleitet werden.

Aufbau für einen Postscript Drucker, der an einen zweiten QNX4 Rechner angeschlossen ist, der sich im QNX-Netzwerk befindet:

  • Dokument im ASCII Format
    [txt2ps]
    ta=lpt2
    co=pr -h"$(fname)" $(spfile) | lps -F0 > $(device)


    (lps ist ein undokumentiertes Utility, welches eine Textdatei in eine Prostscriptdatei umwandelt.)

  • Dokument im Postscript Format und ACSII mit Steuerzeichen
    [ps]
    ta=lpt2
    co=cat $(fname) > $(device)

  • Der Name des Targets
    [-lpt2]
    dv=//2/dev/par1

Weitere Informationen QNX Operating System; Installation & Configuration: Print Spooling
QNX Operating System; Utilities A to M and N to Z

Netzwerkdrucker

Motivation

Will man nun aber einen Drucker unter verschiedenen Betriebssystemen benutzen, so muß dieser als Netzwerkdrucker eingerichtet werden, d.h. er wird nicht über eine parallele Schnittstelle sondern über TCP/IP und eine Netzwerkkarte angesprochen.

Abhilfe

Betrachten wir als Beispiel nun einen Lexmark Drucker. Das copy-out (co) einer Print-Queue kann nun nicht an ein Device gehen, denn der Drucker ist an eine Netzwerkkarte angeschlossen. Daher benötigt man für das 'co' ein kleines Script, welches die Datei spfile an den Drucker sendet. Aus diesem Grunde kann man kein Target und beim 'co' nicht einfach ein cat verwenden.

Durchführung

Die Datei lpsrvr sieht für unser Beispiel nun folgendermaßen aus:

  • Dokument im ASCII Format
    [txt]
    ta=null
    ci=lps -h -F0 $(fname) > $(spfile)
    co=send_lexmark '$(spfile)'

  • Dokument im Postscript Format und ACSII mit Steuerzeichen
    [ps]
    ta=null
    co=send_lexmark '$(spfile)'

  • Dokument unter Photon in Postscript Format
    [lex-photon]
    ta=null
    ci=/usr/photon/bin/Pp.ps < $(fname) > $(spfile)
    co=send_lexmark'$(spfile)'

  • Der Name des Targets
    [-null]
    dv=/dev/null

Es ist zu beachten, daß das Target sich entscheidend geändert hat. Damit die temporäre Datei spfile nicht im System liegen bleibt, wird sie in das Device /dev/null geschrieben. Vorher wird sie allerdings auch an das Script send_lexmark übergeben. Dieses Script sieht folgendermaßen aus:

tftp lexmark > /dev/null <<-THE_END binary put $1 /prt0 THE_END

In der ersten Zeile wird eine tftp Verbindung nach lexmark aufgebaut. Sämtliche Ausgaben der Verbindung werden nach /dev/null geschrieben, bis THE_END erreicht wird. Mit binary wird auf binäre Übertragung umgeschaltet. put schreibt die Datei, welche in $1 übergeben wurde, nach /prt0, was der Speicher des Druckers ist. Ist die Datei vollständig übertragen, erreicht man THE_END und die Verbindung wird beendet.

Weitere Informationen QNX Operating System; Installation & Configuration: Print Spooling
QNX Operating System; Utilities A to M and N to Z
TCP/IP; User's Guide: TCP/IP Utilites

Konfiguration für Photon 1.12 oder höher

Durchführung

Zunächst wird die Datei /usr/photon/print/printers angelegt. Hierfür existiert eine Beispieldatei im Verzeichnis /usr/photon/print. Also kopiert man die Datei printers_samples nach printers und ändert die Angaben gemäß der vorhandenen Drucker. Alle nicht verwendeten Beispiele werden aus ihr entfernt. Diese Datei muß auf jedem Rechner existieren, auf dem unter Photon gedruckt werden soll. Ein symbolischer Link reicht hier nicht aus!

Wenn sie mehrere Drucker und Arbeitsplätze im Haus haben, können sie für jeden Arbeitsplatz eine Menge von Druckern (Einträgen in der Datei) zusammenstellen, die von dem Arbeitsplatz aus benutzt werden dürfen. In der Datei werden neben den Properties (Eigenschaften) der Drucker auch die Standardeinstellungen festgelegt. Wichtiger jedoch ist die Definition des Device, wobei der absolute Pfad zur Queue angegeben wird, z.B.:

Device = //node#/dev/spool/ps.phs

Dabei gibt node# wieder die Knotennummer des Rechners an, auf dem der Printspooler bzw. der Photonprintspooler läuft.

Werden zwei Printspooler verwendet, so muß die Umgebungsvariable LPSRVR gesetzt werden, damit die standard Print-Utilities lp, lpc, lprm, lpq benutzt werden können. Dies geschieht am besten in der /etc/config/sysinit.#node oder der /etc/profile. Dort erhält die Variable den Namen des Printspoolers. Ferner kann dort auch eine default Druckerqueue mit der Variable LPDEST definiert werden. Nun kann man unter Photon mit dem Menü 'Setup Printer' den/die Drucker installieren, mit denen man arbeiten möchte. Dies geschieht mit wenigen Mausklicks, z.B. mit der rechten Maustaste auf den Hintergrund klicken, Setup Printers wählen, Drucker auswählen, Install anklicken, Save. Das gleiche erreicht man im Helpviewer über Print | Install. Dann wird die Datei //node#/etc/config/lpsrvr.node# geändert bzw. angelegt. Dabei bezeichnet node# die Knotennummer des Rechners, auf dem der Printspooler läuft bzw. laufen soll. Es genügt also, wenn es diese Datei nur einmal im gesamten Netz gibt. Im Verzeichnis /usr/photon/print gibt es die Beispieldatei lpsrvr.photon. Die einzelnen Teile dieser Datei haben wir bereits oben besprochen.
Sie können auch einen separaten Printspooler nur für Photon Druckaufträge verwenden. Dafür wird die Datei //node#/etc/config/lpsrvr.photon angelegt. Um den Printspooler nur für Photon zu starten, verwendet man den Befehl:

lpsrvr -f/etc/config/lpsrvr.photon &.

Der so gestartete zweite Printspooler arbeitet konfliktfrei neben dem ersten Printspooler, sofern der erste Printspooler keine Queues enthält, die auch unter Photon arbeiten sollen. Damit aber gedruckt werden kann, muß entweder ein Photonprintspooler gestartet werden oder im Printspooler müssen Photon Print-Queues eingerichtet werden. Schauen wir uns zum Schluß einfach mal die Einträge an, welche über den Spoolernamen und die Targets hinausgehen:

  • Dokument unter Photon in PCL Format
    [phpcl]
    ta=lpt1
    ci=/usr/photon/bin/Pp.pcl < $(fname) > $(spfile)
    co=cat $(spfile) > $(device)

  • Dokument unter Photon in Postscript Format
    [phps]
    ta=lpt2
    ci=/usr/photon/bin/Pp.ps < $(fname) > $(spfile)
    co=cat $(spfile) > $(device)

Weitere Informationen QNX Operating System; Installation & Configuration: Print Spooling
QNX Operating System; Utilities A to M and N to Z
Photon microGUI; Installation & Configuration: Printing Support

© 1999 by SW Datentechnik GmbH