Zbigniew S. Szewczak Systemy Operacyjne

Transkrypt

Zbigniew S. Szewczak Systemy Operacyjne
Zbigniew S. Szewczak
Systemy Operacyjne
Wykład 5
System we/wy. Wydruk i grafika.
Toruń, 2004
O czym będzie?
☛Podsystem we/wy
☛Struktura systemu wydruku
☛Unixowy system wydruku - LPRng
☛Drukowanie w sieciach Microsoft
☛Systemy wydruku NetWare
☛LPD w systemach MS
☛System wydruku CUPS
☛X-Window System
☛Serwer XDM
☛Przykłady
Podsystem we/wy
☛Komputer wykonuje dwa podstawowe zadania
☛przetwarza informacje
☛obsługuje działania na wejściu i wyjściu
☛Zadaniem systemu operacyjnego w odniesieniu
do urządzeń we/wy jest
☛zarządzanie operacjami we/wy
☛sprawowanie nadzoru nad operacjami we/wy
☛dopilnowywanie działania urządzeń we/wy
☛Zadania te są realizowane w jądrze przez
podsystem we/wy (ang. I/O subsystem)
Podsystem we/wy (c.d)
☛Trzy kategorie urządzeń we/wy: pamięć
zewnętrzna, sieć , interfejs z ludźmi
☛Postawowe elementy podsystemu we/wy
☛sprzętowe
☛porty, szyny, sterowniki urządzeń (ang. device controllers)
☛programowe
☛moduły we/wy, moduły sterujące (ang. device drivers)
tworzące interfejs dostępu podsytemu we/wy do urządzeń
we/wy
☛obsługa we/wy w jądrze systemu
☛wywołania systemowe we/wy
Sprzęt we/wy
☛Niezwykła różnorodność urządzeń zewnętrznych
☛Wspólne pojęcia
☛Port - punkt przez który urządzenie kontaktuje się z
komputerem
☛Szyna - wspólna wiązka przewodów do której są
podłączone urządzenia
☛układ szeregowy (ang. daisy chain) : A podłączone do B
podłączone do C i C podłączone do portu
☛Sterownik (ang. controller) - zespół układów
elektronicznych, które mogą kierować pracą portu, szyny
lub urządzenia
☛niekiedy wykonywany w postaci oddzielnej płyty z układami
elektronicznymi zwanej adapterem głównym (ang. host
adapter) - procesor,mikrokod,pamięć (np. SCSI, IDE)
Sprzęt we/wy (c.d.)
☛W jaki sposób procesor przekazuje polecenia
sterownikowi?
☛Sterownik ma rejestry do pamiętania danych i sygnałów
sterujących do których pisze i z których czyta procesor
☛specjalne rozkazy we/wy określające przesłanie danych na
adres portu
☛operacje we/wy odwzorowywane w pamięci operacyjnej
(ang. memory-mapped I/O)- rejestry są odwzorowywane w
przestrzeni adresowej procesora
☛Niektóre komputery stosują obie metody
☛PC: kontroler grafiki - odwzorowywanie ekranu w
pamięci, RS232C - rejestry we/wy, bufory
☛
Sprzęt we/wy (c.d.)
☛Port we/wy składa się z 4 rejestrów (dł. 1B-4B)
☛stan (ang. status) - zawiera bity czytane przez procesor
☛zakończenie polecenia,dostępność danych w rejestrze dane
wyjściowe, wykrycie błędu
☛sterowanie (ang. control) - zapisywany przez procesor
☛rozpoczęcie polecenia, zmiana trybu pracy urządzenia
(komunikacja pełnodupleksowa, szybkość portu)
☛dane wejściowe (ang. data-in) - czytany przez procesor
☛pobranie informacji z urządzenia
☛dane wyjściowe (ang. data-out) - dane zapisywane przez
procesor
☛Układy FIFO - rozszerzają pojemność rejestrów
Odpytywanie
☛Uzgadnianie (ang. handshaking) między procesorem
i sterownikiem; 2 bity do koordynowania relacji
producent-konsument
☛procesor - bit gotowości polecenia (ang. command-ready) w
rejestrze poleceń (ang. command register)
☛sterownik - bit zajętości=1 (ang. busy) w rejestrze stanu
☛Ciąg uzgodnień procesor-sterownik
☛Aktywne czekanie (ang. busy-waiting), odpytywanie
(ang.polling) - procesor czyta bit zajętości do czasu aż będzie on
równy 0
☛trzy cykle rozkazowe procesora do odpytania: czytanie rejestru
urządzenia, operacja koniunkcji (wydobycie bitu zajętości), skok
przy wartości niezerowej
Odpytywanie (c.d.)
☛Procesor ustawia bit pisania (ang. write bit) w rejestrze
poleceń i wpisuje bajt do rejestru danych wyjściowych
☛Procesor ustawia bit gotowości polecenia
☛Sterownik ustawia bit zajętości
☛Sterownik czyta rejestr poleceń
☛rozpoznaje polecenie pisania, czyta bajt z rejestru danych
wejściowych i wykonuje operację we/wy na urządzeniu
☛Sterownik ustawia bit gotowości polecenia na 0 i bit błędu
(ang. error bit) w rejestrze stanu oraz ustawia bit zajętości
na 0
UNIX - odpytywanie terminala
#include <fcntl.h>
main()
{
register int i, n;
int dp;
char bufor[256];
/* otworz terminal do czytania, z opcja bez opoznienia */
if ((dp = open("/dev/tty", O_RDONLY | O_NDELAY)) == -1)
exit();
n = 1;
for (;;) /* dla kazdego */
{
for (i = 0; i < n; i++)
;
if (read(dp, bufor, sizeof(bufor)) > 0 )
{
printf("wczytano za %d-tym razem\n", n);
n--;
}
else /* brak danych, powrot - opcja bez opoznienia */
n++;
}
}
Przerwania
☛Odpytywanie staje się niewydajne w sytuacji
rzadkich przypadków gotowości urządzenia
☛Osprzęt procesora ma scieżkę zwaną linią
zgłaszania przerwań (ang. interrupt request
line), którą procesor bada w cyklu rozkazu
☛Jeśli procesor wykryje przerwanie od sterownika
to przechowa dane określające bieżący stan
(PC) i wykona skok do procedury obsługi
przerwania (ang. interrupt-handler)
☛wykrycie przyczyny przerwania
☛wykonanie niezbędnych czynności
☛rozkaz powrotu z przerwania
Przerwania (c.d.)
☛Sprzęt sterownika przerwań (ang. interrupt
controller) powinien zapewnić
☛opóźnianie obsługi przerwania podczas działań
krytycznych
☛brak odpytywania urządzeń w celu wykrycia sprawcy
☛przerwania wielopoziomowe o różnym priorytecie
☛Przerwania maskowalne (ang. maskable)
pozwalają wyłączyć zgłoszenia żądań
☛Adres obsługi przerwania znajduje się w tablicy
zwanej wektorem przerwań (ang. interrupt
vector)
Przerwania (c.d.)
☛System poziomów priorytetów przerwań (ang.
interrupt priority levels) umożliwia opóźnianie
przez procesor obsługi przerwań
niskopriorytetowych bez maskowania wszystkich
przerwań i pozwala wywłaszczać procesy ich
obsługi
☛Mechanizm przerwania stosuje się również do
obsługi sytuacji wyjątkowych (ang. exceptions)
☛dzielenie przez 0, rozkaz uprzywilejowany
System wydruku
☛Drukowanie jest bardzo istotną częścią każdego
systemu operacyjnego
☛W systemie wielodostępnym użytkownicy mogą
dzielić drukarkę dzięki systemowi wydruku (ang.
print spooling system)
☛System wydruku umożliwia jednoczesne
☛wczytywanie i interpretowanie zadań wydruku
☛szeregowanie zadań wydruku
☛wykonanie zadań wydruku
☛obsługę błędów, zbieranie informacji rozliczeniowych
☛jednocześnie drukarka jest zasobem niepodzielnym
System wydruku (c.d.)
☛W systemie sieciowym mamy wiele połączonych
systemów operacyjnych realizujących zadania
wydruku w oparciu o model klient-serwer
☛Sieciowy system wydruku wykorzystuje protokół
sieciowy: SMB, TCP/IP, IPX/SPX lub inny do
transferu zadań wydruku
☛Serwery wydruku (ang. print spoolers)
współpracują ze sobą w celu realizacji zleconych
(ang. submit) zadań wydruku
☛
Print spooling: filozofia
Dokument
wejściowy
Program
klienta
Serwer
lokalny
filtr
Drukarka
lokalna
Dokument
wyjściowy
Config
SPOOL
lokalny
Serwer
zdalny
SPOOL
zdalny
Config
Drukarka
zdalna
filtr
Dokument
wyjściowy
Języki poleceń drukarek
☛PostScript (Charles W. Geschke & John E.
Warnock, 1982, Xerox, Adobe)
☛level 1,2,3 i Extreme (Supra)
☛PCL (Printer Command Language, HP)
☛PCL 1,2,3,4,5(np. LJ 5L),5E,5C,6
☛PDF (Portable Document Format, Adobe)
☛dokumenty elektroniczne
☛plug-in’y
☛
☛
Graficzne formaty danych
☛GIF - Graphics Interchange Format (1987)
☛kompresja LZW (patent, 1995), 256 kolorów, 72dpi
☛JPEG - Joint Photographic Engineering Group
☛PNG - Portable Network Graphics
☛nie używa LZW, strony WWW
☛TIFF - Tag Image File Format (1986)
☛ftp.adobe.com/pub/adobe/devrelations/devtechnotes/pdffiles/tiff
6.pdf
☛BMP (Microsoft), PCX (Paintbrush), XFC (GIMP)
☛wektorowe: EPS, WMF (Office), CDR (Corel), DRW
(Micrografx)
Typy połączeń
☛równoległe -LPT
☛EPP/ECP (Enhanced Parallel Port/ Enhanced Capabilities Port)
☛50kbps (Centronics) do 2Mbps (ECP)
☛Szeregowe - COM
☛RS232C (115,2Kbps)
☛USB 2.0 - 480Mbps
☛IrDA - Infrared Data Association (1933)
☛IrDA 1.0: 115,2Kbps do 1m; VFIR; 16Mbps - odchylenie 30‘
☛Fire Wire - IEEE 1394 (400Mbps, 63 urządzenia)
☛BlueTooth (1998) - 2,4Ghz (802.11), 1Mbps
☛Sieć - IPX/SPX, NetBEUI, TCP/IP, IPP
System sieciowy Linuxa
☛Jądro systemu Linux realizuje protokoły sieciowe
m.in. protokoły
☛TCP/IP, IPX/SPX, SMB
☛System Linux ma zaimplementowane systemy
sieciowe
☛NFS (Network File System)
☛SMB (Server Message Block) - samba
☛NCP (Network Control Program) - mars
☛Generacja jądra systemu Linux - dodajemy
obsługę drukowania (port równoległy,
szeregowy, USB, PCMCIA, IrDA, WLAN)
Składniki systemu wydruku
☛Elementy programowe potrzebne do realizacji
zadań wydruku
☛program serwera (ang. spooler)
☛program klienta
☛pliki konfiguracyjne
☛kolejki do drukarek
☛filtry
☛komendy administracyjne
☛Elementy sprzętowe : drukarki, papier, toner...
Oprogramowanie wydruku
☛Dostępność oprogramowania
☛Unix - dostępny w wersji źródłowej (lpd, LPRng,CUPS)
☛ftp.LPRng.com/pub/LPRng - LPRng,filtry, LPRngTool
☛ftp.enst.fr/pub/unix/a2ps - filtry(www.inf.enst.fr/~demaille/a2ps)
☛www.apsfilter.org
☛Windows NT/2K: klient jest częścią systemu, brak serwera
☛Windows 9x - brak klienta i serwera
☛http://tucows.icm.edu.pl/
☛Solstice - serwer i klient (trzeba kupić)
☛Cygwin (biblioteka na Win32) +LPRng
☛http://www.cygwin.com
☛Linux -> Mars - protokół NCP
☛Linux -> Samba - protokół SMB
Oprogramowanie wydruku (c.d.)
☛ghostscript, ghostview - pakiet obróbki *.ps
☛http://www.cs.wisc.edu/~ghost
☛file - sprawdzanie typu pliku
☛http://sourceforge.net/projects/gnuwin32
☛pakiet psutils
☛http://knackered.knackered.org/agnus/psutils.html
☛ImageMagick - konwesja formatów grafiki
☛http://www.imagemagick.org
☛pdftohtml
☛http://sourceforge.net/projects/pdftohtml/
☛htmldoc - konwersja na ps i pdf
☛http://www.eeasysw.com/htmldoc/
☛xpdf - www.foolabs.com/xpdf/
LPRng - struktura
☛LPRng - University of Waterloo
☛zastępuje przestarzały system wydruku BSD
☛http://www.lprng.com
☛LPRng-3.8.24.tgz - ostatnia wersja z 2 stycznia 2004 r.
☛Drukowanie w systemie LPRng
☛serwer wydruku (ang. print spooler) : lpd
☛kolejki spoolera: /var/spool/lpd
☛konfiguracja: /etc/printcap, /etc/lpd.conf, /etc/lpd.perms
☛klient: lpr, lpq, lprm (cancel)
☛komendy administracyjne: lpc, lpstat
☛
Funkcje serwera
☛lpd - daemon, który kontroluje wszystko co jest
drukowane {na komputerze | z komputera}
☛tryb lokalny spoolera
☛zapamiętuje zadanie w kolejce
☛szereguje zadania w kolecje
☛wybiera zadania z kolejki
☛dokonuje konwersji zadania za pomocą filtrów
☛wysyła plik na konkretną drukarkę
☛tryb zdalny spoolera - przesłanie (ang. forward ) zadania
do zdalnego lpd
☛
Funkcje klientów
☛lpr - program użytkownika, który kontaktuje się
z lpd i umieszcza zadanie w kolejce drukowania
☛lpq - monitoruje zawartości kolejek
☛lprm - usuwa zadania z kolejki
☛lpc - zarządzanie daemonem lpd
☛lpstat - emulacja Systemu V
Konfiguracja
☛protokół - plik /etc/services
☛ printer
515/tcp
#nr portu serwera lpd
☛urządzenia we/wy - drukarki
☛/dev/lp? ; /dev/ttyS?
☛plik konfiguracyjny drukarek
☛/etc/printcap
☛man printcap
☛pliki konfiguracyjne lpd
☛lpd.conf - konfiguracja demona lpd
☛lpd.perms - kontrola dostępu do demona lpd
☛
Definicje drukarek
☛Plik /etc/printcap
☛#drukarka lokalna
lp|alias1|alias2:\ # nazwy drukarki
:cm=Komentarz o drukarce: \
:lp=/dev/lp0: \ # nazwa urządzenia we/wy
:sd=/var/spool/lpd/lp: \ #katalog spoolera
:if=/usr/local/libexec/filters/lpf: \ #definiuje filtr
:rg=printer: \ #grupa, która może używać tej drukarki
:mx#0:\ # brak ograniczeń na wydruk
:sh: # wyłącza drukowanie nagłówka
☛
Definicje drukarek (c.d.)
☛Plik /etc/printcap
☛#drukarka zdalna
lp1|alias3:\
:cm=drukarka na maszynie anna: \
:lp=:rm=anna:rp=lp: # drukarka lp@anna
lp3|alias4:\
:cm=drukarka sieciowa HP \
:lp=158.75.2.16%9100
:sd=/var/spool/lpd/lp3 \
:lf=log:af=acct \ # log i rozliczenie do wydruku
:if=/usr/local/sbin/lpf \
:mx#0:sh:
Printcap - opcje
☛af - ścieżka do pliku rozliczeniowego
☛br - szykość transmisji w baudach
☛lf - log file
☛lo - plik blokujący
☛lp - urządznie drukujące
☛mx - wielkość zadania
☛pl - długość strony w liniach
☛pw - szerokość strony w znakach
☛rm - zdalny host
☛rp - zdalna drukarka
☛sd - spool directory
☛sh - drukowanie nagłówka
Przykłady - RedHat
☛/etc/printcap - lokalny
☛lp|lab73-local:\
:sd=/var/spool/lpd/lp:\
:lp=/dev/lp0:\
:lpd_bounce=true:\
:if=/usr/share/printconf/mf_wrapper:\
:filter=/usr/libexec/filters/lpf: \
:ml=0:mx=0:sh:
☛/etc/printcap - zdalny
☛lp|lab73-printer:\
:lp=:rm=158.75.12.73:rp=lp:mx#0:sh:
☛/etc/rc.d/init.d/lpd restart
Konfiguracja graficzna
☛Konfiguracja podczas instalacji
☛Name of queue: lp
☛Spool directory: /var/spool/lpd/lp
☛PrintTool RedHat
☛Control Panel->Printer Configuration->Add
☛Local Printer - drukarka przyłączona do fizycznego portu
☛Name: lp
☛Spool Directory: /var/spool/lpd/lp
☛Printer Device: /dev/lp1
☛Input Filter: select
☛Remote Unix (lpd) Queue - drukarka zadalna (TCP/IP)
☛Lan Manager Printer (SMB) - do komunikacji używamy SMB
☛NetWare Printer (NCP) - do komunikacji używamy NCP
☛
Uprawnienia do drukowania
☛Plik /etc/group - definicje grupy użytkowników,
którzy mogą drukować
☛printer::17:root,ewa,jan,....
☛plik /etc/hosts.lpd - lista maszyn, z których
można drukować (BSD)
☛plik /etc/lpd.perms - w pakiecie LPRng
☛plik /etc/lpd.conf - w pakiecie LPRng
lpd.perms
☛plik /etc/lpd.perms ☛zezwolenie na użycie komendy lpC rootowi na serwerze:
☛ACCEPT SERVICE=C SERVER REMOTEUSE=root
☛REJECT SERVICE=C
☛zezwolenie na użycie komendy lpR tylko w sieciach
158.75.2.0 i 158.75.12.0
☛REJECT SERVICE=R NOT
REMOTEIP=158.75.2.0/255.255.255.0 NOT REMOTEIP=
158.75.12.0/255.255.255.0
☛zezwolenie na użycie komendy lprM na drukarkę lp
rootowi z lab73
☛ACCEPT SERVICE=M HOST=lab73 PRINTER=lp
REMOTEUSER=root
☛
Instalacja i testowanie LPRng
☛Instalacja
☛gunzip -c LPRng-<wersja>.tgz | tar xvf ☛cd LPRng-<wersja>
☛./configure --prefix=/usr --sysconfdir=/etc
☛make clean all
☛su
☛make install
☛Testowanie - wymaga uprawnień roota
☛checkpc - służy do sprawdzenia konfiguracji
☛checkpc -f -V - usuwa ewentualne błędy
☛lpq
☛lpc -P start
Klient lpd - Unix
☛Zarządzanie wydrukiem
☛lpc -S serwer -P drukarka komenda
☛komenda = hold | kill | start | stop | status
☛Drukowanie
☛lpr -P drukarka nazwa.pliku
☛sprawdzanie zadania w kolejce
☛lpq -P drukarka
☛usuwanie zadania z kolejki
☛lprm -P drukarka nr_zadania
☛
Klient lpd - Unix (c.d.)
☛lpr -Pprinter@host
☛lpr -Plp@lab73
☛lpr [email protected]
☛lpr -Plp
☛lprm -Pprinter <nr-zadania>
☛lprm -Psmb 123
☛lpc -Pprinter
☛lpc -Plp <start|restart|stop>
☛lpq -Ppinter
☛lpq -Plp
☛
Samba - system wydruku
☛System sieciowy Samba pozwala na dzielenie
drukarek z klientami SMB
☛Możliwe kombinacje
☛serwer Samby <- klient Samby - lepiej użyć lpd
☛serwer Samby <- klient Windows
☛klient Samby -> udział drukarkowy
☛klient Windows -> udział drukarkowy
☛Samba (pośrednio) wykorzystuje demona
wydruku lpd
Samba - system wydruku
☛Elementy składowe konfiguracji
☛plik /etc/printcap
☛plik /etc/samba/smb.conf
☛Elementy składowe oprogramowania
☛LPRng
☛Samba : program smbclient
☛System Windows
☛Drukarka pod Linuxem lub Windows
☛
Definicja drukarki - Samba
☛Plik /etc/printcap
☛#drukarka na Windows
smb|remote-smbprinter:\
:cm=drukarka na W9x: \
:lp=/dev/null: \
:sd=/var/spool/lpd/lp: \
:if=/usr/local/sbin/smbprint-script:\
:sh:
☛przykład skryptu smbprint-script
☛#! /bin/sh
☛/usr/bin/smbclient \\\\lab73\\druk -U guest -N -c ``print -``
☛
Plik smb.conf
☛Sekcja [printers] pozwala na dzielenie
wszystkich drukarek zdefiniowanych w pliku
/etc/printcap
☛[printers]
comment = Wszystkie drukarki
path = /var/spool/samba #katalog spoolera drukarek SMB
printable = yes #zasób drukarkowy
guest ok = yes #dostęp gościnny
☛Jeśli nie chcemy dzielić drukarek z /etc/printcap
☛w sekcji [global] dajemy: load printers = no
☛definiujemy udział indywidualny dla drukarki
Indywidualny udział
drukarkowy
☛[druk]
☛comment = drukarka HP
☛printable = yes
☛print command = /usr/bin/lpr -r -P%p %s
☛lpq command = /usr/bin/lpq -P%p
☛lprm command = /usr/bin/lprm -P%p %j
☛printing = LPRng
☛read only = yes
☛guest ok = yes
☛comment - komentarz przy udziale [druk]
☛printable - udział drukarkowy
Opcje udziałów drukarkowych
(c.d.)
☛print command - ustawia polecenie wydruku
☛lpq command - ustawia polecenie przeglądania
kolejki wydruku
☛lprm command - ustawia polecenie usuwania
wydruku z kolejki
☛printing - system druku (BSD,LPRng,SYSV)
Interfejs graficzny. Testowanie
☛Printtool pozwala na graficzne definiowanie
drukarek SMB w pliku /etc/printcap
☛program SWAT pozwala na definiowanie
drukarek w pliku smb.conf
☛http://localhost:901
☛Konfigurację testujemy za pomocą
☛checkpc - /etc/printcap
☛testparm - /etc/samba/smb.conf
☛testprns <nazwa drukarki> /etc/printcap - sprawdza czy
drukarka jest w pliku /etc/printcap
☛smbclient -L localhost - listuje udziały (drukarkowe)
☛
Klient Samby - Unix
☛Smbclient - służy do przyłączenia drukarki
☛smbclient \\\\lab73\\druk -U guest
☛Password: <top-secret>
☛ smb:> print <plik> lub put <plik>
☛Przykład innej natury
☛smbclient \\\\lab73\\hplj5 -U guest -N -c “print <plik>“
☛
Konfigurowanie klienta
drukarki W9x
☛W9x
☛Otoczenie sieciowe - wybieramy drukarkę
☛właściwości->instaluj
☛Kreator dodawania drukarki
☛dodaj drukarkę
☛lokalną - port drukarki (LPT)
☛sieciową
☛producenci - HP
☛drukarki - HP LaserJet 5L PCL
☛właściwości->rozdzielczość-> 600 punktów na cal
☛
Konfigurowanie klienta
drukarki W9x (c.d.)
☛Wydruk strony (testowej)
☛na serwerze Samby
☛pod Windows
☛Tryby drukowania z Windows
☛graficzny: wybór drukarki
☛tekstowy: z linii komend
☛NET USE , NET PRINT
☛Udostępnianie drukarki
☛Ustawienia->Drukarki->drukarka lokalna->Właściwości->
->Udostępnianie
☛
Mars - system wydruku
☛Serwer Mars wykorzystuje demona wydruku lpd
do realizacji zleceń wydruku z systemu NetWare
☛Elementy składowe konfiguracji
☛/etc/nwserv.conf
☛/etc/printcap
☛Programy klienta (z pakietu ncpfs)
☛nprint - program wydruku
☛pqlist - program wypisujący dostępne drukarki w systemie
NetWare
☛
nwserv.conf - drukarki
☛Konfiguracja - plik /etc/nwserv.conf
☛# Section 21: print queues (optional)
21
LP
lpr 21
LP_PS
☛# Section 22: print server entries (optional)
22
LP_NWE
LP
1
☛# Section 40ff: Some pathes (optional)
40 /var/spool/nwserv/.volcache
41 /var/spool/nwserv/.locks
42 /var/spool/nwserv
45 /var/nwserv/db
46 /var/nwserv/attrib
☛
Drukarka dla NetWare
☛Plik /etc/printcap
☛#drukarka na serwerze NetWare
nw|remote-NWprinter:\
:cm=drukarka Novella : \
:lp=/dev/null: \
:sd=/var/spool/lpd/nw: \
:if=/var/spool/lpd/nprint-script:\
:sh:
☛skrypt - nprint-script
☛#! /bin/sh
☛/usr/bin/nprint -S lab73 -U guest -P top-secret -q lp -
☛
Pakiet ncpfs - NetWare
☛Program klienta
☛nprint -S server -U username -P password -q queuename
nazwa_pliku
☛nprint -S lab73 -U guest -P top-secret -q lp plik1
☛Program pomocnicze
☛pqlist - listuje serwery drukarek
☛pqlist -S lab73 -U guest -P top-secret
☛pqrm - usuwa zadanie z kolejki
☛Program serwera
☛pserver - program, który dopisuje zadania z kolejek na
serwerach NetWare do lpd Linuxie
☛pserver -S server -U username -P password -q queue
Inni klienci NetWare
☛Klienci Netware - Windows
☛Netware Client 32
☛tryb graficzny
☛Otoczenie sieciowe->NetWare Servers
☛tryb tekstowy
☛nlist printer
☛nprint <plik> printer <printer>
☛Klienci pod Linuxa
☛Caldera (SCO): www.caldera.com - serwer wydruku
☛
Klienci lpd dla W9x/NT
☛ Windows 9x
☛ACITS LPR - darmowy klient dla celów niekomercyjnych
☛Solstice - trzeba kupić
☛Windows NT/2K/XP
☛lpr - zawarty w systemie
☛lpr -S 158.75.12.74 -P hp <plik>
☛lpq -S 158.75.12.74 -P hp
☛Windows 9x/NT
☛C:\WINNT\SYSTEM32
☛LPR.EXE, LPQ.EXE, LPHELP.DLL
☛Cygwin (cygwin1.dll) + lpr z LPRng
☛
ACITS LPR - klient lpd dla W9x
☛University of Texas, Austin
☛http://www.utexas.edu/academic/otl/software/lpr/
☛instalacja
☛instlpr.exe
☛dodaj drukarkę
☛ACITS LPR Remote Printing
☛hostname lub IP adres
☛printer/nazwa kolejki
☛drukowanie z linii komend
☛ACITSLPR [-S <serwer>] [-P <printer>] [-O <filter>] [-R
<remote port>] [-T <timeout>] [-B] [-# <copies>] filename1
filename2 ..... filename (#####)
Print serwer dla Windows
☛Windows NT4/2K/XP
☛Panel Sterowania -> Dodaj/Usuń składniki systemu
Windows -> Inne usługi plików i drukowanie w sieci ->
Usługi drukowania dla systemu Unix
☛lpd, lpr
☛Windows XP - ograniczenie do 10 połączeń
☛ProNFS 1.8
☛9x/ME/NT/2K/XP
☛lpd, lpr
☛Cygwin + LPRng
CUPS
☛Common UNIX Printing System - 1999
☛http://www.cups.org
☛Historia
☛Unix - Berkeley LPD (rfc1179), AT&T System V - 1970☛LPRng, Palladin, PLP - lata 90’
☛Interent Printing Protocol (IPP) definiuje
rozszerzenia do protokołu HTTP w celu
zrealizowania usług zdalnego wydruku
☛CUPS 1.0 wykorzystuje IPP/1.0
☛CUPS jest oprogramowaniem GNU GPL
CUPS - architektura
Scheduler
CUPS API
config
imaging
filtry
backends
Berkeley
System V
LPT
LPD
IPP
SMB
CUPS - struktura
☛Scheduler - aplikacja w postaci serwera HTTP/1.1
☛Config - pliki konfiguracyjne
☛config schedulera - (podobny do httpd.conf)
☛pliki definiujące drukarki i klasy drukarek, kolejki
☛pliki konwersji(magic rules) i typów MIME(text/plain,..)
☛pliki PPD (PostScript Printer Description) - opisy drukarek
☛CUPS API - funkcje realizujące kolejkowanie,
wydruk, dostęp przez protokoły HTTP i IPP
☛Backend - program wysyłający dane na drukarki
☛Filtry - program przetwarzający dane do wydruku
☛Imaging - funkcje przetwarzania obrazu
CUPS - instalacja
☛tar xvzf cups-1.2.x-source.tar.gz
☛cd cups-1.2.x
☛./configure
☛make
☛su - root
☛make install
CUPS a LPRng
☛CUPS - domyślny w RedHat 9.0
☛Instalacja LPRng
☛montowanie płyty RH9(2)
☛mount /dev/cdrom /mnt/cdrom
☛cd /mnt/cdrom/RedHat/RPMS
☛rpm -i LPRng-3.8.19-3.i386.rpm
☛Wybór systemu wydruku
☛alternatives --display print
☛alternatives --config print
☛
CUPS - konfigurowanie
☛/etc/cups
☛cupsd.conf - plik konfiguracyjny schedulera
☛client.conf - plik konfiguracyjny klienta
☛printer.conf - plik konfiguracyjny drukarek
☛Print Manager - pasek Start
☛Printtool
☛dodanie drukarki lokalnej
☛locally-connected: LaserJet
☛dzielenie (ang. sharing)
☛Action sharing: Enable LPD protocol
☛wybór systemu sieciowego: SMB, NetWare,....
☛http://localhost:631
CUPS - startowanie
☛Automatyczne w trakcie startu systemu
☛pasek Start -> Services
☛wybór: cups-lpd, lpd,...
☛Ręczne
☛service cups start
☛service cups restart
☛service cups stop
System grafiki - założenia
☛Większość współczesnych systemów
operacyjnych jest wyposażona w użytkowy
interfejs graficzny
☛Sieciowy system operacyjny musi posiadać
zaimplementowane narzędzia pozwalające na
wykorzystanie tego interfejsu na zdalnych
monitorach
☛Model klient-serwer
☛Protokól sieciowy powinien umożliwiać łączenie
grafiki różnych systemów operacyjnych
☛
X Window System
☛X Window System, lub też X11 albo X jest
kompletnym interfejsem graficznym z okienkami
przeznaczonym dla systemów uniksowych
☛X-y zostały opracowane w ramach projektu
Athena realizowanego przez MIT i DEC
☛http://www.x.org
☛XFree86 implementacja X-ów dla architektury
i386 jest używana w Linuxie i Cygwinie
☛ftp.xfree86.org/pub/XFree86
☛Inne implementacje: CDE, Open Look
Systemy grafiki na W9x/NT
☛XFree86 może działać pod systemem Windows
☛Cygwin - emulator Unixa na W98/NT/2K/XP + XFree86
☛cd xfree/xc-4-binaries/4.1.0/
☛gunzip extract.exe
☛sh Xinstall.sh
☛Solstice
☛VNC Server
☛Microsoft Terminal Services
☛http://www.microsoft.com/windows2000/technologies/terminal
☛Inne produkty
☛http://www.citrix.com/
☛http://www.metrolink.com/
Pojęcia związane z X-ami
☛DISPLAY - zmienna środowiskowa
☛<nazwa_komputera>:numer_displaya.numer_ekranu
☛nazwa_komputera - specyfikuje maszynę
☛numer_displaya - specyfikuje zwykle monitory z tą samą myszą
i klawiaturą
☛X serwer - program zajmujący się udostępnianiem
zasobów graficznych
☛X klient - program aplikacji, który wysyła żądania
do X serwera (np. narysuj linię)
☛Przykłady X klienta
☛xterm - emuluje terminal
☛menedżer okien - zarządzanie oknami:TWM, GNOME, KDE
Struktura X11
☛/usr/X11R6 - główny katalog
☛/usr/X11R6/bin - programy X-owe
☛/usr/X11R6/lib - biblioteki ładowalne
☛/usr/X11R6/lib/X11 - pliki konfiguracyjne ( lub /etc/X11)
☛/usr/X11R6/lib/X11/app-defaults - wartości domyślne
☛/usr/X11R6/lib/X11/fonts - katalogi z fontami
☛/usr/X11R6/lib/x11/rgb.txt - nazwy kolorów
☛/usr/X11/xinitrc - plik inicjujący system X
☛/etc/X11/.Xresources - plik zasobów X
☛/etc/X11/.Xmodmap - plik konfigurujący urządzenia
wejściowe systemu X
☛/etc/X11/xdm -menedżer sesji systemu X
Przykład
☛ps -ax
☛PID TTY STAT TIME COMMAND
1 ?
S 0:04 init
..............................................................
600 ?
S 0:00 xfs -droppriv -daemon -port -1
671 tty1 S 0:00 sh /usr/X11R6/bin/startx
678 tty1 S 0:00 xinit /etc/X11/xinit/xinitrc -- :0
679 ?
S 0:01 /etc/X11/X :0 -auth /root/.Xauthority
682 tty1 S 0:00 /usr/bin/gnome-session
696 tty1 S 0:00 gnome-smproxy --sm-client-id default0
702 tty1 S 0:00 enlightment -clientId default2
717 tty1 S 0:00 panel --sm-client-id default8
☛
Działanie X-ów
☛Jedyny fragment systemu X dowiązany do
konkretnego sprzętu (t.j. karty grafiki, myszy i
klawiatury) to X serwer
☛Każda zdalna aplikacja realizowana przez serwer
musi po uzyskaniu zgody na realizację
wynegocjować warunki swego działania
☛Problemy wynikające z tego to
☛startowanie X serwera
☛uwierzytelnianie aplikacji oraz cechy wspólne
☛określenie wartości domyślnych (zasobów graficznych)
aplikacji
☛kontrola i obsługa czcionek (fontów)
Działanie X-ów (c.d.)
☛Komenda X, initx, startx, xdm
☛zamykanie Ctrl-Alt-Backspace
☛Uwierzytelnianie
☛xauth - program do uwierzytelniania dla X serwera
☛xauth extract -$DISPLAY|rsh pc1 xauth merge -
☛xhost - dodawanie i usuwanie hostów uprawnionych do
korzystania z X serwera (/etc/X0.hosts)
☛xhost + - dodaj wszystkich
☛opcje aplikacji (cechy wspólne) mogą być
definiowe przez użytkownika z linii komend lub
zapamiętane w bazie danych o zasobach rdb
(resource database)
Opcje aplikacji
☛-display host:0
☛-geometry szerokość x wysokość {+|-} XOFF
{+|-} YOFF
☛XOFF - odległość od lewego (+) lub prawego (-)
marginesu w pixelach
☛YOFF - odległość od górnego (+) lub dolnego (-)
marginesu w pixelach
☛xterm -geometry 80x24+30+200 -display lab78:0
+0+0
+0 -0
☛
-0+0
-0 -0
Opcje aplikacji (c.d.)
☛-bg kolor - kolor tła
☛-fg kolor - kolor tekstu
☛-bd kolor - kolor brzegu
☛-bw liczba - szerokość brzegu okna
☛-fn font - nazwa czcionki dla tekstu
☛Do obsługi bazy danych rdb wykorzystuje się
program xset, którym użytkownik zmienia
wartości domyślne (np. czcionki) zawarte w
pliku .Xresources i .Xdefaults
☛xset b on - włącza głośniczek
☛Definicja myszy i klawiatury : Xmodmap
Obsługa czcionek
☛Czcionki możemy brać z
☛dysku lokalnego lub zdalnego (NFS)
☛z serwera fontów xfs przez TCP/IP
☛Narzędzia do obsługi czcionek
☛xfd, xlsfonts - wylistowanie czcionek
☛xfontsel - wyświetlenie czcionki
☛xset - dodaje lub usuwa czcionkę
☛xset +fp /usr/local/fonts/myfont
☛xbdftopcf - konwertuje fonty bdf ( Bitmap Distribution Format)
na pcf (Portable Compiled Format)
☛mkfontdir - tworzy index w katalogu fonts.dir, z którego
korzysta X serwer oraz serwer fontów xfs
Nazwy czcionek
☛System nazw: X Logical Font Description (XFLD)
☛-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso88591*-fixed-bold-r-normal--13-120-*-*-*-*-*-*
☛adobe - właściciel
☛courier - rodzaj
☛medium - wielkość
☛r - krój (rozmiar)
☛normal - szerokość
☛8 - rozmiar w pixelach
☛80 - rozmiar w dzisiątkach punktów
☛75 - roździelczość w dpi
☛m - font o stałej szerokości (p - proporcjonalny)
☛iso8859-1 - zbiór znaków Latin1 (nadzbiór ASCII)
☛
Wyszukiwanie czcionek
☛X serwer startując buduje tablicę fontów na
podstawie plików fonts.dir i fonts.alias
☛Jeśli aplikacja żąda określonego fontu - X serwer
sprawdza, czy inna aplikacja korzysta już z takiego
fontu
☛Jeśli nie, to idzie zgłoszenie do serwera fontów lub
rozpoczyna się poszukiwanie w tablicy fontów
☛Jeśli żądany font nie został znaleziony, to w
zależności od ustawienia automatycznego
podstawiania fontów serwer szuka podobnego
fontu lub zwraca informację o błędzie
☛
XDM
☛Jeśli chcemy mieć X-y na stałe w systemie
posługujemy się menedżerem sesji xdm (ang. X
Display Manager) do zainicjowania interfejsu
graficznego
☛W typowej systuacji xdm jest startowany w czasie
rozruchu systemu (ang. boot)
☛Na początku xdm pokazuje okno zalogowania
☛Po zalogowaniu na serwer X-ów (lokalny lub
zdalny) xdm inicjuje środowisko graficzne (
menedżer okien - twm)
☛Menedżery sesji(okien): GDM(Gnome), KDM(KDE)
XDMCP
☛Xdm kontaktuje się za pomocą protokołu
XDMCP (ang. X Display Manager Control
Program)
☛XDMCP dostarcza mechanizów dla łatwej i taniej
realizacji X terminala w systemie Linux
☛Tryby kontaktowania się XDM z X serwerem
☛broadcast - zapytanie do wszystkich hostów z xdm
☛indirect - zapytanie do pewnego hosta z xdm, który może je
przesłać dalej
☛direct - zapytanie do konkretnego hosta, na którym działa
xdm
☛
Chooser
☛Kiedy xdm uzyskuje odpowiedź w trybie
indirect, xdm może wywołać proces chooser aby
wykonać kolejne zapytanie w trybie broadcast
lub direct
☛Chooser zestawia menu z nazw hostów, które
oferują zarządzanie XDMCP
☛Chooser jest wygodnym sposobem utworzenia
menu o dostępnych X serwerach w imieniu
bezdyskowych X terminali
☛
Pliki konfiguracyjne xdm
☛xdm-config - główny plik konfiguracyjny
☛xdm-errors - informacje o błędach w pracy xdm
☛Xsession - skrypt startowy do sesji użytkownika
☛Xaccess - uprawnienia dla dostępu
☛Xresources - ustawienie zasobów do okna
logowania xdm
☛.Xauthority - plik uwierzytelniający użytkownika,
w którym xdm przechowuje klucze odczytywane
przez klientów
☛
Plik xdm-config
☛/usr/X11/xdm/xdm-config
☛DisplayManager.servers: /usr/X11R6/lib/X11/xdm/Xservers
DisplayManager.errorLogFile: /var/log/xdm/xdm-erros
DisplayManager*resources: /etc/X11/xdm/Xresources
DisplayManager.accessFile: /etc/X11/xdm/Xaccess
DisplayManager*startup: /usr/X11R6/lib/X11/xdm/Xstartup
DisplayManager*session: /etc/X11/xdm/Xsession
DisplayManager.pidFile: /var/run/xdm-pid
DisplayManager._0.authorize: true
DisplayManager*authorize:
false
☛
Xresources - cechy aplikacji
☛/usr/X11/xdm/Xresources
☛ XConsole.text.geometry:
480x130
XConsole.verbose:
true
XConsole*iconic:
true
XConsole*font:
fixed
Chooser*geometry:
700x500+300+200
Chooser*allowShellResize:
false
Chooser*viewport.forceBars: true
Chooser*label.font:
*-new century schoolbook-bold-i-normal-*-240-*
Chooser*label.label:
XDMCP Host Menu from CLIENTHOST
Chooser*list.font:
-*-*-medium-r-normal-*-*-230-*-*-c-*iso8859-1
Chooser*Command.font:
*-new century schoolbook-bold-rnormal-*-180-*
☛
Xaccess - uprawnienia dostępu
☛/etc/X11/xdm/Xaccess
☛!lab73 # zabronione zapytania w trybie direct/broadcast
#
lab78.domlab78.studmat.uni.torun.pl #dozwolone
#
*.mat.uni.torun.pl NOBROADCAST # tylko direct
#
lab78 dummy # zabroniony tryb indirect
#
lab81 lab85 # lab81 musi zapytać lab85
# menu, które widzi każdy terminal
*
CHOOSER leon-2 anna ultra60 jan
#
Xsessions -skrypt startowy
☛/etc/X11/xdm/Xsession
☛ # run all system xinitrc shell scripts.
for i in /etc/X11/xinit/xinitrc.d/* ; do
if [ -x "$i" ];
. "$i”
fi
done
# now, we see if xdm/gdm/kdm has asked for a specific environment
case $# in
1)
case $1 in
failsafe)
exec xterm -geometry 80x24-0-0
;;
gnome)
exec gnome-session
;;
kde|kde1|kde2)
exec /usr/share/apps/switchdesk/Xclients.kde
;;
Xsessions -skrypt startowy
(c.d)
☛/etc/X11/xdm/Xsession (c.d.)
☛
twm)
# fall back to twm
exec /usr/share/apps/switchdesk/Xclients.twm
;;
esac
esac
# otherwise, take default action
if [ -x "$HOME/.xsession" ]; then
exec "$HOME/.xsession”
elif [ -x "$HOME/.Xclients" ]; then
exec "$HOME/.Xclients”
elif [ -x /etc/X11/xinit/Xclients ]; then
exec /etc/X11/xinit/Xclients
else
# should never get here; failsafe fallback
exec xsm
fi
XDM - zasady działania
☛Wysłanie zapytania XDCP z Win95 lub Unixa
☛Serwer XDM sprawdza plik konfiguracyjny
Xaccess i odpowiada, ignoruje zapytanie lu
kieruje je do innego serwera
☛Wysyłający zapytanie dostaje listę hostów do
wyboru (menu)
☛Użytkownik loguje się na jeden z nich
☛XDM uruchamia skrypt Xsession (wspólny) oraz
.xsession (użytkownika)
☛Sesja kończy się: skrypt kończy działanie,logout
lub xdm dostaje sygnał zakończenia
GDM - przykład (RedHat)
☛Komputer A
☛/etc/X11/gdm/gdm.conf
☛sekcja [xdmcp]
☛Enable = true
☛uruchomienie gdm
☛/etc/inittab
☛id:5:initdefault:
☛Komputer B
☛graficzne okno logowania na komputer A
☛X -query A
☛jeśli komputer A oferuje ‘chooser’ to można wybrać
☛X -indirect A
☛
VNC Serwer
☛VNC (ang. Virtual Network Computing ) sieciowy
system graficzny klient-serwer oparty o protokół
RFB (remote frame buffer)
☛www.uk.research.att.com/archive/vnc/
☛vnc_3_3_3r9_x86_win32.zip
☛vnc_3_3_3r2_unixsrc.tgz
☛vnc-latest_doc.zip
☛Cechy
☛serwer przechowuje aktualny desktop
☛mały (150kB klient na W9x)
☛niezależny od platformy (PC->Linux)
☛darmowy (licencja GNU)
VNC Serwer (c.d.)
☛Składniki
☛vncviewer - klient
☛Xvnc - serwer VNC oraz X-ów
☛vncserver - skrypt w Perlu
☛vncpasswd - program do zmiany hasła
☛kompilacja i instalacja na Linuxie
☛xmkmf
☛make World
☛cd Xvnc
☛make World
☛cd ..
☛./vncinstall /usr/local/bin
VNC Serwer (c.d.)
☛Zasada działania
☛vncviewer<--VNC-->Xvnc<--X-->Aplikacja X
☛Inicjalizacja serwera
☛vncserver
☛You will require a password to access your desktops.
☛Password: top-secret
☛Verify: top-secret
☛New `X` desktop is lab73:1
☛Creating default startup setup.....
☛
VNC Serwer (c.d.)
☛Startowanie/stopowanie
☛Linux <host>
☛vncserver
☛ tworzy plik ./vnc/xstartup
☛ zwraca numer <display>
☛Uruchomianie klienta
☛Programy->Vnc->VNCviewer
☛ VNC: <host>:<display>
☛ Session password: top-secret
☛vncserver -kill :<display>
☛Pokaz działania z W98 na W2K
Citrix
☛Citrix Metframe XP pozwala na uzyskanie pulpitu
W2K na dowolnym komputerze w sieci
☛Architektura Server-based Computing
☛100% aplikacji wykonuje się na serwerze
☛Independent Computing Architecture i MultiWin (MS
Terminal Server)
☛Korzyści
☛lepsze zarządzanie
☛szybszy dostęp do aplikacji
☛większa wydajność i bezpieczeństwo (SSL, 128b)
☛obniżenie kosztów utrzymania systemu
☛darmowy klient na Linuxa
Rdesktop
☛rdesktop - klient typu open source dla WNT/2K
Terminal Services działający w oparciu o
protokół RDP (ang. Remote Desktop Protocol)
☛www.rdesktop.org
☛Zastosowanie
☛Serwer: W2K Server
☛Klient: {Linux | Cygwin}+XFree86
☛Efekt: pulpit W2K na {Linuxie | Cygwinie}
☛Pokaz działania
Linux - Literatura
☛O. Kirch, T. Dawson, Linux - podręcznik
administratora sieci, RM, Warszawa, 2000
☛ftp.icm.edu.pl/pub/Linux/sunsite/docs/LDP/nag2.pdf
☛Eckstein R., Collier-Brown D., Kelly P., - Samba,
Oficyna Wydawnicza Read Me, Warszawa, 2000
☛C. Hunt - Serwery sieciowe Linuksa, Mikom,
Warszawa, 2000
☛www.24sevenbooks.com/linux.html
☛Welsh M., Dalheimer M.K., Kaufman L., LINUX,
Wydawnictwo RM, Warszawa, 2000
☛Petersen R., LINUX, Wydawnictwo RM, 2000
Podsumowanie (1)
☛Systemy wydruku CUPS i LPRng doskonale
nadają się w dużych instalacjach, bowiem są
nowoczesne, bezpieczne, efektywne, skalowalne
oraz działają pod systemem Linux
☛Samba w połączeniu z LPRng daje mozliwość
łatwego i bezpiecznego dostępu do drukarek z
komputerów działających w sieci Microsoft
☛Mars pozwala na łatwe drukowanie w systemie
Linux z komputerów działających w sieciach
NetWare
☛
Podsumowanie (2)
☛X Window System jest potężnym narzędziem
graficznym dostępnym w systemie Linux
☛X Window jest praktycznie standardem dla
uniksowych systemów operacyjnych
☛X Window pozwala na dystrubucje usług
graficznych w sieciach komputerowych
☛System Linux wyposażony w system XFree86
może dostarczać interfejs graficzny na
bezdyskowych komputerach (X terminale)
☛Cygwin pod Windows może być serwerem
grafiki oraz druku