Printing HOWTO powinno zawierać wszystko co powinieneś wiedzieć, aby ustawić drukarkę na swoim Linux-ie. Jest to trochę bardziej skomplikowane niż w świecie pokaż-i-kliknij Microsoft-u i Apple'a, ale za to bardziej elastyczne i z pewnością prostsze jeśli chodzi o administrowanie w dużych sieciach lokalnych.
Dokument ten jest tak ułożony, że większość będzie musiała przeczytać tylko pierwszą połowę czy coś koło tego. Większość nieciekawych informacji i takich, które są zależne od sytuacji znajduje się w drugiej połowie i łatwo je znaleźć w spisie treści, podczas gdy informacje zawarte w sekcjach 9 i 10 będą potrzebne większości.
Większość informacji z poprzedniej wersji zostało usuniętych, ponieważ zdecydowałem się na napisanie tego dokumentu całkowicie od nowa. Zrobiłem tak, bo poprzednie wersje były takie wielkie - około 60 stron A4, i narracja była do kitu. Jeśli nie znalazłeś tutaj odpowiedzi to powinieneś a) przeszukać poprzednią wersję na stronie domowej tego HOWTO, b) podrzucić mi informację co powinno tu być, a nie ma tego.
Strona domowa tego HOWTO jest dobrym miejscem na szukanie
nowszych wersji tego dokumentu; jest ona oczywiście także
dystrybuowana przez Projekt Dokumentacji Linux-a; archiwum zawierające
dokumenty HOWTO możesz znaleźć w Polsce pod adresem
ftp.icm.edu.pl w katalogu
/pub/Linux/sunsite/docs/HOWTO.
To jest trzecia generacja, a szczerze mówiąc, to trzecia edycja zrobiona od nowa, dokumentu Printing-HOWTO. Historia PHT może w ujęciu chronologicznym wyglądać tak:
Prawa autorskie należą do Granta Taylora (c) 1997. Proszę kopiować i dystrybuować ten dokument do woli, ale nie modyfikoewać ani nie zapomnieć mojego nazwiska.
Jeśli masz już zainstalowany program lpd i jest on ustawiony dla twojej drukarki przez kogokolwiek, to wszystko czego potrzebujesz, to nauczyć się posługiwać poleceniem lpr. Dokument Printing-Usage-HOWTO zawiera opis tego polecenia i kilku innych używanych do manipulowania kolejką wydruku.
Jednak jeśli masz nowy system albo nową drukarkę, to będziesz musiał ustawić serwis drukowania w ten lub inny sposób zanim będziesz mógł drukować. Czytaj dalej!
Jądro Linux-a (<=2.1.32), zakładając, że wkompilowałeś lub załadowałeś
urządzenie lp (polecenie cat /proc/devices powinno
pokazać urządzenie lp), dostarcza jedno lub więcej urządzeń
/dev/lp0, /dev/lp1 i /dev/lp2. Nie są
one kojarzone dynamicznie, ale są one na stałe przypisane
konkretnym adresom I/O. Oznacza to, że twoja pierwsza drukarka może
być na lp0, albo lp1 w zależności od sprzętu. Spróbuj
obu. ;)
Kilku użytkowników zgłosiło, że ich dwukierunkowe porty lp nie zostają wykryte jeśli używają starszego, jednokierunkowego kabla. Sprawdź czy masz przyzwoity kabel.
Na danym porcie nie można mieć na raz sterowników plip oraz lp. Ale można załadować jeden albo drugi sterownik w każdej chwili; ręcznie albo przez kerneld przy jądrze w wersji 2.x.x (lub późniejsze 1.3.x). Jeśli dokładnie ustawisz przerwania itp., to możesz przypuszczalnie mieć plip na jednym porcie, a lp na drugim. Jedna osoba zrobiła tak, przez edycję sterowników; z niecierpliwością oczekuję osoby, która zrobiłaby to tylko przy użyciu argumentów z linii poleceń.
Jest takie narzędzie zwane tunelp, przy pomocy którego "root" może ustawiać przerwania i inne opcje na urządzeniu lp.
Jeśli urządzenie lp jest wbudowane w jądro w wersji 1.3.x lub
wyższej, to możesz przekazać parametr lp= do jądra, w którym
możesz ustawić przerwanie, adres itp.
Jeśli sterownik lp jest wbudowany w jądro, to możesz użyć parametru LILO/LOADLIN, aby ustawić adres portu i przerwanie, których sterownik będzie używał. Składnia: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] Na przykład: lp=0x378,0 lub lp=0x278,5,0x378,7 ** Zauważ, że jeśli używasz tego parametru, to musisz podać *wszystkie* porty, których będziesz używać - nie ma wartości domyślnych. Możesz wyłączyć wbudowany sterownik parametrem lp=0.
Jeśli ładujesz sterownik drukarki jako moduł w wersji jądra 2.x.x
lub późnej 1.3.x, to możesz podać przerwanie i port jako parametr w
linii poleceń przy insmod (albo w pliku
/etc/conf.modules, żeby działało także dla
kerneld). Parametry to: io=port0,port1,port2 i
irq=irq0,irq1,irq2. Więcej informacji znajdziesz w podręczniku
systemowym man na stronie dotyczącej insmod.
**Dla tych, którzy (jak ja) nigdy nie mogą znaleźć standardowego portu kiedy go potrzeba, to są one takie jak w podanym wyżej drugim przykładzie. Drugi port (lp0) jest pod adresem 0x3bc. Nie mam pojęcia jakiego przerwania zwykle używa.
Kod źródłowy linux-owego sterownika portu równoległego jest w pliku /usr/src/linux/drivers/char/lp.c
Począwszy od jądra w wersji 2.1.33 (dostępne także jako łata dla jądra 2.0.30), urządzenie lp jest po prostu klientem nowego urządzenia parport. Dodanie urządzenia parport naprawia pewną ilość błędów, które dręczyły poprzedni sterownik urządzenia lp - może ono wpółdzielić port z innym urządzeniem, przypisuje dynamicznie dostępne porty równoległe numerom urządzeń zamiast wymuszać z góry narzuconą komunikację pomiędzy adresami I/O a numerami portów i tak dalej.
Więcej szczegółów na temat parport podam kiedy sam znajdę się w sytuacji kiedy będę tego używał. A w międzyczasie możesz przeczytać plik Documentation/parport.txt w drzewie ze źródłami jądra albo zajrzyj na stronę parport.
Urządzenia szeregowe pod Linux-em zwykle nazywają się
/dev/ttyS1 lub podobnie. Narzędzie
stty pozwala na interaktywne przeglądanie lub określanie
ustawień dla portu szeregowego;
setserial
pozwoli ci na kontrolowanie kilku rozszerzonych właściwości oraz na
skonfigurowanie IRQ i adresów I/O dla niestandardowych
portów. Więcej na temat portów szeregowych znajdziesz w
Serial-HOWTO dostępnym także w języku polskim.
Jeśli używasz wolnej drukarki szeregowej z kontrolą przepływu (flow control), może się okazać, że niektóre z twoich wydruków są obcinane. Może być to spowodowane zachowaniem portu szeregowego, który wyrzuca wszystkie znaki ze swojego bufora po 30 sekundach od momentu zamknięcia portu. W buforze może się znajdować do 4096 znaków a jeśli twoja drukarka używa kontroli przepływu i jest wystarczająco wolna, tak że nie może przyjąć wszystkich 4096 znaków z portu w ciągu 30 sekund, po tym jak oprogramowanie drukujące zakmnęło port, to końcowa zawartość bufora zostanie utracona. Jeśli w wyniku polecenia cat plik > /dev/ttyS2 pojawia się cały wydruk dla krótkich plików, a dłuższe są obcinane, to to może być twój problem.
Okres 30 sekund może zostać zmieniony poprzez opcję "closing_wait" programu setserial (wersja 2.12 i późniejsze). Porty szeregowe maszyny są z reguły inicjowane poprzez odwołanie do setserial w pliku startowym rc.serial. Odwołanie do portu szeregowego drukarki może być zmodyfikowaicjowednio do serwera - nie można jej niestety użyć przy routingu pakietów pomiędzy dwiema sieciami LAN - muszisz dodać do tabeli routingu odpowiednie trasy.
Prawdopodobnie chcesz aby użytkownicy twojego serwera PPP korzystali z
dysnamicznego przydzielania adresów IP. Można to osiągnąć przypisując
każdemu portowi szeregowemu inny adres IP. Zrobisz to umieszczając
odpowiednią inforamacje w plikach /etc/ppp/options.ttyXX.
Po prostu umieść tam lokalny muer IP (serwera PPP) i numer IP, który ma być wykorzystywany przez ten port. Np.
kepler:slip01
Ponieważ uruchomienie połązeniea PPP jest związane z konfiguracją urządzeń sieciowych i manipulowaniem tabelą routingu, dlatego wymagane są do tego specjalne uprawnienia - w rzeczywistości uprawnienia administratora.
Na szczęści pppd został zaprojektowany do takiego użycia i możemy włączyć bit suid root. Musisz po prostu wydać polecenie
chmod u+s /usr/sbin/pppd
Teraz atrybuty tego pliku powinny wygładać tak
-rwsr-xr-x 1 root root 74224 Apr 28 07:17 /usr/sbin/pppd
Jeśli tego nie zrobisz, twoi użytkownicy nie będą mogli uruchomić połączenia PPP.
Aby uprościć użytkownikom pewne działania, w pliku
/etc/bashrc tworzymy globalny alias, tak aby proste polecenie
uruchamiało całą procedurę PPP po stronie serwera.
This looks like
alias ppp="exec /usr/sbin/pppd -detach"
Co to znaczy?
w mniej więcej tak
6:24pm up 3 days, 7:00, 4 users, load average: 0.05, 0.03, 0.00 User tty login@ idle JCPU PCPU what hartr ttyC0 3:05am 9:14 -
I to już wszystko... mówiłem, że zrobienie prostego serwera PPP jest banalne.
TO jest jeszcze prostsze - nie ma modemu to znaczy nie trzeba dzwonić.
Po pierwsze wybierz ,który kompter będzie pracował jako 'serwer'. Muszisz skonfigurować na porcie szeregowym getty, abyś mogł za pomocą minicomu przetestować połączenie z drugiego komputera.
Jeśli połączenie między portami działa poprawnie, możesz usunąć niepotrzebne getty, CHYB, że chcesz aby to połączenie bylo weryfikowane przez identyfikator i hasło. Ponieważ masz kontrolę nad oby komputerami podejżewam, że nie jest ci to potrzebne.
Teraz, na serwerze należy usunąć getty i upewnić się, że porty na obu komputerach są skonfigurowane tak samo.
Teraz musisz tylko ruchomićna obu systemach pppd. Zakładam, że po obu stronach będzie to port /dev/cua4. Na oby komputerach wydaj polecenie :-
pppd -detach crtscts lock <local IP>:<remote IP> /dev/cua4 38400 &
Spowoduje to zestawienie połączenia - lecz nie masz jescze poprawionych tabel routingu. Możesz przetestować połączenie 'pingując' komputery nawzajem, a następnie zamknąć połączeni zabijając jeden z procesów pppd.
Routing jaki jest potrzebny zależy od tego co tak naprawdę chcesz robić. Zwykle jeden z komputerów będzie przyłączony do Ethernetu, a przez to do Internetu, więc wymagany routing jest taki sam, jak w przypadku serwera i klienta PPP.
Na komputerze wyposarzonym w kartę Ethernetu należy wydać polecenie
pppd -detach crtscts lock proxyarp <local IP>:<remote IP> /dev/cua4 38400 &
a na tym drugim
pppd -detach crtscts lock defaultroute <local IP>:<remote IP> /dev/cua4 38400 &
ppp-on i ppp-off w dokładnie taki sam
sposób, jaki został opisany wcześniej.
Robert Hart
Port Hedland, Western Australia
August 1996
Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całęgo dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.
Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl
Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.
piotr.pogorzelski@ippt.gov.pl.