10.3. Grund-Konfiguration

Warnung: Mit FreeBSD 8.0 wurden die Gerätedateien für serielle Ports von /dev/ttydN in /dev/ttyuN umbenannt. Setzen Sie noch FreeBSD 7.X ein, müssen Sie die Befehle in den folgenden Abschnitten entsprechend anpassen.

Um einen Drucker mit dem LPD-Drucksystem benutzen zu können, müssen Sie sowohl Ihren Drucker und die Drucker-Schnittstelle als auch das LPD-Drucksystem konfigurieren. Dieser Abschnitt beschreibt zwei Konfigurationen:

10.3.1. Einfache Drucker-Konfiguration

Dieser Abschnitt beschreibt, wie Sie die LPD-Software konfigurieren, um Ihren Drucker zu benutzen. Diese Grundlagen werden erklärt:

Wenn Sie einen Drucker einrichten möchten, der über das Netzwerk angeschlossen ist (anstatt über die serielle oder parallele Schnittstelle), lesen Sie bitte Abschnitt Drucker mit direkter TCP-Schnittstelle.

Obwohl dieser Abschnitt “Grund-Konfiguration” heißt, ist die Konfiguration relativ komplex. Es ist vergleichsweise schwierig, einen Drucker mit Ihrem Computer und dem LPD-Drucksystem zu verbinden. Die weiteren Optionen, wie Kopfzeilen oder Deckblätter, sind einfach zu konfigurieren, sobald die Grund-Konfiguration erfolgreich abgeschlossen ist.

10.3.1.1. Hardware-Konfiguration

Dieser Abschnitt beschreibt, über welche Schnittstellen Sie einen Drucker mit Ihrem Computer verbinden können. Er behandelt sowohl die Schnittstellen und Kabel, als auch die Kerneloptionen, die Sie benötigen, um FreeBSD mit Ihrem Drucker kommunizieren zu lassen.

Wenn Sie Ihren Drucker bereits erfolgreich mit einem anderen Betriebssystem auf Ihrem PC eingesetzt haben, können Sie wahrscheinlich mit dem Abschnitt Software-Konfiguration fortfahren.

10.3.1.1.1. Schnittstellen und Kabel

Praktisch alle Drucker unterstützen mindestens eine dieser Schnittstellen:

  • Seriell angeschlossene Drucker werden über eine serielle Schnittstelle (auch RS-232 oder COM-Schnittstelle genannt) mit Ihrem Computer verbunden. Diese Schnittstelle wird von vielen unterschiedlichen Systemen verwendet. Serielle Kabel sind leicht erhältlich und können auch einfach selbst hergestellt werden. Einige Drucker erfordern möglicherweise ein spezielles Kabel oder besondere Kommunikationseinstellungen. Die meisten seriellen Schnittstellen von PCs besitzen eine maximale Datenübertragungsrate von 115200 bps; zum Ausdruck großer Grafiken sind serielle Drucker daher ungeeignet.

  • Parallel angeschlossene Drucker werden über eine parallele Schnittstelle mit Ihrem Computer verbunden. Diese Schnittstelle wird hauptsächlich von PCs und Workstations benutzt. Die Schnittstelle bietet eine höhere Datenübertragungsrate als serielle Schnittstellen. Kabel sind leicht erhältlich, sind aber vergleichsweise schwer selbst herzustellen. Üblicherweise brauchen keine Kommunikationsparameter festgelegt zu werden; dies macht die Einrichtung sehr einfach.

    Die parallele Schnittstelle wird auch als “Centronics”-Schnittstelle bezeichnet, nach dem Namen des Steckverbinders, der hier häufig zum Einsatz kommt.

  • USB-Schnittstelle (Universal Serial Bus) bieten noch höhere Geschwindigkeiten als parallele Schnittstellen oder serielle RS-232-Schnittstellen. USB-Kabel sind einfach und billig. Zum Drucken ist die USB-Schnittstelle besser geeignet als serielle oder parallele Schnittstellen, auf vielen UNIX® Systemen werden USB-Schnittstellen jedoch nur unzureichend unterstützt. Um Probleme zu vermeiden, sollten Sie sich einen Drucker anschaffen, der sowohl eine USB-Schnittstelle als auch eine parallele Schnittstelle besitzt (viele Drucker besitzen heute beide Schnittstellen).

Im Allgemeinen versenden parallele Schnittstellen Daten nur in eine Richtung (vom Computer zum Drucker), serielle Schnittstellen und USB-Schnittstellen versenden Daten in beide Richtungen. Moderne parallele Schnittstellen (EPP and ECP) übertragen Daten bi-direktional nach dem Standard IEEE 1284.

Ein Drucker kann auf zwei Arten bi-direktional angesprochen werden. Die erste Methode benutzt einen Druckertreiber, der die herstellerspezifische Sprache des Druckers beherrscht. Diese Methode wird oft mit Tintenstrahl-Druckern eingesetzt und dazu benutzt, den Füllstand der Tintenpatronen und andere Status-Informationen auszugeben. Die zweite Methode wird benutzt, wenn der Drucker PostScript® beherrscht.

Da ein PostScript-Druckauftrag ein komplettes Programm ist, kann es auch Daten an den Computer zurückliefern, ohne überhaupt eine Seite Papier zu bedrucken. Auf diesem Wege werden auch Probleme wie z.B. ein Papierstau vom Drucker an den Computer übermittelt. Darüberhinaus ist dies die effektivste Methode, um die tatsächlich gedruckte Anzahl an Seiten vom Drucker abzufragen: ein PostScript-Programm ermittelt jeweils vor und direkt nach einem Druckauftrag den Seitenzähler des Druckers, und vergleicht die beiden Zählerwerte.

10.3.1.1.2. Parallele Schnittstellen

Um einen Drucker mit paralleler Schnittstelle an Ihren Computer anzuschließen, verbinden Sie den Drucker mit einer parallelen Schnittstelle Ihres Computers. Die Dokumentation zu Ihrem Drucker oder Computer sollte Ihnen hier weiterhelfen.

Notieren Sie sich, mit welcher parallelen Schnittstelle des Computers Sie den Drucker verbunden haben. Die meisten Computer haben lediglich eine parallele Schnittstelle. Der FreeBSD-Gerätename der ersten Schnittstelle lautet ppc0, der der zweiten ppc1, und so weiter. Der Gerätename für den Drucker an der ersten parallelen Schnittstelle folgt dem selben Schema und lautet /dev/lpt0, usw.

10.3.1.1.3. Serielle Schnittstellen

Um einen Drucker mit serieller Schnittstelle an Ihren Computer anzuschließen, verbinden Sie den Drucker mit einer seriellen Schnittstelle Ihres Computers. Die Dokumentation zu Ihrem Drucker oder Computer sollte Ihnen hier weiterhelfen.

Sollten Sie sich nicht sicher sein, welches das “richtige Kabel” ist, können Sie eine dieser Alternativen ausprobieren:

  • Ein Modemkabel verbindet alle Anschlüsse an einem Ende des Kabels eins-zu-eins mit den Anschlüssen am anderen Ende des Kabels. Ein solches Kabel wird auch als (engl.) “DTE-to-DCE-” oder “DEE-zu-DÜE-”Kabel bezeichnet.

  • Ein Nullmodemkabel verbindet einige Signale eins-zu-eins, andere über Kreuz (z.B. Sende- und Empfangsleitung), und verbindet einige weitere direkt im Stecker miteinander. Ein solches Kabel wird auch als (engl.) “DTE-to-DTE-” oder “DEE-zu-DEE-”Kabel bezeichnet.

  • Ein Serielles Druckerkabel schließlich, das für einige spezielle Drucker benötigt wird, verbindet zusätzliche Signale miteinander, anstatt sie im Stecker zurückzuführen.

Sie sollten auch die Kommunikationsparameter am Drucker einstellen; üblicherweise gibt es dazu DIP-Schalter, oder eine Option in der Menüführung am Drucker. Wählen Sie die höchste Bitrate (auch als bps Bits pro Sekunde oder Baudrate bezeichnet), die sowohl Ihr Drucker als auch Ihr Computer unterstützen. Wählen Sie 7 oder 8 Bits, gerade, ungerade oder keine Parität, und ein oder zwei Stoppbits. Wählen Sie die Art der Flusssteuerung: keine, XON/XOFF (auch als “in-band-” oder “Software”-Flusssteuerung bezeichnet), oder Hardware. Notieren Sie sich diese Einstellungen, damit Sie sie später bei der Software-Konfiguration zur Verfügung haben.

10.3.1.2. Software-Konfiguration

Dieser Abschnitt beschreibt die notwendigen Konfigurationsschritte, damit Sie mit dem FreeBSD-LPD-System drucken können.

Diese Schritte müssen Sie ausführen:

  1. Konfigurieren Sie Ihren Kernel, soweit notwendig, um die Schnittstelle benutzen zu können, an die Ihr Drucker angeschlossen ist. Abschnitt Kernel-Konfiguration erklärt, welche Optionen Sie benötigen.

  2. Konfigurieren Sie die Kommunikationseinstellungen für die parallele Schnittstelle, sofern Sie sie benutzen. Abschnitt Kommunikationseinstellungen für die parallele Schnittstelle enthält die Details.

  3. Prüfen Sie, ob Sie Daten an den Drucker senden können. Abschnitt Prüfen der Drucker-Kommunikation führt eine Reihe von Möglichkeiten auf.

  4. Konfigurieren Sie LPD für Ihren Drucker, indem Sie die Konfigurationsdatei /etc/printcap anpassen. Details dazu finden Sie im Abschnitt LPD aktivieren: die /etc/printcap-Datei.

10.3.1.2.1. Kernel-Konfiguration

Der Betriebssystem-Kernel ist für eine bestimmte Kombination aus Geräten kompiliert. Dies schließt Ihre seriellen oder parallelen Schnittstellen mit ein. Dementsprechend kann es notwendig sein, die Kernelkonfiguration um weitere Schnittstellen zu erweitern.

So können Sie prüfen, ob Ihr Kernel die serielle Schnittstelle unterstützt, an die Sie den Drucker angeschlossen haben:

# grep sioN /var/run/dmesg.boot

Ersetzen Sie N durch die Nummer der seriellen Schnittstelle, beginnend bei Null. Wenn Sie eine Ausgabe ähnlich der folgenden erhalten, unterstützt ihr Kernel diese Schnittstelle:

sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A

Erhalten Sie keine Ausgabe, oder eine Fehlermeldung, wird die Schnittstelle nicht korrekt unterstützt.

So können Sie prüfen, ob Ihr Kernel die parallele Schnittstelle unterstützt, an die Sie den Drucker angeschlossen haben:

# grep ppcN /var/run/dmesg.boot

Ersetzen Sie N durch die Nummer der parallelen Schnittstelle, beginnend bei Null. Wenn Sie eine Ausgabe ähnlich der folgenden erhalten, unterstützt ihr Kernel diese Schnittstelle:

ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold

Erhalten Sie keine Ausgabe, oder eine Fehlermeldung, wird die Schnittstelle nicht korrekt unterstützt.

Gegebenenfalls müssen Sie Ihren Kernel umkonfigurieren und neu kompilieren, damit die von Ihnen gewählte Schnittstelle unterstützt wird.

Um Unterstützung für eine serielle Schnittstelle hinzuzufügen, lesen Sie bitte Kapitel Konfiguration des FreeBSD Kernels. Um eine parallele Schnittstelle hinzuzufügen, lesen Sie bitte ebenfalls jenes Kapitel als auch den folgenden Abschnitt Kommunikationseinstellungen für die parallele Schnittstelle.

10.3.1.3. Kommunikationseinstellungen für die parallele Schnittstelle

Wenn Sie die parallele Schnittstelle zur Kommunikation mit Ihrem Drucker benutzen, haben Sie die Wahl zwischen Interrupt-gesteuerter oder Polling-Datenübertragung. Der generische Druckergerätetreiber lpt(4) in FreeBSD benutzt das ppbus(4)-System, das die parallele Schnittstelle mithilfe des ppc(4)-Treibers steuert.

  • Die Interrupt-gesteuerte Datenübertragung ist die Voreinstellung im GENERIC-Kernel. Der Treiber benutzt eine IRQ-Leitung, um zu erfahren, wann der Drucker weitere Daten empfangen kann.

  • Bei der Polling-Methode prüft der Treiber in regelmäßigen Abständen, ob weitere Daten übertragen werden können.

Die Interrupt-gesteuerte Methode ist überlicherweise schneller und verbraucht weniger Rechenzeit als die Polling-Methode, es wird jedoch eine eigene IRQ-Leitung für die Schnittstelle benötigt. Darüberhinaus kann es mit einigen Druckermodellen zu Problemen kommen, wenn die Interrupt-gesteuerte Übertragung zum Einsatz kommt.

Die können die Kommunikationseinstellung entweder in der Kernel-Konfiguration wählen, oder mittels des lptcontrol(8)-Programms zur Laufzeit einstellen.

So legen Sie die Kommunikationseinstellung in der Kernel-Konfiguration fest:

  1. Ändern Sie Ihre Kernel-Konfigurationsdatei. Finden Sie die Zeile, die mit device ppc0 beginnt. Wenn Sie die zweite parallele Schnittstelle konfigurieren möchten, suchen Sie nach device ppc1, für die dritte Schnittstelle ppc2, usw.

    • Um die Interrupt-Steuerung zu aktivieren, passen Sie die folgende Zeile an:

      hint.ppc.0.irq="N"
      

      Ersetzen Sie N durch die Nummer der IRQ-Leitung, die dieser parallelen Schnittstelle zugewiesen ist. Stellen Sie sicher, dass Ihre Kernel-Konfigurationsdatei den ppc(4)-Treiber enthält:

      device ppc
      
    • Wenn Sie den Polling-Modus verwenden möchten, entfernen Sie die folgende Zeile aus /boot/device.hints:

      hint.ppc.0.irq="N"
      

      Sollte der Treiber die Schnittstelle dennoch im Interrupt-Modus betreiben, könnte dies an der Aktivierung durch das acpi(4)-System in FreeBSD liegen. Bitte prüfen Sie die ACPI- und die BIOS-Konfiguration.

  2. Wenn Sie Ihre Kernel-Konfigurationsdatei angepasst haben, kompilieren und installieren Sie nun einen neuen Kernel. Das Kapitel Konfiguration des FreeBSD-Kernels enthält weitere Details dazu.

So können Sie die Kommunikationseinstellung mitlptcontrol(8) ändern:

  1. Um die Interrupt-Steuerung für die Schnittstelle N zu aktivieren, geben Sie ein:

    # lptcontrol -i -d /dev/lptN
    
  2. Um den Polling-Modus für die Schnittstelle N zu aktivieren, geben Sie ein:

    # lptcontrol -p -d /dev/lptN
    

Sie können diesen Befehl in /etc/rc.local aufnehmen, damit er bei jedem Systemstart automatisch ausgeführt wird. lptcontrol(8) enthält weitere Informationen.

10.3.1.4. Kommunikation mit den Drucker prüfen

Bevor Sie mit der Konfiguration des LPD-Drucksystems fortfahren, sollten Sie sicherstellen, das Sie erfolgreich Daten an Ihren Drucker senden können. Es ist deutlich einfacher, Kommunikations- und Konfigurationsprobleme unabhängig voneinander zu lösen.

Der Drucker kann mit einem Probeausdruck getestet werden. Für alle Drucker, die normalen Text unmittelbar drucken können, bietet sich das Programm lptest(1) an: es produziert alle 96 druckbaren ASCII-Zeichen auf 96 Zeilen.

Für einen PostScript-Drucker (oder andere Drucker, die eine Seitenbeschreibungssprache verwenden) muss ein passendes Programm an den Drucker gesendet werden, z.B. dieses:

%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Funktioniert dieser Drucker?) show
showpage

Sie können dieses ProstScript-Programm in einer Datei speichern, und mit den Beispielen in den folgenden Abschnitt verwenden.

Anmerkung: Nicht alle Drucker, die eine Seitenbeschreibungssprache verwenden, benötigen ein Test-Programm: z.B. HPs PCL (das auch in vielen kompatiblen Druckern zum Einsatz zu kommt), versteht normalen Text. Besondere Escape-Sequenzen werden benutzt, um die erweiterten Möglichkeiten aufzurufen. PostScript-Drucker können in der Regel keinen normalen Text direkt verarbeiten, weil sie ein PostScript-Programm erwarten, das eine Seite produziert.

10.3.1.4.1. Einen Paralleldrucker prüfen

Dieser Abschnitt führt vor, wie Sie die Kommunikation mit Ihrem Drucker über die parallele Schnittstelle prüfen können.

So testen Sie einen Drucker an einer parallelen Schnittstelle:

  1. Werden Sie root mithilfe des su(1)-Befehls.

  2. Senden Sie Testdaten an den Drucker.

    • Wenn Ihr Drucker reinen Text direkt drucken kann, verwenden Sie lptest(1):

      # lptest > /dev/lptN
      

      Ersetzen Sie N durch die Nummer der parallelen Schnittstelle, an die der Drucker angeschlossen ist (angefangen bei Null).

    • Wenn Ihr Drucker PostScript (oder eine andere Seitenbeschreibungssprache) versteht, senden Sie ein passendes Testprogramm an den Drucker. Geben Sie folgenden Befehl ein:

      # cat file > /dev/lptN
      

      Ersetzen Sie N durch die Nummer der parallelen Schnittstelle, an die der Drucker angeschlossen ist (angefangen bei Null). Geben Sie nun das Testprogramm ein, Zeile für Zeile. Kontrollieren Sie jede Zeile, bevor Sie die Eingabetaste drücken: Sie können die Zeile später nicht mehr ändern. Zum Schluss tippen Sie Ctrl+D. Wenn Sie ein anderes Zeichen nutzen, um das Ende der Datei anzuzeigen, müssen Sie natürlich die entsprechende Tastenkombination für dieses Zeichen betätigen.

      Sie können das Testprogramm auch in einer Datei speichern, und dann diesen Befehl aufrufen:

      # cat Testprogramm > /dev/lptN
      

      Ersetzen Sie Testprogramm durch den Dateinamen, unter dem Sie das Testprogramm gespeichert haben.

Der Drucker sollte einige Zeilen oder eine Seite drucken. Machen Sie sich keine Sorgen über falsche Formatierungen: die Software-Konfiguration enthält Informationen zum Umformatieren von Druckaufträgen.

10.3.1.4.2. Einen seriellen Drucker prüfen

Dieser Abschnitt führt vor, wie Sie die Kommunikation mit Ihrem Drucker über die parallele Schnittstelle prüfen können.

So testen Sie einen Drucker an einer seriellen Schnittstelle:

  1. Werden Sie root mithilfe des su(1)-Befehls.

  2. Ändern Sie die Datei /etc/remote. Fügen Sie den folgenden Eintrag hinzu:

    printer:dv=/dev/port:br#bps-rate:pa=parity
    

    Ersetzen Sie Gerät durch den Gerätenamen der seriellen Schnittstelle (ttyu0 für die erste, ttyu1 für die zweite, usw.), Baudrate ist die Geschwindigkeit und Parität die Parität (even für gerade, odd für ungerade oder none für keine), die Sie am Drucker eingestellt haben.

    Hier ein Beispieleintrag für einen Drucker, der über die dritte serielle Schnittstelle angeschlossen ist, mit 19.200 Baud kommuniziert und keine Parität verwendet:

    printer:dv=/dev/ttyu2:br#19200:pa=none
    
  3. Verbinden Sie sich mit dem Drucker über den Befehl tip(1):

    # tip printer
    

    Kommt es hierbei zu einer Fehlermeldung, ändern Sie den Eintrag in /dev/cuaaN und verwenden Sie /dev/cuaaN statt /dev/ttyuN.

  4. Senden Sie Testdaten an den Drucker.

    • Wenn Ihr Drucker reinen Text direkt drucken kann, verwenden Sie lptest(1):

      % $lptest
      
    • Wenn Ihr Drucker PostScript (oder eine andere Seitenbeschreibungssprache) versteht, senden Sie ein passendes Testprogramm an den Drucker. Geben Sie das Testprogramm ein, Zeile für Zeile. Kontrollieren Sie jede Zeile, bevor Sie die Eingabetaste drücken: Sie können die Zeile später nicht mehr ändern. Zum Schluss tippen Sie Control-D.

      Sie können das Testprogramm auch in einer Datei speichern, und dann diesen Befehl aufrufen:

      % >Testprogramm
      

      Ersetzen Sie Testprogramm durch den Dateinamen, unter dem Sie das Testprogramm gespeichert haben. Nachdem tip(1) die Datei gesendet hat, tippen Sie Control-D.

Der Drucker sollte einige Zeilen oder eine Seite drucken. Machen Sie sich keine Sorgen über falsche Formatierungen: die Software-Konfiguration enthält Informationen zum Umformatieren von Druckaufträgen.

10.3.1.5. LPD aktivieren: die /etc/printcap-Datei

Nachdem Sie Ihren Drucker angeschlossen haben, Ihren Kernel richtig konfiguriert haben und erfolgreich einen Testausdruck produziert haben, können Sie nun das LPD-System konfigurieren.

Sie konfigurieren LPD, indem Sie die Datei /etc/printcap anpassen. Da LPD die Datei jedes Mal liest, wenn eine Aktion durchgeführt wird, werden Änderungen an der Konfiguration sofort aktiv.

Die printcap(5)-Datei ist einfach aufgebaut. Sie können /etc/printcap mit Ihrem bevorzugten Texteditor bearbeiten. Sie verwendet dasselbe Format wie auch /usr/share/misc/termcap oder /etc/remote. Informationen zum Format finden Sie in cgetent(3).

Die Grund-Konfiguration des LPD-Systems beinhaltet diese Schritte:

  1. Wählen Sie einen Namen (und einige praktische Abkürzungen) für die Druckerwarteschlage, und tragen Sie ihn in die /etc/printcap-Datei ein. Abschnitt Einen Namen wählen enthält weitere Informationen.

  2. Schalten Sie den Druck von Deckblättern aus (dies ist standardmäßig eingeschaltet), indem Sie das Attribut sh setzen. Abschnitt Den Druck von Deckblättern ausschalten erklärt, wie Sie dies tun können.

  3. Legen Sie ein Pufferverzeichnis für die Warteschlange an, und geben Sie den Pfad mittels des sd-Attributs an: siehe Abschnitt Das Pufferverzeichnis anlegen.

  4. Geben Sie den Gerätenamen für Ihren Drucker mittels des lp-Attributs an: siehe Abschnitt Festlegen der Drucker-Gerätedatei. Ist Ihr Drucker über eine serielle Schnittstelle angeschlossen, benutzen Sie das Attribut ms#, wie dies in Abschnitt Festlegen der Kommunikationsparameter beschrieben ist.

  5. Installieren Sie einen Filter für reinen Text: siehe Abschnitt Den Textfilter installieren.

  6. Testen Sie die Konfiguration, indem Sie etwas mit dem lpr(1)-Befehl drucken. Die Abschnitte Die Konfiguration testen und Fehlersuche und Problembehebung enthalten weitere Informationen.

Anmerkung: Drucker, die eine Seitenbeschreibungssprache wie PostScript verwenden, können keinen reinen Text drucken. Es wird deshalb angenommen, dass Sie nur solche Dateien drucken, die Ihr Drucker verarbeiten kann.

Viele Anwender erwarten, dass sie normalen Text auf allen Druckern drucken können. Viele Programme, die mit LPD zusammenarbeiten, gehen ebenfalls von dieser Annahme aus. Wenn Sie einen PostScript-Drucker installieren, und Sie sowohl PostScript- als auch Textdateien drucken möchten, sollten Sie einen weiteren Konfigurationsschritt ausführen und einen Text-zu-PostScript-Filter installieren. Der Abschnitt Drucken von reinen Textdateien auf einem PostScript-Drucker erklärt, wie Sie dies tun können.

10.3.1.5.1. Einen Namen wählen

Der erste einfache Schritt ist, einen Namen für Ihren Drucker zu wählen. Sie können diesen Namen frei wählen, Sie sollten allerdings keine Sonderzeichen oder Umlaute verwenden. Sie können mehrere Alias-Namen vergeben.

Ein Drucker in /etc/printcap sollte den Alias lp haben. Dieser Name wird standardmäßig von allen Druckbefehlen verwendet, wenn auf der Befehlszeile oder in der PRINTER-Umgebungsvariablen kein anderer Drucker angegeben ist.

Ebenso ist es üblich, eine ausführliche Beschreibung des Druckermodells als letzten Alias-Namen zu verwenden.

Sobald Sie einen Namen und einige einfache Alias-Namen ausgewählt haben, tragen Sie sie in die Datei /etc/printcap ein. Beginnen Sie die Zeile mit dem Namen des Druckers und fügen Sie alle Alias-Namen an. Trennen Sie die Namen durch den senkrechten Strich |. Fügen Sie an das Ende der Zeile einen Doppelpunkt : an.

Das folgende Beispiel definiert zwei Drucker, einen Diablo 630 Zeilendrucker, und einen Panasonic KX-P4455 PostScript-Laserdrucker:

#
#  /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

Der erste Drucker hat den Namen rattan, und hat die Alias-Namen line, diablo, lp und Diablo 630 Line Printer. Da er den Alias-Namen lp trägt, wird er standardmäßig von den Druckprogrammen verwendet. Der zweite Drucker heißt bamboo, und hat die Alias-Namen ps, PS, S, panasonic und Panasonic KX-P4455 PostScript v51.4.

10.3.1.5.2. Keine Deckblätter drucken

Standardmäßig druckt das LPD-System ein Deckblatt vor jedem Druckauftrag, die den Namen des Druckauftrags, den Benutzer und den Computer angibt. Während der Einrichtung des Systems und beim Testen stört das Deckblatt allerdings, weshalb Sie sie zunächst deaktivieren sollten.

Um den Druck von Deckblättern zu deaktivieren, fügen Sie das Attribut sh zur Druckerdefinition in /etc/printcap hinzu. Hier ein Beispiel:

#
#  /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:

Beachten Sie die korrekte Formatierung: die beiden Definitionen beginnen auf einer Zeile; weitere Zeilen der Definition sind mit einem Tab-Zeichen eingerückt, und alle Zeilen einer Definition, bis auf die letzte, enden mit dem Backslash \.

10.3.1.5.3. Das Pufferverzeichnis anlegen

Der nächste Schritt ist, das Pufferverzeichnis anzulegen. In diesem Verzeichnis werden Druckaufträge zwischengespeichert, während sie gedruckt werden. Gleichzeitig werden hier auch einige Verwaltungsdateien des Systems abgelegt.

Da sich die Dateien in diesem Verzeichnis häufig ändern, ist es üblich, das Verzeichnis unter /var/spool anzulegen. Es ist nicht notwendig, Sicherungskopien der Dateien herzustellen; das Verzeichnis kann nötigenfalls leicht mit mkdir(1) wieder angelegt werden.

Es ist auch üblich, dem Verzeichnis denselben Namen wie dem Drucker zu geben:

# mkdir /var/spool/printer-name

Wenn Sie viele Drucker verwenden, ist es am besten, wenn Sie für die Pufferverzeichnisse ein eigenes Unterverzeichnis in /var/spool anlegen, wie dies hier für die beiden Beispieldrucker rattan und bamboo gezeigt wird:

# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

Anmerkung: Um zu verhindern, dass alle Benutzer den Inhalt aller Druckaufträge einsehen können, sollten Sie die Rechte auf den Pufferverzeichnissen einschränken. Die Verzeichnisse sollten dem Benutzer daemon und der Gruppe daemon gehören, und auch nur vom Benutzer und der Gruppe les-, schreib- und durchsuchbar sein. Für unsere Beispieldrucker:

# chown daemon:daemon /var/spool/lpd/rattan
# chown daemon:daemon /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan
# chmod 770 /var/spool/lpd/bamboo

Schließlich müssen Sie dem LPD-System noch mitteilen, wo Sie die Pufferverzeichnisse angelegt haben. Dazu geben Sie in der Definition das Attribut sd an:

#
#  /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:

Beachten Sie, dass der Druckername in der ersten Spalte beginnt, und dass alle Folgezeilen mit einem Tab eingerückt sind.

Wenn Sie das sd-Attribut nicht angeben, verwendet das System /var/spool/lpd als Verzeichnis.

10.3.1.5.4. Festlegen der Drucker-Gerätedatei

Nachdem Sie die korrekte Gerätedatei für die Schnittstelle im Abschnitt Hardware-Konfiguration identifiziert und angelegt haben, müssen Sie dem LPD-System mitteilen, welche Gerätedatei im Verzeichnis /dev es für die Datenübertragung zum Drucker verwenden soll.

Geben Sie die Gerätedatei durch das Attribut lp in /etc/printcap an.

Wenn rattan an die erste parallele Schnittstelle angeschlossen ist, und bamboo an die sechste serielle, dann sieht /etc/printcap so aus:

#
#  /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:

Wenn Sie lp nicht angeben, versucht LPD die Gerätedatei /dev/lp zu verwenden. /dev/lp ist zurzeit in FreeBSD nicht definiert.

Wenn Ihr Drucker über eine parallele Schnittstelle angeschlossen ist, können Sie mit dem Abschnitt Den Textfilter installieren fortfahren. Verwenden Sie eine serielle Schnittstelle, beachten Sie bitte den folgenden Abschnitt.

10.3.1.5.5. Kommunikationsparameter festlegen

Für seriell angeschlossene Drucker kann LPD die Geschwindigkeit, Parität und weitere Kommunikationsparameter einstellen. Dies hat folgende Vorteile:

  • Sie können die Parameter einfach in /etc/printcap ändern, ohne das Ausgabe-Filterprogramm anpassen zu müssen.

  • Dasselbe Ausgabe-Filterprogramm kann für unterschiedliche Drucker verwendet werden, auch wenn diese unterschiedliche Kommunikationseinstellungen benötigen.

Die folgenden Attribute legen die seriellen Kommunikationsparameter fest:

br#Baudrate

Setzt die Übertragungsgeschwindigkeit auf Baudrate. Baudrate kann üblicherweise 50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, oder 115200 Bit pro Sekunde betragen.

ms#stty-Modi

Setzt die Eigenschaften für das Gerät, nachdem es geöffnet wurde. Die verfügbaren Eigenschaften sind in stty(1) aufgeführt.

Wenn LPD das mit lp angegebene Gerät öffnet, setzt es die mit ms# angegebenen Eigenschaften. Von besonderem Interesse sind hier die Modi parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts und ixon, die in der stty(1)-Handbuchseite erläutert werden.

Für den über die sechste serielle Schnittstelle angeschlossenen Laserdrucker beträgt die Geschwindigkeit 38.400 Baud, und es werden diese Kommunikationseinstellungen verwendet: keine Parität (-parenb), 8-Bit-Zeichen (cs8), keine Modemsteuerung (clocal) und Hardware-Flusssteuerung (crtscts):

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:

10.3.1.5.6. Den Textfilter installieren

Ein Textfilter, auch als Eingangsfilter bezeichnet, ist ein Programm, das von LPD aufgerufen wird, wenn ein Druckauftrag verarbeitet wird. Dabei wird die Standardeingabe des Programms mit der zu druckenden Datei verbunden, und die Standardausgabe mit dem im lp-Attribut angegebenen Gerät. Das Programm sollte nun die Datei einlesen, alle Übersetzungen durchführen, die für den Drucker notwendig sind, und das Ergebnis über die Standardausgabe an den Drucker senden. Textfilter werden im Abschnitt Filter genauer erläutert.

Um einen einfachen Test durchzuführen, reicht ein kleines Filterprogramm, dass schlicht /bin/cat aufruft, um die Daten unverändert und den Drucker zu schicken. FreeBSD verfügt über das Programm lpf, das Unterstreichung und Fettdruck für solche Drucker ermöglicht, die ansonsten dazu nicht in der Lage wären. Darüberhinaus gibt es viele andere Filter, die Sie einsetzen können. lpf wird im Abschnitt lpf: ein Textfilter ausführlich beschrieben.

Legen Sie zunächst das folgende Shell-Skript als /usr/local/libexec/if-simple mit Ihrem bevorzugten Texteditor an:

#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout.  Ignores all filter arguments.

/bin/cat && exit 0
exit 2

Machen Sie die Datei ausführbar:

# chmod 555 /usr/local/libexec/if-simple

Konfigurieren Sie nun den Textfilter für Ihren Drucker in /etc/printcap, indem Sie das if-Attribut hinzufügen. Hier die Konfiguration unserer beiden Beispieldrucker:

#
#  /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:\
        :if=/usr/local/libexec/if-simple:

Anmerkung: Das Shell-Skript if-simple steht im Verzeichnis /usr/share/examples/printing.

10.3.1.5.7. LPD aktivieren

lpd(8) wird von /etc/rc gestartet, wenn die rc.conf(5)-Variable lpd_enable auf YES gesetzt ist. Fügen Sie dazu diese Zeile in /etc/rc.conf hinzu:

lpd_enable="YES"

Starten Sie Ihren Computer neu, oder starten Sie lpd(8) von Hand:

# lpd

10.3.1.5.8. Die Konfiguration testen

Damit ist die einfache Konfiguration abgeschlossen. Noch muss die Konfiguration aber getestet werden und etwaige Probleme müssen behoben werden. Um die Konfiguration zu testen, sollten Sie einen Probeausdruck mithilfe des Programms lpr(1) produzieren. lpr(1) übergibt Druckaufträge an das LPD-System.

Sie können lpr(1) mit lptest(1) kombinieren, um Testdaten zu drucken. lptest(1) wurde im Abschnitt Kommunikation mit den Drucker prüfen vorgestellt.

So testen Sie die einfache LPD-Konfiguration:

# lptest 20 5 | lpr -PDruckername

Ersetzen Sie Druckername durch den Namen des Druckers, den Sie testen möchten. Wenn Sie den Standard-Drucker testen möchten, rufen Sie lpr(1) ohne die Option -P auf. Wenn Sie einen Drucker testen möchten, der nur PostScript versteht, müssen Sie ein PostScript-Testprogramm an lpr(1) übergeben. Ein Testprogramm, das Sie in einer Datei gespeichert haben, können Sie mit dem Befehl lpr Dateiname an das LPD-System übergeben.

Bei einem PostScript-Drucker hängt das Ergebnis naturgemäß vom Testprogramm ab. Wenn Sie lptest(1) verwenden, sollte das Ergebnis ungefähr so aussehen:

!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678

Um sicherzustellen, dass alles richtig funktioniert, sollten Sie jetzt ein größeres PostScript-Programm senden. Mit lptest(1) können Sie größere Datenmengen z.B. mit dem Befehl lptest 80 60 erzeugen: lptest(1) produziert 60 Zeilen mit je 80 Zeichen.

Wenn Sie nicht erfolgreich drucken können, finden Sie im Abschnitt Fehlersuche und Problembehebung weitere Informationen.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.