Ú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íttessünk fejléceket, hogyan nyomtassunk 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 legnehezebb 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 nyomtattunk is 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(R) 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 tintapatronokban levő tinta mennyiségét. A második esetben a nyomtató ismeri a PostScript(R) nyelvet.
A PostScript(R) nyelvű nyomtatási feladatok valójában a nyomtatónak küldött programok. Használatukhoz még papírra sincs feltétlenül szükség, és előfordulhat, hogy közvetlenül a számítógépnek válaszolnak. A PostScript(R) 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(R) 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(R) 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ő, 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, amely leginkább a null-modem kábelekhez hasonlít, 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 a nyomtató által használt portra. Ehhez A rendszermag beállítása szakaszban olvashatjuk el, 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 az
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, amelyben 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 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ódszert 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 az 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 a 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 a 96 kinyomtatható ASCII karaktert.
A PostScript(R) (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(R) 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(R) 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.
A kézikönyvben a nyomtató nyelve alatt leginkább egy PostScript(R)-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(R) 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(R) 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(R) 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(R) 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.
A magasabb szintű nyomtatók, mint például a PostScript(R) 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ő nyomtatási feladatok 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(R) (vagy más egyéb) nyelvre tolmácsoló programot. Erről a Szöveges nyomtatási feladatok PostScript(R) 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 kezdjük
felsorolni, mindegyik álnevet egy
függőleges vonallal válasszunk el,
és az utolsó után tegyünk
pontosvesszőt.
A most következő példában egy
olyan vázt mutatunk be az
/etc/printcap
állományhoz, amelyben két
nyomtatót (egy Diablo 630
márkájú sornyomtatót és
egy Panasonic KX-P4455 típusú PostScript(R)
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 nyomtatási feladatot 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
(úgymint
"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 bal szélső oszlopban kezdődik, 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
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 végre szeretne hajtani egy nyomtatási
feladatot, 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özt fogja
használni, ha nem adjuk meg az lp
tulajdonságot az /etc/printcap
állományban. A /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:
br#sebesség
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).
ms#stty-mód
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ítsuk most 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
nyomtatási feladatok eszközre
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 az
elvégzendő nyomtatási feladatot,
é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 nyomtatási
feladatot 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
:
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 -Pnyomtató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(R)
nyomtatót tesztelünk, az előbbi helyett az
lptest(1) paranccsal küldjünk ki egy
PostScript(R) programot. Ehhez tegyük a tesztelő
programunkat egy állományba, majd írjuk
be az lpr
állománynév
parancsot.
A PostScript(R) 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):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.