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 Config Dokument wyjściowy SPOOL lokalny Serwer zdalny filtr Drukarka zdalna SPOOL zdalny Config 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 -Plp@158.75.12.73 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 config CUPS API 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-iso8859-1*-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