Úgy tudjuk használni a nyomtatókat az LPD nyomtatási rendszerével, ha egyaránt beállítjuk a nyomtatót és magát az LPD-t is. Itt a beállítás két szintjét tárgyaljuk:
Az Alacsonyszintű nyomtatóbeállítás című szakaszból megtudhatjuk, hogyan tudunk csatlakoztatni egy nyomtatót, hogyan adjuk meg az LPD-nek, miként kommunikáljon vele, hogyan nyomtassunk ki egyszerű szöveges állományokat a nyomtatón.
A Magasszintű nyomtatóbeállítás szakaszban bemutatjuk, hogyan nyomtassunk ki különféle speciális állományokat, hogyan készítessünk fejléceket, hogyan nyomtassuk hálózaton keresztül, hogyan vezéreljük a nyomtatók hozzáférését és hogyan tartsuk nyilván a nyomtató használatát.
Ebben a szakaszban láthatjuk, miképpen kell beállítani a nyomtatónkat és az LPD hogyan lesz képes azt használatba venni. Az alapoktól kezdünk:
A Hardveres beállítás című szakaszban abban kapunk segítséget, hogyan kell a nyomtatót a számítógéphez csatlakoztatni.
A Szoftveres beállítás című szakaszban az LPD nyomtatási rendszer beállítását tartalmazó állományt (/etc/printcap) vesszük sorra.
Amennyiben olyan nyomtatót akarunk beállítani, amely nem helyileg, hanem valamilyen hálózati protokollon keresztül csatlakozik, nézzük meg a Nyomtatók hálózati adatcsatlakozással című szakaszt.
Habár ez a szakasz nevében csupán “Alacsonyszintű nyomtatóbeállításról” szól, meglehetősen szerteágazó tud lenni. A nyomtató hardveres és szoftveres életre keltése az egyik legnehezesebb feladat. Ha van egy működő nyomtatónk, a fejlécek és a nyilvántartás beállítása tulajdonképpen már gyerekjáték.
Ebben a szakaszban a nyomtatók csatlakoztatásának lehetséges módozatairól esik szó. Beszélni fogunk mindenféle portokról és kábelekről, és a FreeBSD rendszermagjának az egyes nyomtatók használatához szükséges beállításairól is.
Ha korábban tudtuk csatlakoztatni a nyomtatónkat, és más operációs rendszerekkel már sikeresen is nyomtattunk vele, akkor rögtön ugorhatunk is a Szoftveres beállításokat tartalmazó szakaszra.
A személyi számítógépekhez kapható nyomtatók általában a következő három csatolófelület egyikével rendelkeznek:
A soros, más néven RS-232-es vagy COM porton keresztül kommunikáló felületek a számítógép soros portján küldenek adatot a nyomtatónak. A soros csatolófelületek igen elterjedtek a számítógépiparban, könnyen tudunk ilyen kábelt szerezni, gyorsan is gyártható. Előfordulhat, hogy a soros csatolófelületek használatához valamilyen különleges kábelre, valamint bonyolult kommunikációs beállítások megadására van szükség. A legtöbb soros port által elérhető legnagyobb adatátviteli sebesség másodpercenként 115 200 bit, ami miatt azonban a komolyabb grafikai tartalmak nyomtatása szinte lehetetlen.
A párhuzamos csatolófelületek a számítógépünk párhuzamos portjával küldenek adatokat a nyomtatónak. A párhuzamos felületek gyorsabbak az RS-232 soros felületnél, és a számítógéppiacon is gyakran megtalálhatóak. Könnyen tudunk ilyen kábelt szerezni, azonban kézileg nehezebb elkészíteni. A párhuzamos csatolófelületekhez általában nem tartoznak kommunikációs beállítások, ezért rendkívül egyszerűen el lehet boldogulni velük.
A párhuzamos felületekre olykor “Centronics” csatolófelületként is hivatkoznak, amelyet egy nyomtatótípus után neveztek el.
A Universal Serial Bus (Univerzális soros busz) rövidítéseként használt USB elnevezésű csatolófelület a párhuzamos és a soros felületeknél jóval nagyobb sebességre képes. A hozzátartozó kábelek felépítése egyszerű és az áruk olcsó. Habár a nyomtatás terén az USB hivatott leváltani az RS-232-es soros és a párhuzamos felületeket, nem mindegyik UNIX® rendszer támogatja kellőképpen. Ezt a problémát például úgy kerülhetjük el, ha olyan nyomtatót vásárolunk, amelyen a legtöbbhöz hasonlóan a párhuzamos és az USB csatlakozás is megtalálható.
A párhuzamos felületeken általában csak egy irányban tudunk üzeneteket küldeni (a számítógéptől a nyomtatóhoz), miközben az USB és a soros felület használatával mind a két irányban is. FreeBSD alatt viszont már az újabb (EPP és ECP) párhuzamos portok egy IEEE 1284 szabványú kábellel képesek oda-vissza kommunikálni.
A párhuzamos nyomtatók kétirányú kommunikációját általában két mód közül az egyiken szokták megvalósítani. Az első esetben a FreeBSD a nyomtatóhoz egy speciális meghajtót használ, amely ismeri az általa beszélt nyelvet. Ilyenek a tintasugaras nyomtatók, amelyek más egyéb állapotinformációk mellett ezen keresztül képesek jelezni a tinapatronokban levő tinta mennyiségét. A második esetben a nyomtató ismeri a PostScript® nyelvet.
A PostScript nyelvű munkák valójában a nyomtatónak küldött programok. Használatukhoz még papírra sincs feltétlenül szükség, és adódhat, hogy közvetlenül a számítógépnek válaszolnak. A PostScript is kétirányú kommunikáción keresztül értesíti a számítógépet az olyan gondokról, mint például a PostScript programokban levő hibák vagy a papír beakadása, amely információnak a felhasználók szoktak örülni. Hovatovább ez a kétirányú kommunikáció a kulcsa a PostScript nyomtatók hatékony nyilvántartásának is: egyszerűen lekérdezzük a nyomtatótól a lapszámlálót (ami megadja, hogy a nyomtató eddig mennyi lapot nyomtatott ki), kiküldjük a felhasználóhoz tartozó feladatot és ismét lekérdezzük a lapszámlálót. A két érték kivonásából tájékozódhatunk a felhasználó által igényelt lapok mennyiségéről.
A párhuzamos csatolófelületen érintkező nyomtató használatához kapcsoljunk össze számítógépünket és nyomtatónkat egy párhuzamos kábellel. Az erre vonatkozó konkrét utasítások a nyomtató és/vagy a számítógép kézikönyvében olvashatóak.
Jegyezzük meg, hogy a számítógép melyik párhuzamos portjára csatlakoztattuk a kábelt. FreeBSD alatt az első ilyen port a ppc0 eszköz, a második pedig a ppc1 eszköz lesz és így tovább. A nyomtatóeszköz elnevezése ugyanezt a sémát követi: a /dev/lpt0 lesz az első párhuzamos porton levő nyomtató stb.
A soros csatolófelületet használó nyomtatók beüzemeléséhez először egy soros kábel segítségével kapcsoljuk össze a számítógépünkkel. Ennek pontos részleteit a nyomtató és/vagy a számítógépünk kézikönyvében találhatjuk meg.
Ha nem vagyunk benne biztosak, hogy milyen a “megfelelő soros kábel”, próbáljunk az alábbiak alapján dönteni:
A modem kábele a két oldalán levő az egymásnak megfelelő tüskéket közvetlenül összeköti. Ezt a típust nevezik “DTE-DCE” kábelnek.
A null-modem kábel bizonyos érintkezőket rendesen, másokat pedig fordítva köt össze (például a küldőt a fogadóval), illetve némelyeket rövidre zár közvetlenül a csatlakozón belül. Ez a típus a “DTE-DTE” kábel.
Néhány speciális nyomtató esetén előfordul még a soros nyomtatókábel, amelyek leginkább a null-modem kábelekez hasonlítanak, azonban az ott rövidre zárt csatornák itt a nekik megfelelő érintkezőknek továbbítanak jeleket.
Emellett még a nyomtató előlapján vagy az alján található kapcsolók segítségével be kell állítanunk a nyomtatóhoz tartozó kommunikációs paramétereket is. Itt válasszuk azt a bps (a bitek száma másodpercenként) értéket, amelyet még a számítógépünk és a nyomtatónk is egyaránt képes támogatni. Válasszunk 7 vagy 8 adatbitet, páros, páratlan vagy kikapcsolt paritásbitet és 1 vagy 2 stopbitet. Ekkor tudjuk megadni a forgalomirányítási protokollt is: lehet kikapcsolt, XON/XOFF (ez az ún. “sávon belüli” vagy “szoftveres”) forgalomirányítás. Ne felejtsük el ezeket a beállításokat a most következő szoftveres beállítások elvégzése során sem.
Ebben a fejezetben tárgyaljuk a FreeBSD-ben található LPD nyomtatási rendszer működéséhez és a nyomtatáshoz szükséges szoftveres beállításokat.
Íme az elvégzendő lépések rövid vázlata:
Amennyiben szükséges, állítsuk be a rendszermagunkat nyomtató által használt portra. Ehhez A rendszermag beállítása szakaszban olvashatjuk mit is kell pontosan tenni.
Ha párhuzamos portot használunk, akkor állítsuk be, hogy a párhuzamos port miként fog kommunikálni. A párhuzamos port kommunikációs módjának beállítása című szakasz tárja fel ennek részleteit.
Próbáljuk ki, hogy ezek után az operációs rendszer képes-e adatot küldeni a nyomtatónak. A nyomtató kommunikációjának ellenőrzése szakaszban kapunk erre pár javaslatot.
Az /etc/printcap állomány felhasználásával állítsuk be a nyomtatónkhoz a LPD-t. Erről a fejezet további részei adnak majd felvilágosítást.
Az operációs rendszer magja eszközök egy adott csoportjával képes együttműködni, amiben a soros és párhuzamos felületen csatlakozó nyomtatók is megtalálhatóak. Azonban ha a rendszermag nem ismeri fel még valamelyiket, akkor a soros vagy párhuzamos portok használatához külön támogatásra van szükség.
Így tudjuk megnézni, hogy a jelenleg használt rendszermag támogatja-e a soros csatolófelületet:
# grep sioN /var/run/dmesg.boot
Itt az N nullától kezdődően adja meg a soros port sorszámát. Amennyiben látunk valami ilyesmit:
sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A
Ez azt jelenti, hogy a rendszermag sikeresen észlelte a portot.
A párhuzamos csatolófelület támogatásáról így győződhetünk meg:
# grep ppcN /var/run/dmesg.boot
Itt az N nullától kezdődően sorszámozza a párhuzamos portot. Ha eredményül valami hasonlót kapunk:
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
Ez arra utal, hogy a rendszermagunk tud a portról.
Előfordulhat azonban, hogy az operációs rendszer csak akkor fogja észrevenni a nyomtatásra használt soros vagy párhuzamos portot, ha átállítjuk a rendszermagunkat.
A soros port támogatásának beállításához olvassuk el a rendszermag beállításáról szóló szakaszt. A párhuzamos port támogatásához szintén olvassuk el ugyanazt a szakaszt és a most a következőt.
A párhuzamos csatolófelület használata esetén választhatunk, hogy a FreeBSD milyen módon tartsa a kapcsolatot a nyomtatóval: megszakításokkal vezérelje (interrupt-driven) vagy esetleg folyamatosan kérdezgesse (polled). A FreeBSD általános meghajtója (lpt(4)) a ppbus(4) alrendszert használja, ami a portot a ppc(4) meghajtón keresztül vezérli.
A megszakítás alapú módszer a GENERIC rendszermagban alapértelmezés. Ilyenkor az operációs rendszer egy megszakításkérés felhasználásával értesül arról, hogy a nyomtató mikor áll készen adatok fogadására.
A lekérdezéses módszer használata során az operációs rendszer folyamatosan érdeklődik a nyomtató rendelkezésre állásáról. Amikor erre pozitív megerősítést kap, akkor a rendszermag újabb adatokat küld.
A megszakításos módszer valamivel gyorsabb, azonban cserébe lefoglal egy értékes IRQ vonalat. A HP újabb nyomtatói állítólag nem működnek megfelelően ilyen módban, valamilyen (pillanatnyilag még nem teljesen tisztázott) időzítési probléma miatt. Ezért az ilyen nyomtatóknak is valószínűleg a lekérdezéses módszer kell használniuk. Más nyomtatók pedig habár működnek mind a két módszerrel, hihetetlenül lassúak a megszakításokkal.
Kétféleképpen állíthatjuk be a kommunikációs módot: a rendszermagon keresztül, vagy az lptcontrol(8) segédprogrammal.
A rendszermagban így állíthatjuk be a kommunikációt:
Írjuk át a rendszermag beállításait tartalmazó állományt. Keressük meg benne a használt párhuzamos portnak megfelelően a ppc0, ppc1 (második párhuzamos port) vagy ppc2 (harmadik párhuzamos port) bejegyzést, és engedélyezzük.
A megszakításos mód használatához nyissuk meg a /boot/device.hints állományt, és az N helyére írjuk be a
hint.ppc.0.irq="N"
sorba a megfelelő IRQ számát. A rendszermag beállításait tartalmazó állománynak tartalmaznia kell a ppc(4) meghajtót is:
device ppc
A lekérdezéses mód használatához a /boot/device.hints állományból távolítsuk el a következő sort:
hint.ppc.0.irq="N"
Némely esetben azonban ennyi még nem lesz elég a port lekérdezéses beállításához. Ugyanis ha a hozzátartozó meghajtó az acpi(4), akkor ez fogja felismerni, kezelni és a nyomtatóhoz tartozó portok hozzáférési módját vezérelni. A problémát ezért gyakran érdemes a acpi(4) beállításai között is keresni.
Mentsük el az állományt. Konfiguráljuk be, fordítsuk le és telepítsük az új rendszermagot. Ennek pontos részleteit a rendszermag beállításáról szóló fejezetben olvashatjuk.
A kommunikáció módjának beállítása az lptcontrol(8) programmal:
A megszakításos mód beállításához írjuk be:
# lptcontrol-i
-d
/dev/lptN
ahol az lptN a nyomtatóhoz tartozó eszköz neve.
A lekérdezéses mód beállításához írjuk be:
# lptcontrol-p
-d
/dev/lptN
ahol az lptN a nyomtatóhoz tartozó eszköz neve.
Ha ezeket a parancsokat berakjuk az /etc/rc.local állományunkba, akkor azzal a rendszer minden egyes indítása során beállítjuk a számunkra megfelelő módot. Erről többet az lptcontrol(8) man oldaláról tudhatunk meg.
Még mielőtt nekilátnánk a nyomtatási rendszer beállításának, bizonyosodjuk meg róla, hogy az operációs rendszer képes adatokat továbbítani a nyomtatónak. Sokkal könnyebb egymástól függetlenül megvizsgálni a kommunikáció és nyomtatási rendszer működését.
A nyomtatót úgy tudjuk kipróbálni, ha küldünk neki valamilyen szöveget. Az lptest(1) tökéletesen megfelelő akkor, ha olyan nyomtatónk van, amely azonnal kinyomtatja a kapott szöveget. Ez a program 96 sorban létrehozza mind az összes 96 kinyomtatható ASCII karaktert.
A PostScript (vagy más egyéb nyelvet ismerő) nyomtatóknak azonban ennél kifinomultabb próbára van szüksége. Erre a célra tökéletesen megfelel egy olyan kisebb PostScript programocska, mint például ez:
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Remek! Ez mukodik!) show showpage
Ezt a PostScript kódot nyugodtan elmenthetjük egy állományba, amelyet aztán a későbbi szakaszokban megjelenő példák szerint használni is tudunk majd.
Megjegyzés: A kézikönyvben a nyomtató nyelve alatt leginkább egy PostScript-szerű nyelvet értünk, nem pedig a Hewlett Packard PCL típusú nyelvét. Habár a PCL nagyon sokra képes, hiszen keverhetjük még benne akár a programokat és a nyers szövegeket is. Ezzel szemben a PostScript nem képes nyers szöveget kinyomtatni, ezért az ilyen típusú nyomtatók működtetéséhez külön támogatásra van szükségünk.
Ebben a szakaszban megtudhatjuk, hogy FreeBSD alatt miként ellenőrizzük a párhuzamos portra csatlakozó nyomtatók működését.
A párhuzamos porton levő nyomtató kipróbálásához:
A su(1) segítségével váljunk root felhasználóvá.
Küldjünk a nyomtatónak valamilyen adatot.
Ha a nyomtató képes nyers szöveget fogadni, akkor használjuk az lptest(1) programot. Ehhez gépeljük be:
# lptest > /dev/lptN
ahol az N nullától kezdődően a párhuzamos port sorszáma.
Ha a nyomtató PostScript vagy más nyomtatási nyelvet ismer, akkor egy apró programot kell küldenünk neki. Ehhez írjuk be:
# cat > /dev/lptN
Ezután soronként írjuk be a programot, de vigyázzunk, mert az Enter vagy a Return lenyomása után már nem tudjuk kijavítani! A program begépelése után nyomjuk meg a Ctrl+D vagy bármely más olyan billentyűkombinációt, amivel ki tudunk lépni.
Ezt a programot belerakhatjuk egy állományba is, amire aztán adjuk ki az alábbi parancsot:
# cat állomány > /dev/lptN
ahol az állomány a nyomtatóra küldendő program neve lesz.
Ezután a nyomtató megkezdi a nyomtatást. Ne aggódjunk, ha netalán valami furcsán nézne ki, mert a későbbiekben ezt még úgyis rendbetesszük.
Ebben a szakaszban megtudhatjuk, hogyan ellenőrizzük a FreeBSD és soros portra kötött nyomtató kapcsolódását.
Így tudjuk kipróbálni a soros porton csatlakozó nyomtatónkat:
A su(1) paranccsal váljunk root felhasználóvá.
Nyissuk meg az /etc/remote állományt. Tegyük hozzá a következő sort:
printer:dv=/dev/port:br#bps:pa=paritás
ahol a port a soros porthoz tartozó eszközleíró neve (ttyd0, ttyd1, stb.), a bps a nyomtató által használt adatátviteli sebesség, végül a paritás a nyomtatóhoz használt paritás (ami lehet even (páros), odd (páratlan), none (nincs), vagy zero (nulla)).
Íme egy olyan soros nyomtató beállítása (printer néven), amely sebessége 19 200 bps, a harmadik portra csatlakozik és nem használ paritást:
printer:dv=/dev/ttyd2:br#19200:pa=none
Kapcsolódjunk a nyomtatóhoz a tip(1) segítségével. Ennek parancsa:
# tip printer
Ha az iménti lépés nem működne, próbálkozzunk az /etc/remote állomány újbóli módosításával, és a /dev/cuaaN eszköz helyett használjuk a /dev/ttydN eszközt!
Küldjünk adatot a nyomtatónak.
Ha a nyomtató képes nyers szöveget nyomtatni, akkor használjuk az lptest(1) segédprogramot. Gépeljük be:
% $lptest
Ha a nyomtató a PostScript vagy egy hozzá hasonló nyomtatási nyelven kommunikál, akkor a nyomtatónak egy rövid programot kell küldenünk. Soronként gépeljük be a programot, azonban vigyázzunk arra, hogy a törlés és minden más szerkesztésre használt billentyű a nyomtató számára is értelmes lehet. Az is előfordulhat, hogy a program küldését egy speciális jelsorozattal tudjuk csak lezárni. A PostScript nyomtatók esetén ilyenkor elegendő a Ctrl+D billentyűk együttes lenyomása.
Vagy tehetjük az egész programot egy állományba, amihez aztán írjuk be ezt:
% >állomány
ahol az állomány a programot tartalmazó állomány neve. Miután a tip(1) elküldte az állományt, nyomjuk le a lezáráshoz szükséges billentyűkombinációt.
Most már meg kellene jelennie valaminek a nyomtatón. Az még nem számít, pontosan mi is lesz az -- később még majd úgyis beállítjuk.
Csatlakoztattuk a nyomtatónkat, a működtetéséhez beállítottuk a rendszermagot (amennyiben erre szükségünk volt), és tudtunk neki adatokat küldeni. Most már készen állunk arra, hogy LDP alkalmazáson keresztül beállítsuk a nyomtató hozzáférésének vezérlését.
Az LPD beállításait az /etc/printcap állományban találjuk. Az LPD nyomtatási rendszer minden egyes művelet előtt beolvassa ezt az állományt, ezért a benne végzett módosítások szinte azonnal életbe is lépnek.
A printcap(5) tartalma könnyen érthető, a /etc/printcap állományt egyszerűen módosíthatjuk a kedvenc szövegszerkesztőnkkel. A felépítése teljesen megegyezik a többi hozzá hasonló állományéval: ilyenek például a /usr/share/misc/termcap és a /etc/remote. Az itt alkalmazott formátum teljes leírását a cgetent(3) man oldalon találjuk.
A nyomtatási rendszer egyszerű beállítása az alábbi lépésekből áll:
Adjunk nevet (és még néhány álnevet) a nyomtatónak, írjuk ezeket az /etc/printcap állományba. A nevekről A nyomtató elnevezése című szakaszban kapunk felvilágosítást.
A(z alapból bekapcsolt) fejléclapokat az sh tulajdonság megadásával kapcsolhatjuk ki. A részleteket A fejléclapok letiltása című szakaszban találjuk.
Hozzunk létre egy nyomtatási könyvtárat, és adjuk meg a helyét az sd tulajdonság beállításával. A nyomtatási könyvtár létrehozása című szakaszban fogunk erről többet mondani.
Állítsunk be egy nyomtató által használt /dev könyvtárbeli leírót, és az lp tulajdonsággal adjuk meg az /etc/printcap állományban. Erről részletesebben A nyomtatóeszköz azonosítása című szakaszban olvashatunk. Ha a nyomtató soros porton keresztül csatlakozik, az ms# tulajdonsággal még meg kell adnunk A nyomtatási rendszer kommunikációs paraméterei szakaszban tárgyaltakat is.
Helyezzünk el egy szűrőt a beérkező nyers szövegek számára. Erről A szövegszűrő telepítése című szakasz értekezik.
Az lpr(1) parancs segítségével próbáljuk ki a nyomtatást. Ennek pontos részleteit a Próbáljuk ki! és a Hibakeresés című fejezetekben találhatjuk meg.
Megjegyzés: A magasabb szintű nyomtatók, mint például a PostScript nyomtatók nem képesek közvetlenül nyers szöveget nyomtatni. Az imént felvázolt egyszerű beállítási séma feltételezi, hogy csak olyan állományokat fogunk nyomtatni a nyomtatón, amelyeket meg is ért.
A felhasználók gyakran arra számítanak, hogy bármelyik általuk elérhető nyomtatón képesek nyers szöveget kinyomtatni. Az LPD alkalmazással kapcsolatban álló programok is általában ugyanezt az elgondolást követik. Ha egy saját nyelvvel rendelkező nyomtatót akarunk telepíteni, de a nyomtató saját nyelvén és a nyers szöveg formájában érkező munkákat is rendesen ki akarjuk nyomtatni, akkor mindenképpen javasoljuk, hogy illeszünk még egy további lépést is ebbe a sorba: illesszünk a rendszerbe egy nyers szövegről automatikusan PostScript (vagy más egyéb) nyelvre tolmácsoló programot. Errő a Szöveges nyomtatási feladatok PostScript nyomtatókon című fejezetben olvashatunk.
Az első (egyszerű) lépés a nyomtatónk nevének kiválasztása. Igazából nem számít, mennyire kifejező vagy éppen hóbortos nevet adunk neki, hiszen emellett még számos álnévvel is illethetjük.
Az /etc/printcap állományban megtalálható nyomtatók egyikének legalább az lp álnévvel rendelkeznie kell, mivel ez lesz az alapértelmezett nyomtató neve. Tehát ha a felhasználó nem adja meg sem a PRINTER környezeti változót, sem pedig az LPD-vel kapcsolatban álló aktuális parancsban a használni kívánt nyomtató nevét, akkor a rendszer az lp nevűt fogja keresni.
Ezenkívül általában még gyakran adnak egy olyan álnevet is a nyomtatónak, ahol annak teljes leírása, többek közt a gyártmánya és a típusa szerepel.
Ahogy sikerült nevet és álneveket adni a nyomtatónak, írjuk is be ezeket az /etc/printcap állományba. Itt a nyomtató neveit balról el kezdjük felsorolni, mindegyik álnevet egy függőleges vonallal válasszunk el, és az utolsó után pedig tegyünk pontosvesszőt.
A most következő példában egy olyan vázt mutatunk be az /etc/printcap állományhoz, amiben két nyomtatót (egy Diablo 630 márkájú sornyomtatót és egy Panasonic KX-P4455 típusú PostScript lézernyomtatót) adunk meg:
# # /etc/printcap (rose) # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
Ebben a példában az első nyomtató neve rattan, és ehhez tartozik még a line, diablo, lp, és Diablo 630 Line Printer álnév. Mivel itt soroltuk fel az lp álnevet is, ezért a rendszerben ez lesz az alapértelmezett nyomtató. A második nyomtató neve bamboo, és álnevei többek közt a ps, PS, S, panasonic, valamint a Panasonic KX-P4455 PostScript v51.4.
Az LPD nyomtatási rendszer alapértelmezés szerint minden egyes feladathoz fejléclapot készít. Ez a lap szép nagy betűkkel tartalmazza a munkát kiadó felhasználó nevét, a gépet, amiről küldték, és a feladat nevét. Sajnálatos módon ez azonban inkább akadályozza a hibakeresést a nyomtató beállításában, ezért most inkább kapcsoljuk ki ezeket.
Ha le akarjuk tiltani a fejléclapokat, az /etc/printcap állományban adjuk meg az sh (úgy mint “suppress header pages”) tulajdonságot. Íme egy példa az sh tulajdonsággal bővített /etc/printcap állományra:
# # /etc/printcap (rose) - sehol sem lesznek fejléclapok # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:
Ebben a példában megfigyelhetjük a helyes felírási módot: az első sor a legbaloldalibb oszlopban kezdődik, és az azt követő sorok pedig bentebb. Minden bejegyzésben az utolsó kivételével mindegyik sor egy visszaper (backslash) karakterrel zárul.
A nyomtatási rendszerünk beállításának következő lépése a nyomtatási könyvtár létrehozása. Ez egy olyan könyvtár, ahová a különböző nyomtatási feladatok kerülnek a feldolgozásuk előtt, valamint ahol a nyomtatási rendszer többi állománya lakozik.
A nyomtatási rendszer adatait tároló könyvtárakat tartalmuk gyakori változása miatt általában a /var/spool könyvtárba szokás tenni. Ezen könyvtárak tartalmát nem szükséges menteni sem. Az mkdir(1) parancs futtatásával egyszerűen újra létre tudjuk hozni.
Általában minden nyomtatóhoz külön létre szoktak hozni egy könyvtárat az adott nyomtató nevén. Erre példa:
# mkdir /var/spool/nyomtatónév
Azonban ha a hálózatunkon rengeteg nyomtató található, akkor érdemes inkább egyetlen könyvtárat használni, amelyet az LPD számára tartunk fenn.
# mkdir /var/spool/lpd # mkdir /var/spool/lpd/rattan # mkdir /var/spool/lpd/bamboo
Megjegyzés: Amennyiben fontos nekünk a felhasználói nyomtatások titkosságának megóvása, érdemes levédenünk a nyomtatási könyvtárat, így az nem lesz mindenki által elérhető. A nyomtatási könyvtárak tulajdonosa egyedül és kizárólag a daemon felhasználó és a daemon csoport legyen, és hozzá olvasási, írási és keresési engedélyekkel rendelkezzen. Ezt fogjuk most beállítani a példáinkban szereplő nyomtatóinkhoz is:
# 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
Végezetül az /etc/printcap állományban ezeket a könyvtárakat se felejtsük el megadni az LPD-nek. Itt a nyomtatási könyvtár nevét az sd tulajdonsággal írjuk le:
# # /etc/printcap (rose) - a nyomtatási könyvtárak hozzáadása # 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:
Vegyük észre, hogy a nyomtató neve ugyan a sor elején kezdődik, azonban a hozzátartozó összes többi sor mind bentebb kezdődik és egy visszaper (backslash) karakterrel választjuk le.
Ha az sd tulajdonsággal nem adunk meg semmilyen nyomtatási könyvtárat, akkor ennek az értéke alapértelmezés szerint a /var/spool/lpd lesz.
A Hardveres beállítás című szakaszban már beazonosítottuk, hogy a FreeBSD a /dev könyvtárban melyik eszközleírón keresztül fogja megszólítani a nyomtatót. Most ideje ugyanezt tudatni az LPD démonnal is. Így amikor a nyomtatási rendszer ki szeretne nyomtatni egy munkát, a szűrőprogram nevében ezt az eszközt nyitja meg (ahol a szűrőn keresztül továbbítjuk az adatokat a nyomtató felé).
Az lp tulajdonság segítségével a /etc/printcap állományban soroljuk fel a nyomtatók /dev könyvtárban található leíróit.
Az eddig használt példánkban most tételezzük fel, hogy a rattan nevű nyomtató az első párhuzamos porton található, míg a bamboo nevű a hatodik soros porton. Ebben a helyzetben így kellene kiegészítenünk az /etc/printcap állományunkat:
# # /etc/printcap (rose) - a használni kívánt eszközök # beazonosítása # 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/ttyd5:
Az LPD alapértelmezés szerint a /dev/lp eszköz fogja használni, ha nem adjuk meg az lp tulajdonságot az /etc/printcap állományban. Az /dev/lp azonban a FreeBSD-ben jelenleg nem létezik.
Ha a telepítendő nyomtatónk valamelyik párhuzamos portra csatlakozik, akkor innen akár tovább is léphetünk A szövegszűrő telepítése című szakaszra. Ha viszont nem, kövessük a most következő szakaszban szereplő utasításokat.
A soros portra csatlakozó nyomtatóknál az LPD képes beállítani az adatátviteli sebességet, a paritást, valamint más egyéb olyan kommunikációs paramétereket, amelyekkel a szűrőprogram adatokat tud továbbítani a nyomtató felé. Ez több szempontból is előnyös, mivel:
Egyszerűen az /etc/printcap állomány átírásával ki tudunk próbálni több kommunikációs beállítást, nem kell magát a szűrőprogramot újrafordítanunk.
A nyomtatási rendszer képes ugyanazt a szűrőt több, különböző kommunikációs beállítást alkalmazó nyomtatóhoz is használni.
Az /etc/printcap állományban az lp tulajdonsággal megadott eszközök soros kommunikációjának beállításait az alábbi tulajdonságok határozzák meg:
Beállítja az eszköz adatátviteli sebességét a sebesség értékre, ahol a sebesség lehet 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19 200, 38 400, 57 600 vagy 115 200 bit másodpercenként (bps).
Beállítja az eszköz megnyitása után használt termináleszköz működésének paramétereit. Az stty(1) man oldalon többet is megtudhatunk róluk.
Miután az LPD megnyitja az lp tulajdonsággal megadott eszközt, beállítja az ms# tulajdonság értéke szerint annak jellemzőit. Itt a parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, és ixon módok lehetnek lényegesek, melyekről az stty(1) man oldalon többet is megtudhatunk.
Állítsunk most akkor be az egyik képzeletbeli nyomtatónkat a hatodik soros portra. Az adatátviteli sebessége 38 400 bps lesz. A kommunikáció módjánál kapcsoljuk ki a paritást (-parenb), 8 bites karakterek legyenek (cs8), ne legyen modemes vezérlés (clocal) és a hardveres forgalomirányítás legyen 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:
Most már utasíthatjuk az LPD-t, hogy milyen szövegszűrőt használjon a munkák nyomtatóra küldéséhez. A szövegszűrő (text filter), vagy más néven bemeneti szűrő (input filter) egy olyan program, amelyet az LPD egy nyomtatási feladat elvégzésekor lefuttat. Amikor az LPD lefuttatja a nyomtatóhoz tartozó szövegszűrőt, a szűrő szabványos bemenetére elküldi a kinyomtatandó munkát, és a szabványos kimenetét pedig átirányítja az lp tulajdonság által megadott nyomtatóeszközre. Ennek megfelelően a szűrőnek a szabványos bemenetről kell olvasnia az elvégzendő feladatot, a szabványos kimenetre pedig a ténylegesen nyomtatandót kell kiírnia. A szövegszűrők részleteiről a Hogyan működnek a szűrők? szakasz szól.
A mi esetünkben most szövegszűrőnek tökéletesen megfelel egy olyan rövid szkript, ami a nyomtatóra a munkát a /bin/cat paranccsal küldi ki. A FreeBSD-ben még találhatunk egy másik szűrőt is, amelynek a neve lpf. Ez képes a törlést és aláhúzást jelző karaktereket érthetővé tenni bizonyos nyomtatók számára. Természetesen itt használhatunk kedvünk szerinti szűrőt is. Az lpf szűrő működésének részleteit Az lpf szövegszűrő című szakaszban fejtjük ki bővebben.
Először is készítsünk egy /usr/local/libexec/if-simple nevű egyszerű szövegszűrő szkriptet. A kedvenc szövegszerkesztőnkkel írjuk bele a következő sorokat:
#!/bin/sh # # if-simple - egyszerű szövegszűrő szkript az lpd-hez # Helye: /usr/local/libexec/if-simple # # Egyszerűen átmásolja a kimenetére a bemenetéről érkező adatokat; nem # fogad el semmilyen paramétert. /bin/cat && exit 0 exit 2
Tegyük indíthatóvá:
# chmod 555 /usr/local/libexec/if-simple
Ezután tájékoztassuk róla az LPD-t az /etc/printcap állományban található if tulajdonság megadásával. Itt most a példánkban szereplő mind a két nyomtatóhoz beillesztjük:
# # /etc/printcap (rose) - a szövegszűrő hozzáadása # 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/ttyd5:ms#-parenb cs8 clocal crtscts:\ :if=/usr/local/libexec/if-simple:
Megjegyzés: Az if-simple szkript megtalálható a /usr/share/examples/printing könyvtárban.
Az lpd(8) az /etc/rc szkriptből, az lpd_enable változó értékének megfelelően indul el. Ennek értéke alapból NO, vagyis nem. Ha eddig még nem tettük volna meg, akkor az /etc/rc.conf állományba most vegyük fel a következő sort:
lpd_enable="YES"
Ezután vagy indítsuk újra a számítógépünket, vagy pedig adjuk ki az lpd(8) parancsot:
# lpd
Elérkeztünk az LPD egyszerű beállításának utolsó lépéséhez. Sajnos azonban még nem gratulálhatunk, hiszen hátra van még a nyomtató kipróbálása és az esetlegesen előforduló hibák kijavítása. A beállítást úgy tudjuk a legegyszerűbben letesztelni, ha megpróbálunk valamit kinyomtatni. Az LPD rendszerben az lpr(1) parancs használatával tudunk nyomtatási feladatokat kiadni.
A kommunikáció ellenőrzése című szakaszban megtalálhatjuk, hogy hozzunk létre tesztelésre alkalmas szövegeket az lpr(1) és az lptest(1) programok segítségével.
Az LPD beállításainak egyszerű tesztelése:
Írjuk be:
# lptest 20 5 | lpr -P
nyomtatónév
ahol a
nyomtatónév az
/etc/printcap állományban
megadott egyik nyomtató neve (vagy álneve)
lehet. Az alapértelmezett nyomtató
kipróbálásához ne adjunk meg az
lpr(1) parancsnak semmilyen -P
paramétert. Még egyszer
megemlítenénk, hogy amennyiben PostScript
nyomtatót tesztelünk, az előbbi helyett az
lptest(1) paranccsal küldjünk ki egy
PostScript programot. Ehhez tegyük a tesztelő
programunkat egy állományba, majd írjuk
be az lpr
állománynév
parancsot.
A PostScript nyomtató esetén a kiküldött program eredményét kell látnunk. Amennyiben az lptest(1) parancsot használjuk, valami ilyesmire kell számítanunk:
!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678
A nyomtató kimerítőbb teszteléséhez próbáljunk meg nagyobb programokat keríteni valahonnan (ha a nyomtatónk valamilyen nyelven kommunikál) vagy adjunk meg az lptest(1) parancsnak más paramétereket. Például az lptest 80 60 soronként 80 karaktert írat ki 60 sorban.
Amennyiben a nyomtató nem működne, nézzük meg a Hibakereséshez tartozó szakaszt.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.