Linux als Druckserver Themenübersicht: - Vorwort - Installation von Samba und Beschreibung der Samba Tools - Druckerinstallation - Die Samba Konfiguration - Fazit - Quellen Vorwort Einen eigenen Druckserver zu haben ist sehr praktisch. Er braucht im Normalfall wenig Hardware, außer Sie möchten mit ihm Hochleistungsdrucker betreiben. Mein Beispielsystem sah von der Hardware wie folgt aus: Ein AMD K5-100MHz mit 32 MB Speicher, einer 2,1 GB Festplatte und insgesamt drei LPT Anschlüssen. Als Drucker nutzte ich einen Canon BJC-4000, einen Epson Stylus Color 750 und einen Epson Stylus Color 900. Mein Betriebssystem ist SuSE Linux 6.2. Diese Dokumentation baut auf diesem Beispielsystem auf. Installation von Samba und Beschreibung der Samba Tools Ok, jetzt haben wir genug über die grundsätzlichen Dinge gesprochen und legen richig los. Als erstes muß natürlich das aktuellste Samba Paket installiert sein. Vorher sollte allerdings noch festgestellt werden, ob das TCP/IP Protokoll korrekt installiert ist. Weiterhin sollte darauf geachtet werden, daß in der Datei /etc/rc.config der Parameter START_SMB auf YES nach der Installation des Paketes gesetzt ist, damit der Samba-Dämon smbd gestartet wird. Um sicherzustellen, daß sich bei der Konfiguration keine Fehler in der smb.conf eingeschlichen haben, gibt es das Programm testparm, welches die vorhandene Konfiguration auf ihre Richtigkeit überprüft. Mit smbclient -L localhost können Sie lokal prüfen ob alle gewünschten Resourcen auch freigegeben sind. Druckerinstallation Die erste Hürde ist die eigentliche Druckerinstallation. Haben Sie schon alle Drucker konfiguriert und entsprechende Filter eingerichtet, so können Sie diesen Abschnitt überspringen. Zuerst müssen natürlich alle zusätzlichen LPT Karten im System eingebaut sein. Die Standard LPT Karte auf dem Mainboard habe ich bei meinem Beispielsystem auf 3BC gestellt. Die
Zusatzkarte wurden entsprechend auf 278 und 378 mit den Interrupts 5 und 7 gejumpert. Alle LPT Interfaces sind auf EPP oder ECP/EPP eingestellt. Nun haben wir die Hardware soweit voreinander und es werden alle Drucker an die Interfaces angeschlossen. Es gibt jetzt 2 Methoden Ihre LPT Karten anzusprechen. Entweder sie werden direkt im Kernel compiliert oder Sie nutzen Modules. Beide Möglichkeiten werden hier beschrieben. Module: Wenn Sie den Standardkernel von SuSE verwenden sollten ist der Aufwand nicht so groß, da die entsprechenden Module schon vorhanden sind und nicht extra neu compiliert werden müssen. Es muß allerdings noch die /etc/conf.modules angepasst werden, um alle LPT Interfaces ansprechen zu können. Bei mir sah sie wie folgt aus: alias parport_lowlevel parport_pc options parport_pc io=0x3bc,0x378,0x278 irq=none,7,5 Wie Sie sehen nutzen nicht alle LPT Interfaces den Interrupt-Betrieb. Dieses ist eigentlich nicht zu empfehlen, da beim Polling-Betrieb (LPT Interfaces ohne Interruptzuweisung) die CPU stärker belastet wird. Durch mein BIOS blieb mir keine andere Wahl als diesen Schritt zu machen. Im Kernel: Im Konfigurationsmenü des Kernels muß unter den Menüpunkt Charakter Devices das Parport System direkt integriert werden. Danach wird die Konfiguration beim Beenden gespeichert und der Kernel neu compiliert. Es kann jetzt noch passieren, das Sie Bootparameter an den Kernel übergeben müssen damit alle LPT Karten funktionieren. Diese können durch den Bootmanager (LILO) übergeben werden sehen dann wie folgt aus: parport=0x3bc,5 parport=0x378,7 parport=0x278,5 lp=parport0 lp=parport1 lp=parport2 Hinweis: Nutzen Sie mehr als 3 Drucker so müssen Sie im Quellcode der Datei lp.c die Variabel LP_NO entsprechend hochsetzen. Bei SuSE 6.2 befindet sich die Quelldatei im /usr/src/linux/drivers/char Verzeichnis. Nun testen wir ob die jetzigen Einstellungen korrekt sind und versuchen mal einen Testdruck mit folgenden Befehl: ls -l > /dev/lpx lpx ist das entsprechende Device. In unserem Beispiel nutzen wir lp0, lp1 und lp2. Es ist empfehlenswert auf jedem Drucker ein Testdruck durchzuführen. Sollte der Testdruck nicht funktionieren, dann haben Sie ein Konfigurations- und/oder Hardwareproblem. Probieren Sie ob die Interrupts stimmmen, die externen LPT Karten richtig gejumpert sind, ob alle Drucker online sind und richtig in den LPT Schnittstellen stecken, ob ggf. die Einstellungen in der /etc/conf.modules oder die direkten Kernel Einstellungen korrekt stimmen. Sollte der Drucker nur blinken und nicht drucken, dann verträgt Ihr Drucker nicht die EPP oder ECP/EPP
Einstellungen. Stellen Sie diese dann entsprechend auf SPP um. Prüfen Sie bei Modulnutzung die /var/log/messages auf Fehlermeldungen. Nutzen Sie keine Module finden Sie in der /var/log/boot.msg evt. entsprechende Hinweise auf Fehler. Es muss auf jeden Fall ein bedrucktes Blatt aus allen Drucker herrauskommen, ansonsten brauchen Sie den jetzt kommenden Rest nicht konfigurieren da es keinen Sinn macht. Jetzt sind wir schon ein großes Stück weiter und es müssen nur noch die entsprechenden Filter und Drucker eingerichtet werden. Ein Druckfilter wandelt die Datendatei eines Druckjobs in das spezifische Format des betreffenden Druckers um. Bei SuSE Linux ist der Druckfilter der APSFILTER, denn Sie unter /var/lib/apsfilter/setup finden und aufrufen können. SETUP ist menügesteuert unkompliziert zu bedienen. Aus diesem Grund möchte ich nicht näher auf die Menükonfiguration eingehen. APSFILTER legt nach der erfolgreichen Konfiguration die Datei /etc/printcap an. In dieser Datei stehen die wichtigsten Information wie zum Beispiel welcher Drucker welches Interface benutzt, wo das Spoolverzeichnis liegt und welche Filter verwendet werden. Nun können Sie mit folgendem Befehl testen, ob Ihre Konfiguration erfolgreich war: lpr -Plp /var/log/boot.msg lp ist entsprechende Warteschlange. Es gibt mehrere Möglichkeiten, wie eine Warteschlange heißen kann, zum Beispiel lp-mono, raw, ascii. Schauen Sie dazu in der /etc/printcap nach welche Warteschlangen dort vorhanden sind. Testen Sie das bei jedem Drucker. Ist der Test erfolgreich so können wir zu der Samba Konfiguration übergehen. Die Samba Konfiguration Die Samba Konfiguration sieht wie folgt aus: Datei: /etc/smb.conf [global] # Alle Angaben betreffen die ganzen Samba Resourcen. workgroup = Printer # Die Arbeitsgruppe, in die Samba Resourcen erscheinen. security = user # Die Sicherheitsüberprüfung wird von Samba vorgenommen. Es muss # extra eine Passwort Datenbank angelegt werden. Siehe weiter unten! encrypt passwords = yes # Passwörter werden verschlüsselt übertragen. read raw = no # Dient zur Geschwindigkeitsoptimierung von Samba. keepalive = 30 # Prüft alle 30 Sekunden, ob noch eine Client Verbindung besteht. socket options = TCP_NODELAY # Dient ebenfalls zur Geschwindigkeitsoptimierung von Samba. printing = bsd # BSD wird als Spoolsystem verwendet.
printcap name = /etc/printcap # Pfad zur printcap Datei. load printers = yes # Drucker werden aus der /etc/printcap geprüft, ob sie geladen sind. [bjc4000] # Freigabename "bjc4000" comment = Canon BJC-4000 # Detailliertere Beschreibung der freigegeben Resource. # Alle User, die in diesem Fall auf die Resource zugreifen dürfen. # Das @-Zeichen kennzeichnet die Gruppe Samba. # Pfad auf denen Dateien für Druckjobs abgelegt werden. # Es darf gedruckt werden. printer name = bjc600-a4-raw # Name der Warteschlange aus der /etc/printcap. # Wenn neue Dateien erstellt wurden, dann erhalten sie alle Rechte (lesen, schreiben, ausführen) für den Besitzer und der Gruppe. [epson740] comment = Epson Stylus Color 740 printer name = stcolor-a4-raw [epson900] comment = Epson Stylus Color 900 printer name = st800-a4-raw Alle Zeilen die mit einer Raute (#) beginnen, stellen bloß Kommentare dar, die ansonsten nichts weiter zur Sache tun. Nun müssen wir nur noch die User anlegen, die auf Samba zugreifen dürfen. Vorher muß allerdings noch die Passwortdatei smbpasswd erstellt werden, in der alle verschlüsselten Passwörter stehen. Mit dem Befehl cat /etc/passwd mksmbpasswd.sh > /etc/smbpasswd wird diese Datei erstellt. Danach werden wir die User anlegen, die auf die Domäne Zugriff haben. Jetzt erstellen wir erstmal 1 User, der sich in der Gruppe samba befinden soll. Dabei darf er sich nicht lokal an dem Linux Rechner anmelden können.
useradd -g samba -s /bin/false user1 Der User wurde erstellt und wir haben ihm das Recht gegeben sich anmelden zu dürfen. Damit wird er aber nicht viel Erfolg haben, da er noch kein Passwort besitzt. Mit folgendem Befehl erteilen wir ihm ein verschlüsseltes Passwort: smbpasswd -a -e user1 Danach erscheint eine Aufforderung zur Passworteingabe. Jetzt wäre es sinnvoll ein sogenanntes Übergangspasswort zu erteilen, wie z.b. "anmeldung". Dieses Passwort wird dem User mitgeteilt, der sich zum ersten Mal an der Domäne anmeldet. Daraufhin sollte der User es selber wieder ändern, damit die Sicherheit des Netzes nicht gefährdet wird. Alternativ könnte man auch überhaupt kein Passwort mit dem Befehl smbpasswd -a -n -e user1 erstellen was allerdings nicht sehr empfehlenwert ist. Nun ist die eigentliche Konfiguration fertig. Es müssen nur noch die Drucker unter Windows installiert werden. Schauen Sie in Windows unter Netzwerkumgebung -> Printer nach und installieren Sie den gewünschten Drucker durch das Doppelklicken auf die Freigabe. Fazit Er ist zwar ein wenig umständlich einen Drucker unter Linux freizugeben, aber dafür läuft es sehr gut wenn die Installation überstanden ist. Ein Nachteil ist allerdings, daß leider nicht alle Drucker von Linux unterstützt werden (speziell GDI Drucker). Darunter fallen insbesondere HP Tintenstrahldrucker (nur schwerlich zu installieren), einige Lexmarkmodelle und auch der OKI Okipage 8w war nicht ans Laufen zu kriegen. Der große Vorteil bei dem Linuxsystem ist natürlich die hohe Stabilität. Wenn Sie zum Beispiel Hochleistungsdrucker (Kyocera FS- 9000) benutzen ist dieses System vorzüglich einzusetzen. Unter NT gab es Probleme bei Druckaufträgen mit mehr als 300MB Kapazität, die sich dadurch kennzeichneten das NT einige Schriften nicht mehr mitdruckte. Dieses Problem war mit Linux behoben.