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